Dear all,

Please reply to [EMAIL PROTECTED]

"Ondrej Certik" <[EMAIL PROTECTED]> writes:

> >       2
> >     3x  + 2x + 18
> >     -------------
> >           6
> >                             Type: Fraction Polynomial Integer

> The above expressions can be assembled just from these 4 types (or classes in
> SymPy): Add, Mul, Pow, Integer
> 
> what is the advantage to introduce more classes, like Polynomial Fraction
> Integer or Fraction Polynomial Integer?

You get a normal form for free, keeping a lot of flexibility. Apart from that,
it is not correct that we introduce a class "Fraction Polynomial Integer". We
introduce a function "Fraction", a function "Polynomial" and a function
"Integer".

A normal form for "expressions" composed with Add, Mul, Pow, Integer does not
exist, if I am not mistaken. Using types, you can very easily restrict
"attention" to classes where normal forms do exist.

Maybe polynomials are a bad example, since they are so well known. I propose
another example: Algebraic Differential Equations. Although they do not allow a
normal form, it seems. But you can still test for zero.

It would not take so much time to implement a domain that deals with such
functions. And, I guess, in SymPy, you would not be able to distinguish an ADE
from any other "expression", because in SymPy, I guess, objects are not typed.

Another example, again: how would you multiply symmetric functions in SymPy? Or
Maple or Mathematica, if you prefer.

> Because having the expression in the form of the 4 basic classes (Add, Mul,
> Pow, Integer), everything else can be easily inferred from this.

I should add: it is indeed useful to have such a representation, too. (called:
ExpressionTree). Many things are easier to do with ExpressionTrees. But even
better is to have both, as we do in Axiom/Aldor.

Martin



_______________________________________________
Axiom-math mailing list
[email protected]
http://lists.nongnu.org/mailman/listinfo/axiom-math

Reply via email to