Subject: Is there a name for the way Maxima does algebra?
From: Richard Fateman
Date: Thu, 28 Sep 2006 07:31:20 -0700
> -----Original Message-----
> From: maxima-bounces at math.utexas.edu
> [mailto:maxima-bounces at math.utexas.edu] On Behalf Of Chris Sangwin
> Sent: Thursday, September 28, 2006 3:55 AM
> To: Robert Dodier
> Cc: Maxima list
> Subject: Re: [Maxima] Is there a name for the way Maxima does algebra?
>
>
> Robert,
>
> This has prompted a question in my mind: can we draw a clear
> distinction between "assumptions" and "theorems"? For
> example, we do need to make basic assumptions to provide a
> background against which to work. Eg,
>
> solve(ex,z);
>
> might assume z is complex or real.
More fundamentally (at least from the programming standpoint),
simplifications like 0*x --> 0 must assume that x is not infinite.
>
> When we are talking about what algebra is, these assumptions
> go back to things which are "obvious", eg * is commutative.
>
> This reminds me of the problems I was having with very basic
> algebraic manipulations in Maxima, which simp:false helped to cure.
If simp:false cures your problems, unless you are also using rat() or
ratsimp(), you are using very little of what is in Maxima. Depending on what
you are trying to do, you might have enough mechanism in a theorem prover
like ACL2.
>
> It would be very helpful if all assumptions could be explicit
> and controlled. For me, I wanted to establish if two
> expressions were "the same". Here I mean up to associativity
> and commutativity of + and *, but no distribution, and no
> functional operations,
>
> eg 1+2=2+1 <> 3. (This looks strange: sorry)
You can do this with rat(), pretty much.
>
> For the most part users will ignore them, and carry on using
> the algebra they know and love. For others this flexibility
> will be absolutely key.
Unfortunately for those who do not need them, the associated assumptions and
conditions may be a heavy burden since they can grow exponentially, even if
the expressions themselves are small. Consider
"0 assuming x is not infinite" vs "0". Do arithmetic on objects of this
kind. One way out is to have a very clever simplifier on the conjunction of
assumptions, so they don't grow as fast. This is hard. I do not know of
anyone who has succeeded. Mathematica tries to do some of this
superficially in the results of Reduce[], and the output from definite
integration. I tried to do this with the output from Tilu, using words like
If, Providing, and Case. (Tilu and its documentation is online).
>
> I would be very interested in a vocabulary with which we
> could talk more meaningfully about these issues.
>
> Chris
>
>
> On Wed, 27 Sep 2006, Robert Dodier wrote:
>
> > Hello,
> >
> > I think a fair characterization is that Maxima implements a "little
> > boxes" approach to algebra:
> > variable = box with a label on it, value = content of box, axiom or
> > theorem = license to replace some boxes.
> > That seems pretty naive (which is OK by me; I imagine
> that's how I do
> > algebra too). Is there a name for this approach?
> > What are the names of some other general methods?
> > If that's not how Maxima does algebra, what's a better
> > characterization?
> >
> > Thanks for any light you can shed on this question.
> >
> > Robert Dodier
> > _______________________________________________
> > Maxima mailing list
> > Maxima at math.utexas.edu
> > http://www.math.utexas.edu/mailman/listinfo/maxima
> >
> _______________________________________________
> Maxima mailing list
> Maxima at math.utexas.edu
> http://www.math.utexas.edu/mailman/listinfo/maxima
>