Небольшое HOWTO...
Возьмем для примера уравнение

. В Maple в пакете
Groebner есть функция
HilbertDimension(), которая позволяет получить размерность многообразия. Наберем в Maple следующие команды:
Цитата:
> with(Groebner)
>
![$J := [x^2+y^2+z^2-1]$ $J := [x^2+y^2+z^2-1]$](https://dxdy-04.korotkov.co.uk/f/f/6/6/f669613281bb11a0b49322161cf3a88282.png)
//(
здесь J - идеал, порождаемый 
> HilbertDimension(J)
HilbertDimension(J) выдаст 2. Теперь добавим к исходному уравнению еще одно:

Наберем в Maple:
Цитата:
> with(Groebner)
>
![$J := [x^2+y^2+z^2-1, x]$ $J := [x^2+y^2+z^2-1, x]$](https://dxdy-04.korotkov.co.uk/f/b/b/7/bb7f9aaa818fd8435aefb4e5c32243e482.png)
> HilbertDimension(J)
HilbertDimension(J) выдаст 1.
И наконец для системы

HilbertDimension(J) выдаст 0, что соответствует конечному множеству корней. Для этих же целей можно использовать функцию
IsZeroDimensional(), которая в случае многообразия размерности 0 выдаст "true" (и "false" в противном случае).
Теперь для последней системы/идеала получим базис Гребнера в лексикографическом(!) порядке (используем функцию
Basis()). Наберем в Maple:
Цитата:
> with(Groebner)
>
![$J := [x^2+y^2+z^2-1, x, z-y]$ $J := [x^2+y^2+z^2-1, x, z-y]$](https://dxdy-01.korotkov.co.uk/f/0/6/f/06f1ed88847878804df396339e10f3a482.png)
> Basis(J, plex(x, y, z)) //(plex(x, y, z) - указывает на использование лексикографического порядка)
Получим:
![$[2 z^2-1, -z+y, x]$ $[2 z^2-1, -z+y, x]$](https://dxdy-04.korotkov.co.uk/f/b/6/d/b6db6b62eec16343918ebe70318f891e82.png)
. Т.е. по сути мы пришли к эквивалентной
треугольной системе полиномиальных уравнений:

Базис Гребнера, вычисляемый в лексикографическом(!) порядке, обладает уникальным свойством - он приводит исходную систему полиномиальных уравнений к треугольному виду! Если размерность многообразия равна нулю, то первым уравнением в треугольной системе будет полиномиальное уравнение (возможно высокой степени) от одной переменной.