Documentation

Mathlib.RingTheory.MvPolynomial.Groebner

Division algorithm with respect to monomial orders #

We provide a division algorithm with respect to monomial orders in polynomial rings. Let R be a commutative ring, σ a type of indeterminates and m : MonomialOrder σ a monomial ordering on σ →₀ ℕ.

Consider a family of polynomials b : ι → MvPolynomial σ R with invertible leading coefficients (with respect to m) : we assume hb : ∀ i, IsUnit (m.lCoeff (b i))).

The proof is done by induction, using two standard constructions

Reference : [BW93] #

TODO #

noncomputable def MonomialOrder.subLTerm {σ : Type u_1} (m : MonomialOrder σ) {R : Type u_2} [CommRing R] (f : MvPolynomial σ R) :

Delete the leading term in a multivariate polynomial (for some monomial order)

Equations
Instances For
    theorem MonomialOrder.degree_sub_LTerm_le {σ : Type u_1} {m : MonomialOrder σ} {R : Type u_2} [CommRing R] (f : MvPolynomial σ R) :
    m.toSyn (m.degree (m.subLTerm f)) m.toSyn (m.degree f)
    theorem MonomialOrder.degree_sub_LTerm_lt {σ : Type u_1} {m : MonomialOrder σ} {R : Type u_2} [CommRing R] {f : MvPolynomial σ R} (hf : m.degree f 0) :
    m.toSyn (m.degree (m.subLTerm f)) < m.toSyn (m.degree f)
    noncomputable def MonomialOrder.reduce {σ : Type u_1} (m : MonomialOrder σ) {R : Type u_2} [CommRing R] {b : MvPolynomial σ R} (hb : IsUnit (m.lCoeff b)) (f : MvPolynomial σ R) :

    Reduce a polynomial modulo a polynomial with unit leading term (for some monomial order)

    Equations
    Instances For
      theorem MonomialOrder.degree_reduce_lt {σ : Type u_1} {m : MonomialOrder σ} {R : Type u_2} [CommRing R] {f b : MvPolynomial σ R} (hb : IsUnit (m.lCoeff b)) (hbf : m.degree b m.degree f) (hf : m.degree f 0) :
      m.toSyn (m.degree (m.reduce hb f)) < m.toSyn (m.degree f)
      @[irreducible]
      theorem MonomialOrder.div {σ : Type u_1} {m : MonomialOrder σ} {R : Type u_2} [CommRing R] {ι : Type u_3} {b : ιMvPolynomial σ R} (hb : ∀ (i : ι), IsUnit (m.lCoeff (b i))) (f : MvPolynomial σ R) :
      ∃ (g : ι →₀ MvPolynomial σ R) (r : MvPolynomial σ R), f = (Finsupp.linearCombination (MvPolynomial σ R) b) g + r (∀ (i : ι), m.toSyn (m.degree (b i * g i)) m.toSyn (m.degree f)) cr.support, ∀ (i : ι), ¬m.degree (b i) c
      theorem MonomialOrder.div_set {σ : Type u_1} {m : MonomialOrder σ} {R : Type u_2} [CommRing R] {B : Set (MvPolynomial σ R)} (hB : bB, IsUnit (m.lCoeff b)) (f : MvPolynomial σ R) :
      ∃ (g : B →₀ MvPolynomial σ R) (r : MvPolynomial σ R), f = (Finsupp.linearCombination (MvPolynomial σ R) fun (b : B) => b) g + r (∀ (b : B), m.toSyn (m.degree (b * g b)) m.toSyn (m.degree f)) cr.support, bB, ¬m.degree b c