axiom-developer
[Top][All Lists]

RE: [Axiom-developer] about Expression Integer

 From: Bill Page Subject: RE: [Axiom-developer] about Expression Integer Date: Thu, 23 Feb 2006 11:05:03 -0500

Martin,

On February 23, 2006 6:01 AM you wrote:
> ...
> Bill Page wrote:
> > (1) -> (sin x + y*cos x + y^2* tan x)\$UP(x,EXPR INT)
> >
> >          2
> >    (1)  y tan(x) + sin(x) + y cos(x)
> >    Type: UnivariatePolynomial(x,Expression Integer)
> >
> > (2) -> degree %
> >
> >    (2)  0
> >    Type: NonNegativeInteger
>
> Yes, but the x of UP(x, EXPR INT) is a different x than the
> x in sin(x). They only happen to have the same name.

This is the core of our disagreement. I think you are wrong.
In Axiom it does not make sense to say they are "different but
have the same name". (This is possible in some other computer
algegra systems such as Maple and maybe MuPad.) In AxioM 'x'
is a symbol - at the deepest level it is still just a symbol
in Lisp. It can not have a different "name". This symbol can
be used in different ways but in the end, it is the **same**
symbol.

If you want, we could look at the Axiom source code itself to
verify that there is only one 'x' involved. You would see for
example that there is no call to Lisp to create any new
symbols. That might take some time.

But consider this example:

(1) -> P:=(x+1/x)\$DMP([x],EXPR INT)

1
(1)  x + -
x
Type: DistributedMultivariatePolynomial([x],Expression Integer)

(2) -> (variables(P)::List Symbol=variables(coefficient(P,0)))::Boolean

(2)  true
Type: Boolean

--------

How else could you explain this result? 'variables(P)' is the
list of polynomial variables. 'variables(coefficient(P,0))' is
the list of variables occurring in the term with degree 0.

Regards,
Bill Page.

reply via email to