simplification based on assumptions



On 8/1/06, none none <lots.of.mailing.lists at gmail.com> wrote:

> I was just hoping I could get away with using maxima instead of paying
> for mathematica... guess not.

You might see what MuPad can do for you. I tried the trial version
a while ago and it seemed pretty capable. If you buy something,
let us know what conclusion you come to.

About Maxima, the weakness of the assume system is a major handicap.
I see two general areas we need to work on.

(1) Strengthening the algebraic part of the assume system.
    Essentially we need to expand the set of propositions that
    Maxima knows how to prove. That might imply cutting
    out the current assume system and replacing it with something
    designed to be stronger; I doubt we can make much progress
    by attempting to fix bugs in the current implementation
    (but I'll be happy if someone can prove me wrong about that).

    The cylindrical algebraic decomposition has been mentioned
    in this context before. I don't know much about that.
    Maybe a goal-driven theorem prover would be useful here.
    Dunno much about that either.

(2) Unification of various kinds of assumptions or assertions.
    At present, assume and declare are pretty much separate.
    Also, there is no way to make assertions of the form
    "x is an element of set S" which is a widely-used kind of
    assertion in mathematics.

    Just to start the ball rolling, I think (having given this some thought)
    that all assertions ought be be expressions of the form
    assume(p(x)) where p is a predicate and x is a variable or
    list of variables. So assume(x > 0) would continue to work.
    But to declare x an integer would be assume(integerp(x))
    instead of declare(x, integer). Also assume(x in S) would
    be "x is an element of S". It may well be that these would
    all be treated differently internally, but from the user's pov
    there would only be one way to assert a proposition.


As ever, just my $0.02.

Robert Dodier