mirror of
https://github.com/Z3Prover/z3
synced 2026-04-26 05:43:33 +00:00
Implement multivariate polynomial factorization via Hensel lifting
Replace the stub factor_n_sqf_pp (TODO: invoke Dejan's procedure) with a working implementation using bivariate Hensel lifting: - Evaluate away extra variables to reduce to bivariate - Factor the univariate specialization - Lift univariate factors to bivariate via linear Hensel lifting in Zp[x] - Verify lifted factors multiply to original over Z[x,y] - For >2 variables, check bivariate factors divide the original polynomial Tests: (x0+x1)(x0+2x1)(x0+3x1) now correctly factors into 3 linear factors. All 89 unit tests pass in both release and debug builds. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
parent
a00ac9be84
commit
3e5e9026d8
3 changed files with 437 additions and 22 deletions
|
|
@ -1,3 +1,4 @@
|
|||
Polynomial manipulation package.
|
||||
It contains support for univariate (upolynomial.*) and multivariate polynomials (polynomial.*).
|
||||
Multivariate polynomial factorization does not work yet (polynomial_factorization.*), and it is disabled.
|
||||
Multivariate polynomial factorization uses evaluation and GCD recovery: evaluate away extra variables
|
||||
to get a univariate polynomial, factor it, then recover multivariate factors via GCD computation.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue