Fourier elimination



Hi Barton,

Thanks for working on the Fourier elimination code.
It's OK by me if you want to commit it on the release branch if you have
not done so already, or, if you don't want to deal with cvs, someone else
could do it too.

Just a minor comment about the format of the result.
Maybe we already had a discussion about this.

>   (%i17) fourier_elim(abs(x) + abs(x/2) + abs(x / 3) # 1,[x]);
>   (%o17) [x = 0] or [0 < x,x < 6/11] or [-6/11 < x,x < 0] or [6/11 < x] or
> [x < -6/11]

I guess I'd like to see the results represented in a more obvious way.
Instead of lists of conditions [a, b] how about explicit conjunctions
a and b ? Maxima makes it easy to represent different kinds of
expressions, let's make use of that. E.g. the above would be

x = 0 or 0 < x and x < 6/11 or -6/11 < x and x < 0 or 6/11 < x or x < -6/11

or stuff like foo < x and x < bar could be turned into interval objects,

x = 0 or x in open_interval (0, 6/11) or ...

Or maybe the result should be a set?

{x = 0, x in open_interval (0, 6/11), x in open_interval (...), ...}

Just some ideas. Thanks again for this contribution.

Robert