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 results #
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
References #
- [Wen-Tsun Wu, Mathematics Mechanization][wen2000mathematics]
The result of a pseudo-division of g by f,
satisfying the equation init(f) ^ s * g = q * f + r.
- exponent : ℕ
The power
s. - quotient : α
The quotient
q. - remainder : α
The remainder
r.
Instances For
The result of pseudo-dividing g by a sequence of polynomials (a triangular set)
satisfying the equation (∏ i, (S i).initial ^ es[i]) * g = (∑ i, qs[i] * S i) + r.
The powers of the initials
es.- quotients : List α
The quotients
qs. - remainder : α
The remainder
r.
Instances For
The recursive algorithm of pseudo-division
Equations
- One or more equations did not get rendered due to their size.
Instances For
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
- g.pseudoOf i f = if h : MvPolynomial.degreeOf i f = 0 then { exponent := 1, quotient := g, remainder := 0 } else MvPolynomial.pseudoOf.go i f 0 0 g h
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 : MvPolynomial σ 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 (MvPolynomial σ 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 max_vars(f).
Equations
- One or more equations did not get rendered due to their size.
Instances For
The recursive algorithm of successive pseudo-division by a triangular set
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
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