I am just curious if grobner basis methods (e.g.
http://math.ucsd.edu/~ncalg/StrategyPaper/node60.html,
http://en.wikipedia.org/wiki/Gröbner_basis#Solving_equations) would be
a useful method for solving some of the non-linear constraints
(specifically, polynomial system of equations) found in ATS, in addition to
the currently used Fourier Motzkin elimination method. These algorithms
are analogous to Quine–McCluskey, but for a more class of algebras than the
boolean algebra. At the least, it should give an easy method to test to see
if the constraints as given are not solvable (i.e. the ideal of constraints
contains 1, that is, and equation asserting 1==0). Perhaps a printout of
constraints could help show the programmer any remaining relations that
must be proven.
Note: I’m not even to the point where I am familiar with the proof solving
capabilities in ATS, though I have read the chapters in the book (I really
need practice for it to sink in), so I am not very familiar with what kind
of errors one will always get during failed proofs.
There are some quite stable, fast, and open source packages for working
easily with these algebraic tools like Macualay2. I believe, though it is
compiled with C, it has its own internal “type-safe” language (don’t know
the details) that much of it is written in - not unlike ATS in this small
regard. However, iirc, that may be just the language interpreter, etc. The
core algorithms may still be written in C or C++. The point I’m trying to
make is that despite this, there are likely not too many bugs in the core
algorithms due to careful planning and long testing.
I believe the methods are not currently well-equipped to deal with
inequalities, though it seems like there may be some ongoing interest in
the area. I confess I’m not an expert in these methods, but I had an
applied interest in them in the past, and wouldn’t mind looking in to them
again someday (if potentially useful). So, given the current lack of
support with inequalities, I suppose it is possible that the payoff may not
be worth the effort.