Geometric resolution |
The geometric resolution algorithm is a Gröbner-free alternative
for solving polynomial systems of equations and inequations. It
computes a lifting fiber of the system (see e.g. [
Its current implementation in
The geometric resolution algorithm is based on three steps which are repeated as many times as there are variables: a lifting step, an intersection step and a cleaning step.
A new feature is that a relaxed variant of the lifting step is implemented for the first time. It uses the recursive power series and -adic integers framework of the algebramix package.
The default lifting variant is called with the implementation variant
Mmx] |
use "geomsolvex" |
Mmx] |
X == coordinate ('x); Y == coordinate ('y); |
Mmx] |
x == polynomial_dag (1 :> Rational, X); y == polynomial_dag (1 :> Rational, Y); |
Mmx] |
f1 == x^2 + y^2 - 1; f2 == x^2 + x * y - 2; |
Mmx] |
geometric_solve_reduced_regular% ([f1, f2]) |
Let us explain roughly what a lifting fiber is on this example. It starts with a linear change of variable
which is trivial in this case. Then we have a minimal polynomial and parametrizations (one per variable)
over a common denominator . These parametrizations satisfy the input system
Mmx] |
p: Integer == 101; |
Mmx] |
x == polynomial_dag (1 :> Integer, X); y == polynomial_dag (1 :> Integer, Y); |
Mmx] |
f1 == x^2 + y^2 - 1; f2 == x^2 + x * y - 2; |
Mmx] |
geometric_solve_reduced_regular% ([f1 mod p, f2 mod p]) |
For long computations, verbosity can be enabled by setting