The factor function is a little bit silly.



 

> -----Original Message-----
> From: maxima-bounces at math.utexas.edu 
> [mailto:maxima-bounces at math.utexas.edu] On Behalf Of J.C. Pizarro
> Sent: Monday, April 07, 2008 4:45 AM
> To: maxima at math.utexas.edu
> Subject: The factor function is a little bit silly.
> 
> I've 2 issues here:
> 
> FIRST: Halting problem in TM
> ------
> The below symbolic example doesn't terminate after many minutes in
> maxima-5.14.0 although the human solution is f(x)-g(x)-h(x):
> 
> factor(expand((f(x)-g(x)-h(x))^500));
> 
> To fix this problem in the future: better artificial 
> sustitution in the
> solving of factor or intelligent lazy computation as
> factor(expand(Alpha)) => Alpha.

There are many interesting issues that could be characterized as making
Maxima more intelligent.
This does not look like one. It might be intelligent to say "this is taking
a long time. do you want
to continue?"

For a starter, as Alex pointed out,
 factor(expand(Alpha))  is not generally exactly the same as Alpha.

Secondly, if you write f(g(alpha)),  that command means apply g to alpha,
then apply f to the result.

If f and g are not programs, or if they are "quoted",  you could define
simplifications so that
f.g  is the identity ...  that is,   f(g(x)) = x.

But factor and expand are programs.

> 
> SECOND: Non-deterministic Memoization
> -------
>..... 
> I think that the maxima system uses memoization that remember 
> some internal
> answers of previous computations but it's non-deterministic.

No, there is nothing non-deterministic about Maxima, even its random
function.