On 16 Jan 2010, at 01:40, Michael Chen wrote:

The input I have is linear equation like:

2 * x + ( x - y ) = x + 1

And I would like to get at end

2 * x - y = 1

I studied the calculator example, and be able to build ast tree.
however  I have no way to reduce it. Please give me an example or
link. Thanks.

You need methods used in symbolic programming (like Maple), theorem provers, and CLP like:
  http://en.wikipedia.org/wiki/CLP(R)
  http://en.wikipedia.org/wiki/Constraint_logic_programming

One can solve polynomial equations using Buchberger's Groebner Basis Algorithm. Given an ideal (p_1, ..., p_k) it produces a new set of generators relative a monomial order on diagonalized form. In the case of one variable, it reduces to the Euclidean algorithm computing the greatest common denominator. For a set of equations, just write them as p_1 = 0, ..., p_k = 0, and apply it to the ideal (p_1, ..., p_k).

If you want to just solve linear equations, you can use just the ordinary matrix solution method: write matrices A X = B, and solve it. - Check for computationally efficient methods doing this.

When doing it the CLP way, one integrates this algorithm into the unification process that i Prolog is used to unify the heads of the clauses. This produces a very elegant way to solve them, as you can see on that link above, but is somewhat limited if one wants to do more general things.

  Hans




_______________________________________________
help-bison@gnu.org http://lists.gnu.org/mailman/listinfo/help-bison

Reply via email to