Disclaimer: I think this may have more or less been covered in the earlier mega-discussion on symbolic computation. Also the whole reason we use maxima is to avoid dealing with the problems I'm describing but I still would like to think about it a bit and am curious if anyone has any insight.
I have been thinking a lot about symbolic algebra. I was thinking about what would be required to do symbolic manipulations without using maxima. If we represent symbolic expressions as trees of operations and operands then it seems what is needed is some sort of ability to define rules to transform trees. I will represent trees as lists in lisp notation so [+ a b] is the tree a / / + \ \ b Consider a + b +a, this will be stored as [+ a [+ b a]] (or maybe [+ [+a b] a] ) Obviously this should become 2*a + b If we could define rules that [+ a b] = [+ b a] [+ [+ a b] c] = [+ a [+ b c]] [* 1 a] = a [+ a [* c a ]] = [* (c+1) c] then we could make this simplification, however even in this simple case, I don't really know how one would automatically do this simplification. Perhaps one could make a rule that multiplication is simpler than addition, squaring is simpler than multiplication, etc and rank the expressions by their complexity under this ranking and search for simpler expressions, i.e. since we would find a way to replace an addition by a multiplication, 2*a+b is a simpler expression. We would also need pattern matching capabilities to deal with sub- expressions. i.e. we should be able to infer that [+ a [+ b c] ] = [+ [+ b c] a] and matching [+ a [+ b c] ] to an abstract expresion of the form of the first rule above. Does anybody know how this works in general. Josh --~--~---------~--~----~------------~-------~--~----~ To post to this group, send email to sage-devel@googlegroups.com To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/sage-devel URLs: http://sage.scipy.org/sage/ and http://modular.math.washington.edu/sage/ -~----------~----~----~----~------~----~------~--~---