a Groebner basis
/ GRUHB-ner /
Solving a single polynomial equation is hard enough; solving a whole system of them in several variables — like x^2 + y^2 = 1 together with x = y — feels far worse. A Groebner basis is the symbolic master key for exactly this. It rewrites a messy system of polynomial equations into an equivalent, beautifully structured system from which the solutions can be read off almost mechanically. It is to multivariate polynomial systems what Gaussian elimination is to linear systems.
Some setup: a finite set of polynomials generates an 'ideal' — the collection of all polynomial combinations of them, which captures everything those equations jointly imply. Many different sets of polynomials can generate the same ideal, and most are unhelpfully tangled. A Groebner basis is a special generating set for the ideal (defined relative to a chosen ordering of the monomials) with a magic property: dividing any polynomial by the basis gives a remainder of zero exactly when that polynomial belongs to the ideal — so it cleanly answers the ideal-membership question. With the right monomial ordering (lexicographic), the basis comes out 'triangularized': one equation in the last variable alone, the next adding one variable, and so on — so you solve one variable, back-substitute, and unwind the whole system, exactly as you do with a triangular linear system.
Groebner bases are the workhorse for solving polynomial systems exactly, eliminating variables, proving geometric theorems, and testing ideal membership — they appear in robotics (kinematics), cryptography, coding theory, and computational geometry. The honest caveat is severe and unavoidable: computing a Groebner basis can be astronomically expensive. In the worst case the cost and the size of the output are doubly exponential in the number of variables, the most spectacular instance of expression swell in all of computer algebra. They are extraordinarily powerful in principle and routinely intractable in practice on large systems.
For the system x^2 + y^2 = 1 and x = y, a Groebner basis with x ordered above y produces the triangular pair {x - y, 2y^2 - 1}. The second equation involves only y, giving y = +-1/sqrt(2); back-substitute x = y to get the two solution points. The basis did the elimination for you.
A lexicographic Groebner basis triangularizes the system — solve, then back-substitute.
Groebner-basis computation has doubly-exponential worst-case complexity, so it can be hopelessly slow even on small-looking systems, and the chosen monomial ordering hugely affects the cost. It is a powerful exact tool, not a fast one.