Documentation

Mathlib.RingTheory.MvPolynomial.MonomialOrder

Degree and leading coefficient of polynomials with respect to a monomial order #

We consider a type σ of indeterminates and a commutative semiring R and a monomial order m : MonomialOrder σ.

Reference #

[BW93]

def MonomialOrder.degree {σ : Type u_1} (m : MonomialOrder σ) {R : Type u_3} [CommSemiring R] (f : MvPolynomial σ R) :

the degree of a multivariate polynomial with respect to a monomial ordering

Equations
  • m.degree f = m.toSyn.symm (f.support.sup m.toSyn)
Instances For
    def MonomialOrder.lCoeff {σ : Type u_1} (m : MonomialOrder σ) {R : Type u_3} [CommSemiring R] (f : MvPolynomial σ R) :
    R

    the leading coefficient of a multivariate polynomial with respect to a monomial ordering

    Equations
    Instances For
      @[simp]
      theorem MonomialOrder.degree_zero {σ : Type u_1} {m : MonomialOrder σ} {R : Type u_2} [CommSemiring R] :
      m.degree 0 = 0
      @[simp]
      theorem MonomialOrder.lCoeff_zero {σ : Type u_1} {m : MonomialOrder σ} {R : Type u_2} [CommSemiring R] :
      m.lCoeff 0 = 0
      theorem MonomialOrder.degree_monomial_le {σ : Type u_1} {m : MonomialOrder σ} {R : Type u_2} [CommSemiring R] {d : σ →₀ } (c : R) :
      m.toSyn (m.degree ((MvPolynomial.monomial d) c)) m.toSyn d
      theorem MonomialOrder.degree_monomial {σ : Type u_1} {m : MonomialOrder σ} {R : Type u_2} [CommSemiring R] {d : σ →₀ } (c : R) [Decidable (c = 0)] :
      m.degree ((MvPolynomial.monomial d) c) = if c = 0 then 0 else d
      @[simp]
      theorem MonomialOrder.lCoeff_monomial {σ : Type u_1} {m : MonomialOrder σ} {R : Type u_2} [CommSemiring R] {d : σ →₀ } (c : R) :
      m.lCoeff ((MvPolynomial.monomial d) c) = c
      theorem MonomialOrder.degree_le_iff {σ : Type u_1} {m : MonomialOrder σ} {R : Type u_2} [CommSemiring R] {f : MvPolynomial σ R} {d : σ →₀ } :
      m.toSyn (m.degree f) m.toSyn d cf.support, m.toSyn c m.toSyn d
      theorem MonomialOrder.degree_lt_iff {σ : Type u_1} {m : MonomialOrder σ} {R : Type u_2} [CommSemiring R] {f : MvPolynomial σ R} {d : σ →₀ } (hd : m.toSyn 0 < m.toSyn d) :
      m.toSyn (m.degree f) < m.toSyn d cf.support, m.toSyn c < m.toSyn d
      theorem MonomialOrder.le_degree {σ : Type u_1} {m : MonomialOrder σ} {R : Type u_2} [CommSemiring R] {f : MvPolynomial σ R} {d : σ →₀ } (hd : d f.support) :
      m.toSyn d m.toSyn (m.degree f)
      theorem MonomialOrder.coeff_eq_zero_of_lt {σ : Type u_1} {m : MonomialOrder σ} {R : Type u_2} [CommSemiring R] {f : MvPolynomial σ R} {d : σ →₀ } (hd : m.toSyn (m.degree f) < m.toSyn d) :
      theorem MonomialOrder.lCoeff_ne_zero_iff {σ : Type u_1} {m : MonomialOrder σ} {R : Type u_2} [CommSemiring R] {f : MvPolynomial σ R} :
      m.lCoeff f 0 f 0
      @[simp]
      theorem MonomialOrder.lCoeff_eq_zero_iff {σ : Type u_1} {m : MonomialOrder σ} {R : Type u_2} [CommSemiring R] {f : MvPolynomial σ R} :
      m.lCoeff f = 0 f = 0
      theorem MonomialOrder.coeff_degree_ne_zero_iff {σ : Type u_1} {m : MonomialOrder σ} {R : Type u_2} [CommSemiring R] {f : MvPolynomial σ R} :
      MvPolynomial.coeff (m.degree f) f 0 f 0
      @[simp]
      theorem MonomialOrder.coeff_degree_eq_zero_iff {σ : Type u_1} {m : MonomialOrder σ} {R : Type u_2} [CommSemiring R] {f : MvPolynomial σ R} :
      MvPolynomial.coeff (m.degree f) f = 0 f = 0
      theorem MonomialOrder.degree_eq_zero_iff_totalDegree_eq_zero {σ : Type u_1} {m : MonomialOrder σ} {R : Type u_2} [CommSemiring R] {f : MvPolynomial σ R} :
      m.degree f = 0 f.totalDegree = 0
      @[simp]
      theorem MonomialOrder.degree_C {σ : Type u_1} {m : MonomialOrder σ} {R : Type u_2} [CommSemiring R] (r : R) :
      m.degree (MvPolynomial.C r) = 0
      theorem MonomialOrder.degree_add_le {σ : Type u_1} {m : MonomialOrder σ} {R : Type u_2} [CommSemiring R] {f g : MvPolynomial σ R} :
      m.toSyn (m.degree (f + g)) m.toSyn (m.degree f) m.toSyn (m.degree g)
      theorem MonomialOrder.degree_add_of_lt {σ : Type u_1} {m : MonomialOrder σ} {R : Type u_2} [CommSemiring R] {f g : MvPolynomial σ R} (h : m.toSyn (m.degree g) < m.toSyn (m.degree f)) :
      m.degree (f + g) = m.degree f
      theorem MonomialOrder.lCoeff_add_of_lt {σ : Type u_1} {m : MonomialOrder σ} {R : Type u_2} [CommSemiring R] {f g : MvPolynomial σ R} (h : m.toSyn (m.degree g) < m.toSyn (m.degree f)) :
      m.lCoeff (f + g) = m.lCoeff f
      theorem MonomialOrder.degree_add_of_ne {σ : Type u_1} {m : MonomialOrder σ} {R : Type u_2} [CommSemiring R] {f g : MvPolynomial σ R} (h : m.degree f m.degree g) :
      m.toSyn (m.degree (f + g)) = m.toSyn (m.degree f) m.toSyn (m.degree g)
      theorem MonomialOrder.degree_mul_le {σ : Type u_1} {m : MonomialOrder σ} {R : Type u_2} [CommSemiring R] {f g : MvPolynomial σ R} :
      m.toSyn (m.degree (f * g)) m.toSyn (m.degree f + m.degree g)
      theorem MonomialOrder.coeff_mul_of_degree_add {σ : Type u_1} {m : MonomialOrder σ} {R : Type u_2} [CommSemiring R] {f g : MvPolynomial σ R} :
      MvPolynomial.coeff (m.degree f + m.degree g) (f * g) = m.lCoeff f * m.lCoeff g

      Multiplicativity of leading coefficients

      theorem MonomialOrder.degree_mul_of_isRegular_left {σ : Type u_1} {m : MonomialOrder σ} {R : Type u_2} [CommSemiring R] {f g : MvPolynomial σ R} (hf : IsRegular (m.lCoeff f)) (hg : g 0) :
      m.degree (f * g) = m.degree f + m.degree g

      Multiplicativity of leading coefficients

      theorem MonomialOrder.lCoeff_mul_of_isRegular_left {σ : Type u_1} {m : MonomialOrder σ} {R : Type u_2} [CommSemiring R] {f g : MvPolynomial σ R} (hf : IsRegular (m.lCoeff f)) (hg : g 0) :
      m.lCoeff (f * g) = m.lCoeff f * m.lCoeff g

      Multiplicativity of leading coefficients

      theorem MonomialOrder.degree_mul_of_isRegular_right {σ : Type u_1} {m : MonomialOrder σ} {R : Type u_2} [CommSemiring R] {f g : MvPolynomial σ R} (hf : f 0) (hg : IsRegular (m.lCoeff g)) :
      m.degree (f * g) = m.degree f + m.degree g

      Multiplicativity of leading coefficients

      theorem MonomialOrder.lCoeff_mul_of_isRegular_right {σ : Type u_1} {m : MonomialOrder σ} {R : Type u_2} [CommSemiring R] {f g : MvPolynomial σ R} (hf : f 0) (hg : IsRegular (m.lCoeff g)) :
      m.lCoeff (f * g) = m.lCoeff f * m.lCoeff g

      Multiplicativity of leading coefficients

      theorem MonomialOrder.degree_mul {σ : Type u_1} {m : MonomialOrder σ} {R : Type u_2} [CommSemiring R] [IsDomain R] {f g : MvPolynomial σ R} (hf : f 0) (hg : g 0) :
      m.degree (f * g) = m.degree f + m.degree g

      Degree of product

      theorem MonomialOrder.degree_mul_of_nonzero_mul {σ : Type u_1} {m : MonomialOrder σ} {R : Type u_2} [CommSemiring R] [IsDomain R] {f g : MvPolynomial σ R} (hfg : f * g 0) :
      m.degree (f * g) = m.degree f + m.degree g

      Degree of of product

      theorem MonomialOrder.lCoeff_mul {σ : Type u_1} {m : MonomialOrder σ} {R : Type u_2} [CommSemiring R] [IsDomain R] {f g : MvPolynomial σ R} (hf : f 0) (hg : g 0) :
      m.lCoeff (f * g) = m.lCoeff f * m.lCoeff g

      Multiplicativity of leading coefficients

      theorem MonomialOrder.degree_smul_le {σ : Type u_1} {m : MonomialOrder σ} {R : Type u_2} [CommSemiring R] {r : R} {f : MvPolynomial σ R} :
      m.toSyn (m.degree (r f)) m.toSyn (m.degree f)
      theorem MonomialOrder.degree_smul {σ : Type u_1} {m : MonomialOrder σ} {R : Type u_2} [CommSemiring R] {r : R} (hr : IsRegular r) {f : MvPolynomial σ R} :
      m.degree (r f) = m.degree f
      theorem MonomialOrder.eq_C_of_degree_eq_zero {σ : Type u_1} {m : MonomialOrder σ} {R : Type u_2} [CommSemiring R] {f : MvPolynomial σ R} (hf : m.degree f = 0) :
      f = MvPolynomial.C (m.lCoeff f)
      @[simp]
      theorem MonomialOrder.degree_neg {σ : Type u_1} {m : MonomialOrder σ} {R : Type u_2} [CommRing R] {f : MvPolynomial σ R} :
      m.degree (-f) = m.degree f
      theorem MonomialOrder.degree_sub_le {σ : Type u_1} {m : MonomialOrder σ} {R : Type u_2} [CommRing R] {f g : MvPolynomial σ R} :
      m.toSyn (m.degree (f - g)) m.toSyn (m.degree f) m.toSyn (m.degree g)
      theorem MonomialOrder.degree_sub_of_lt {σ : Type u_1} {m : MonomialOrder σ} {R : Type u_2} [CommRing R] {f g : MvPolynomial σ R} (h : m.toSyn (m.degree g) < m.toSyn (m.degree f)) :
      m.degree (f - g) = m.degree f
      theorem MonomialOrder.lCoeff_sub_of_lt {σ : Type u_1} {m : MonomialOrder σ} {R : Type u_2} [CommRing R] {f g : MvPolynomial σ R} (h : m.toSyn (m.degree g) < m.toSyn (m.degree f)) :
      m.lCoeff (f - g) = m.lCoeff f
      theorem MonomialOrder.lCoeff_is_unit_iff {σ : Type u_1} {m : MonomialOrder σ} {R : Type u_2} [Field R] {f : MvPolynomial σ R} :
      IsUnit (m.lCoeff f) f 0