Yrogirg wrote:
> 
> I failed to find the answer in axiom books (at least in first few). It
> is only said that "The type Expression Integer (abbreviated EXPR INT)
> is used to represent general symbolic expressions in Axiom".
> 
> What is the underlying theory (I guess the one that underlies all
> CAS's)?

Basic result is theorem of Richardson which says that what we would
like to have is impossible (problem of deciding if an expression
is zero is undecidable).  Generalities are niecely described
in Davenport, Siret, Tournier book (look for canonical form):

http://staff.bath.ac.uk/masjhd/masternew.pdf

Core problem is that there is no general algorithm to decide
if two expression represent the same value (in particular if
an expression is 0).  This means that we have to allow
different representations and computations may give wrong
answer (if there is division by unrecognized 0).  Instead
of giving well-defined unique answer there are "simplifications"
which make best effort to get "simplest" form, but no warranty
of success.

Details of representaion used and empleyed "simplifications" vary
from system to system.  FriCAS expression is a parametric domain.
If nothing interesting is known about the parameter, then FriCAS
represents expression essentially as trees and does almost no
simplifications.  If parameter is an integral domain then FriCAS
represents expressions as rational functions of "kernels" -- the
idea is that expressions form a field and kernels give generators
of that field over base ring.  More precisely, some kernels are
transendental and give transcenence basis, some are algebraic.
Operations form Expression are careful to simplify the result
using known algebraic relations.  If all realtions are known
to FriCAS than results are sound (no risk of division by 0).

If you do not go into details it is very similar to what other
systems do, but details differ.  AFAIK officialy Mathematica
uses pure tree representation for expressions but almost
surely converts to something like rational functions of kernels
for computations.  Macsyma/Maxima give user a choice between
tree representation and rational function representation, but
sometimes automatically switches representations.

> Is there a technique to avoid this general type? Or why it
> should not be avoided?

If you have relatively general expressions and Expression
is doing (or can be made to do) what you need then use
Expression.  If you have something very specialised or
quite different needs that use something different.
I wrote "can be made to do" above because for example
AlgebraicNumber is represented by Expression(Integer)
but disallows transcendentals and adds extra simplification.

There are no special reasons to avoid Expression. 
Basically, if for your problem you have better algorithm then
algorithms implemented in Expression then you should create
new domain and use your better algorithm.  If there is
more specialised domain doing what you need you probably
should use this domain.  Otherwise, if you need what
expression is doing than use it.

-- 
                              Waldek Hebisch
[email protected] 

-- 
You received this message because you are subscribed to the Google Groups 
"FriCAS - computer algebra system" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/fricas-devel?hl=en.

Reply via email to