simplification based on assumptions



The declare()  syntax was intended for use by the compiler. That is,
declare(x,float) would affect instruction generation.
The assume() syntax was supposed to be used to put in information used by
programs like "is()".  

The distinction leads to confusion, and perhaps the two ideas can be merged.
One important issue is the scope of assumptions or declarations.  If you say
assume(x>5), does that apply to the x in   f(x):=cos(x) ??

The assume() system was written by Michael Genesereth, now a professor at
Stanford. He did not put in comments because that would just encourage
people who didn't understand it, to make changes.  That was 35 years ago,
though.

Regards
RJF

> -----Original Message-----
> From: maxima-admin at math.utexas.edu [mailto:maxima-admin at math.utexas.edu]
> On Behalf Of Robert Dodier
> Sent: Tuesday, August 01, 2006 11:30 AM
> To: none none
> Cc: Maxima at math.utexas.edu
> Subject: Re: [Maxima] 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
> 
> _______________________________________________
> Maxima mailing list
> Maxima at math.utexas.edu
> http://www.math.utexas.edu/mailman/listinfo/maxima