Documentation

Mathlib.Data.MvPolynomial.Division

Division of MvPolynomial by monomials #

Main definitions #

Main results #

Implementation notes #

Where possible, the results in this file should be first proved in the generality of AddMonoidAlgebra, and then the versions specialized to MvPolynomial proved in terms of these.

Please ensure the declarations in this section are direct translations of AddMonoidAlgebra results.

noncomputable def MvPolynomial.divMonomial {σ : Type u_1} {R : Type u_2} [CommSemiring R] (p : MvPolynomial σ R) (s : σ →₀ ) :

Divide by monomial 1 s, discarding terms not divisible by this.

Instances For
    @[simp]
    theorem MvPolynomial.coeff_divMonomial {σ : Type u_1} {R : Type u_2} [CommSemiring R] (s : σ →₀ ) (x : MvPolynomial σ R) (s' : σ →₀ ) :
    @[simp]
    theorem MvPolynomial.support_divMonomial {σ : Type u_1} {R : Type u_2} [CommSemiring R] (s : σ →₀ ) (x : MvPolynomial σ R) :
    MvPolynomial.support (MvPolynomial.divMonomial x s) = Finset.preimage (MvPolynomial.support x) ((fun x x_1 => x + x_1) s) (_ : Set.InjOn ((fun x x_1 => x + x_1) s) ((fun x x_1 => x + x_1) s ⁻¹' ↑(MvPolynomial.support x)))
    @[simp]
    theorem MvPolynomial.zero_divMonomial {σ : Type u_1} {R : Type u_2} [CommSemiring R] (s : σ →₀ ) :
    @[simp]
    @[simp]
    noncomputable def MvPolynomial.modMonomial {σ : Type u_1} {R : Type u_2} [CommSemiring R] (x : MvPolynomial σ R) (s : σ →₀ ) :

    The remainder upon division by monomial 1 s.

    Instances For
      @[simp]
      @[simp]
      theorem MvPolynomial.coeff_modMonomial_of_le {σ : Type u_1} {R : Type u_2} [CommSemiring R] {s' : σ →₀ } {s : σ →₀ } (x : MvPolynomial σ R) (h : s s') :
      @[simp]
      @[simp]
      @[simp]
      theorem MvPolynomial.X_mul_divMonomial {σ : Type u_1} {R : Type u_2} [CommSemiring R] (i : σ) (x : MvPolynomial σ R) :
      (MvPolynomial.divMonomial (MvPolynomial.X i * x) fun₀ | i => 1) = x
      @[simp]
      theorem MvPolynomial.X_divMonomial {σ : Type u_1} {R : Type u_2} [CommSemiring R] (i : σ) :
      (MvPolynomial.divMonomial (MvPolynomial.X i) fun₀ | i => 1) = 1
      @[simp]
      theorem MvPolynomial.mul_X_divMonomial {σ : Type u_1} {R : Type u_2} [CommSemiring R] (x : MvPolynomial σ R) (i : σ) :
      (MvPolynomial.divMonomial (x * MvPolynomial.X i) fun₀ | i => 1) = x
      @[simp]
      theorem MvPolynomial.X_mul_modMonomial {σ : Type u_1} {R : Type u_2} [CommSemiring R] (i : σ) (x : MvPolynomial σ R) :
      (MvPolynomial.modMonomial (MvPolynomial.X i * x) fun₀ | i => 1) = 0
      @[simp]
      theorem MvPolynomial.mul_X_modMonomial {σ : Type u_1} {R : Type u_2} [CommSemiring R] (x : MvPolynomial σ R) (i : σ) :
      (MvPolynomial.modMonomial (x * MvPolynomial.X i) fun₀ | i => 1) = 0
      @[simp]
      theorem MvPolynomial.modMonomial_X {σ : Type u_1} {R : Type u_2} [CommSemiring R] (i : σ) :
      (MvPolynomial.modMonomial (MvPolynomial.X i) fun₀ | i => 1) = 0
      theorem MvPolynomial.divMonomial_add_modMonomial_single {σ : Type u_1} {R : Type u_2} [CommSemiring R] (x : MvPolynomial σ R) (i : σ) :
      ((MvPolynomial.X i * MvPolynomial.divMonomial x fun₀ | i => 1) + MvPolynomial.modMonomial x fun₀ | i => 1) = x
      theorem MvPolynomial.modMonomial_add_divMonomial_single {σ : Type u_1} {R : Type u_2} [CommSemiring R] (x : MvPolynomial σ R) (i : σ) :
      ((MvPolynomial.modMonomial x fun₀ | i => 1) + MvPolynomial.X i * MvPolynomial.divMonomial x fun₀ | i => 1) = x
      theorem MvPolynomial.X_dvd_iff_modMonomial_eq_zero {σ : Type u_1} {R : Type u_2} [CommSemiring R] {i : σ} {x : MvPolynomial σ R} :
      MvPolynomial.X i x (MvPolynomial.modMonomial x fun₀ | i => 1) = 0

      Some results about dvd () on monomial and X #

      theorem MvPolynomial.monomial_dvd_monomial {σ : Type u_1} {R : Type u_2} [CommSemiring R] {r : R} {s : R} {i : σ →₀ } {j : σ →₀ } :
      @[simp]
      @[simp]
      theorem MvPolynomial.X_dvd_X {σ : Type u_1} {R : Type u_2} [CommSemiring R] [Nontrivial R] {i : σ} {j : σ} :
      @[simp]
      theorem MvPolynomial.X_dvd_monomial {σ : Type u_1} {R : Type u_2} [CommSemiring R] {i : σ} {j : σ →₀ } {r : R} :