Changes http://wiki.axiom-developer.org/ManipulatingExpressions/diff --
++added: Other Operations The domain FunctionSpace includes the following operations:: isExpt(p,f:Symbol) returns [x, n] if p = x**n and n <> 0 and x = f(a) isExpt(p,op:BasicOperator) returns [x, n] if p = x**n and n <> 0 and x = op(a) isExpt(p) returns [x, n] if p = x**n and n <> 0 isMult(p) returns [n, x] if p = n * x and n <> 0 isPlus(p) returns [m1,...,mn] if p = m1 +...+ mn and n > 1 isPower(p) returns [x, n] if p = x**n and n <> 0 isTimes(p) returns [a1,...,an] if p = a1*...*an and n > 1 If these conditions are not met, then the above operations return "failed". For example, \begin{axiom} isMult(3*x) \end{axiom} but \begin{axiom} isMult(x*y) \end{axiom} In the context of 'Expression Integer', or 'Polynomial Integer' the parameter n must be an Integer. The Symbol 'y' is not an 'Integer'. Not exactly analogously \begin{axiom} isPower(x**y) \end{axiom} whereas \begin{axiom} isPower(x**10) \end{axiom} In the first case the 'Integer' is assume to be 1. We have: \begin{axiom} isTimes(x*y*z) isPlus(x+y+z*y) \end{axiom} Whereas \begin{axiom} isTimes((x+y)*z) \end{axiom} That is because the expression is internally treated as a 'MultivariatePolynomial' like this: \begin{axiom} ((x+y)*z)::MPOLY([x,y,z],INT) \end{axiom} If you say: \begin{axiom} isPlus((x+y)*z) \end{axiom} perhaps the result makes sense? For some of the details of these operations I consulted the actual algebra code at: http://wiki.axiom-developer.org/axiom--test--1/src/algebra/FspaceSpad Click on 'pdf' or 'dvi' to see the documentation. You can also enter expressions like 'isTimes' in the search box on the upper right and see all the places in the algebra where this operation is defined and used. -- forwarded from http://wiki.axiom-developer.org/[EMAIL PROTECTED] _______________________________________________ Axiom-developer mailing list Axiom-developer@nongnu.org http://lists.nongnu.org/mailman/listinfo/axiom-developer