Pseudo-Division #
This file defines pseudo-division of multivariate polynomials, a fundamental operation in the Characteristic Set Method.
Main Definitions #
MvPolynomial.pseudoOf: Pseudo-division ofgbyfwith respect to a variablei(over commutative rings).MvPolynomial.pseudo: General pseudo-division that handles constants and zero (over fields).MvPolynomial.setPseudo: Successive pseudo-division by all polynomials in a triangular set.MvPolynomial.setPseudoRem: Computes only the remainder (more efficient when quotients are not needed).MvPolynomial.isRemainder: A predicate stating thatris a valid remainder ofgbyf, meaningris reduced w.r.t.fandinit(f)^s * g = q * f + rfor somes, q.MvPolynomial.isSetRemainder: A predicate stating thatris a valid remainder ofgby a triangular setS, meaningris reduced w.r.t.Sand satisfies the extended division equation.
Main Theorems #
pseudoOf_equation:init(f) ^ s * g = q * f + rwheredeg(r) < deg(f)pseudoOf_remainder_reducedTo: The remainder is reduced w.r.t. the divisorpseudo_remainder_isRemainder: The remainder satisfies theisRemainderpredicatesetPseudo_remainder_isSetRemainder: The remainder satisfies theisSetRemainderpredicatesetPseudo_remainder_eq_zero_of_mem: Elements ofShave zero remainder when divided byS
Pseudo-division of g by f regarding the variable i.
This algorithm computes q and r such that initᵢ(f) ^ s * g = q * f + r,
where degᵢ(r) < degᵢ(f).
It uses a fuel parameter to guarantee termination.
Equations
- MvPolynomial.pseudoOf i g f = MvPolynomial.pseudoOf.go i f (MvPolynomial.initialOf i f) (MvPolynomial.degreeOf i f) (MvPolynomial.degreeOf i g + 1 - MvPolynomial.degreeOf i f) 0 0 g
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
The fundamental equation of pseudo-division: initᵢ(f) ^ s * g = q * f + r
A remainder r of g by f is a polynomial which is reduced with respect to f and
suffices f.initial ^ s * g = q * f + r for some s : ℕ and q : R[σ].
Equations
Instances For
A remainder r of g by S is a polynomial which is reduced with respect to S and
suffices (∏ i, (S i).initial ^ es[i]) * g = (∑ i, qs[i] * S i) + r
for some es : List ℕ and qs : List R[σ].
Equations
- One or more equations did not get rendered due to their size.
Instances For
General pseudo-division of g by f.
If f is constant, it performs standard division.
If f is non-constant, it performs pseudo-division with respect to mainVariable(f).
Equations
- One or more equations did not get rendered due to their size.
Instances For
Pseudo-divides g successively by elements of S.
Typically, this involves dividing by Sₗ₋₁, then Sₗ₋₂, ..., down to S₀.
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
The remainder of pseudo-dividing g by the set S.
This is computationally simpler than setPseudo if only the remainder is needed.
Equations
- g.setPseudoRem S = List.foldr (fun (p r : MvPolynomial σ R) => (r.pseudo p).remainder) g S.toList