Fourier elimination



On Dec 6, 2007 7:47 PM, Robert Dodier <robert.dodier at gmail.com> wrote:

> Just a minor comment about the format of the result....

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 ?... 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
>

I like the idea of explicit boolean connectives; on the other hand, I find
it obscure that Maxima currently doesn't parenthesize them on output. I
would find the following much clearer and easier to read:

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

          (I'm using x==0 to mean equal(x,0); remember that x=0 is false...)

or even

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

One of the nice things about using and/or is that as our boolean/comparison
simplification improves, fourier_elim would benefit directly from it. In the
above example, it would ideally simplify to (x == 6/11 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 ...


Until we have a functional interval package (you aren't hiding something
from us, are you?), I don't see the point of this.


> Or maybe the result should be a set?
>
> {x = 0, x in open_interval (0, 6/11), x in open_interval (...), ...}
>

Huh? I think you mean something like

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

which we also don't support.

It would certainly be nice to have simplifying set operations and set
constructors in the form of intervals, but since we don't have them, it
doesn't seem like a good idea to produce them as output.

            -s