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.
