File: Mathlib/Algebra/MvPolynomial/Division.lean

full_name: MvPolynomial.divMonomial
code: /-- Divide by `monomial 1 s`, discarding terms not divisible by this. -/
noncomputable def divMonomial (p : MvPolynomial σ R) (s : σ →₀ ℕ) : MvPolynomial σ R 
goal: MvPolynomial σ R

full_name: MvPolynomial.«_aux_Mathlib_Algebra_MvPolynomial_Division___macroRules_MvPolynomial_term_/ᵐᵒⁿᵒᵐⁱᵃˡ__1»
code: local infixl:70 " /ᵐᵒⁿᵒᵐⁱᵃˡ " => divMonomial
goal: Lean.Macro

full_name: MvPolynomial._aux_Mathlib_Algebra_MvPolynomial_Division___unexpand_MvPolynomial_divMonomial_1
code: local infixl:70 " /ᵐᵒⁿᵒᵐⁱᵃˡ " => divMonomial
goal: Lean.PrettyPrinter.Unexpander

full_name: MvPolynomial.coeff_divMonomial
code: @[simp]
theorem coeff_divMonomial (s : σ →₀ ℕ) (x : MvPolynomial σ R) (s' : σ →₀ ℕ) :
    coeff s' (x /ᵐᵒⁿᵒᵐⁱᵃˡ s) = coeff (s + s') x 
goal: MvPolynomial.coeff s' (x.divMonomial s) = MvPolynomial.coeff (s + s') x

full_name: MvPolynomial.support_divMonomial
code: @[simp]
theorem support_divMonomial (s : σ →₀ ℕ) (x : MvPolynomial σ R) :
    (x /ᵐᵒⁿᵒᵐⁱᵃˡ s).support = x.support.preimage _ (add_right_injective s).injOn 
goal: (x.divMonomial s).support = x.support.preimage (fun x => s + x) ⋯

full_name: MvPolynomial.zero_divMonomial
code: @[simp]
theorem zero_divMonomial (s : σ →₀ ℕ) : (0 : MvPolynomial σ R) /ᵐᵒⁿᵒᵐⁱᵃˡ s = 0 
goal: MvPolynomial.divMonomial 0 s = 0

full_name: MvPolynomial.divMonomial_zero
code: theorem divMonomial_zero (x : MvPolynomial σ R) : x /ᵐᵒⁿᵒᵐⁱᵃˡ 0 = x 
goal: x.divMonomial 0 = x

full_name: MvPolynomial.add_divMonomial
code: theorem add_divMonomial (x y : MvPolynomial σ R) (s : σ →₀ ℕ) :
    (x + y) /ᵐᵒⁿᵒᵐⁱᵃˡ s = x /ᵐᵒⁿᵒᵐⁱᵃˡ s + y /ᵐᵒⁿᵒᵐⁱᵃˡ s 
goal: (x + y).divMonomial s = x.divMonomial s + y.divMonomial s

full_name: MvPolynomial.divMonomial_add
code: theorem divMonomial_add (a b : σ →₀ ℕ) (x : MvPolynomial σ R) :
    x /ᵐᵒⁿᵒᵐⁱᵃˡ (a + b) = x /ᵐᵒⁿᵒᵐⁱᵃˡ a /ᵐᵒⁿᵒᵐⁱᵃˡ b 
goal: x.divMonomial (a + b) = (x.divMonomial a).divMonomial b

full_name: MvPolynomial.divMonomial_monomial_mul
code: @[simp]
theorem divMonomial_monomial_mul (a : σ →₀ ℕ) (x : MvPolynomial σ R) :
    monomial a 1 * x /ᵐᵒⁿᵒᵐⁱᵃˡ a = x 
goal: ((MvPolynomial.monomial a) 1 * x).divMonomial a = x

full_name: MvPolynomial.divMonomial_mul_monomial
code: @[simp]
theorem divMonomial_mul_monomial (a : σ →₀ ℕ) (x : MvPolynomial σ R) :
    x * monomial a 1 /ᵐᵒⁿᵒᵐⁱᵃˡ a = x 
goal: (x * (MvPolynomial.monomial a) 1).divMonomial a = x

full_name: MvPolynomial.divMonomial_monomial
code: @[simp]
theorem divMonomial_monomial (a : σ →₀ ℕ) : monomial a 1 /ᵐᵒⁿᵒᵐⁱᵃˡ a = (1 : MvPolynomial σ R) 
goal: ((MvPolynomial.monomial a) 1).divMonomial a = 1

full_name: MvPolynomial.modMonomial
code: /-- The remainder upon division by `monomial 1 s`. -/
noncomputable def modMonomial (x : MvPolynomial σ R) (s : σ →₀ ℕ) : MvPolynomial σ R 
goal: MvPolynomial σ R

full_name: MvPolynomial.«_aux_Mathlib_Algebra_MvPolynomial_Division___macroRules_MvPolynomial_term_%ᵐᵒⁿᵒᵐⁱᵃˡ__1»
code: local infixl:70 " %ᵐᵒⁿᵒᵐⁱᵃˡ " => modMonomial
goal: Lean.Macro

full_name: MvPolynomial._aux_Mathlib_Algebra_MvPolynomial_Division___unexpand_MvPolynomial_modMonomial_1
code: local infixl:70 " %ᵐᵒⁿᵒᵐⁱᵃˡ " => modMonomial
goal: Lean.PrettyPrinter.Unexpander

full_name: MvPolynomial.coeff_modMonomial_of_not_le
code: @[simp]
theorem coeff_modMonomial_of_not_le {s' s : σ →₀ ℕ} (x : MvPolynomial σ R) (h : ¬s ≤ s') :
    coeff s' (x %ᵐᵒⁿᵒᵐⁱᵃˡ s) = coeff s' x 
goal: MvPolynomial.coeff s' (x.modMonomial s) = MvPolynomial.coeff s' x

full_name: MvPolynomial.coeff_modMonomial_of_le
code: @[simp]
theorem coeff_modMonomial_of_le {s' s : σ →₀ ℕ} (x : MvPolynomial σ R) (h : s ≤ s') :
    coeff s' (x %ᵐᵒⁿᵒᵐⁱᵃˡ s) = 0 
goal: MvPolynomial.coeff s' (x.modMonomial s) = 0

full_name: MvPolynomial.monomial_mul_modMonomial
code: @[simp]
theorem monomial_mul_modMonomial (s : σ →₀ ℕ) (x : MvPolynomial σ R) :
    monomial s 1 * x %ᵐᵒⁿᵒᵐⁱᵃˡ s = 0 
goal: ((MvPolynomial.monomial s) 1 * x).modMonomial s = 0

full_name: MvPolynomial.mul_monomial_modMonomial
code: @[simp]
theorem mul_monomial_modMonomial (s : σ →₀ ℕ) (x : MvPolynomial σ R) :
    x * monomial s 1 %ᵐᵒⁿᵒᵐⁱᵃˡ s = 0 
goal: (x * (MvPolynomial.monomial s) 1).modMonomial s = 0

full_name: MvPolynomial.monomial_modMonomial
code: @[simp]
theorem monomial_modMonomial (s : σ →₀ ℕ) : monomial s (1 : R) %ᵐᵒⁿᵒᵐⁱᵃˡ s = 0 
goal: ((MvPolynomial.monomial s) 1).modMonomial s = 0

full_name: MvPolynomial.divMonomial_add_modMonomial
code: theorem divMonomial_add_modMonomial (x : MvPolynomial σ R) (s : σ →₀ ℕ) :
    monomial s 1 * (x /ᵐᵒⁿᵒᵐⁱᵃˡ s) + x %ᵐᵒⁿᵒᵐⁱᵃˡ s = x 
goal: (MvPolynomial.monomial s) 1 * x.divMonomial s + x.modMonomial s = x

full_name: MvPolynomial.modMonomial_add_divMonomial
code: theorem modMonomial_add_divMonomial (x : MvPolynomial σ R) (s : σ →₀ ℕ) :
    x %ᵐᵒⁿᵒᵐⁱᵃˡ s + monomial s 1 * (x /ᵐᵒⁿᵒᵐⁱᵃˡ s) = x 
goal: x.modMonomial s + (MvPolynomial.monomial s) 1 * x.divMonomial s = x

full_name: MvPolynomial.monomial_one_dvd_iff_modMonomial_eq_zero
code: theorem monomial_one_dvd_iff_modMonomial_eq_zero {i : σ →₀ ℕ} {x : MvPolynomial σ R} :
    monomial i (1 : R) ∣ x ↔ x %ᵐᵒⁿᵒᵐⁱᵃˡ i = 0 
goal: (MvPolynomial.monomial i) 1 ∣ x ↔ x.modMonomial i = 0

full_name: MvPolynomial.«_aux_Mathlib_Algebra_MvPolynomial_Division___macroRules_MvPolynomial_term_/ᵐᵒⁿᵒᵐⁱᵃˡ__2»
code: local infixl:70 " /ᵐᵒⁿᵒᵐⁱᵃˡ " => divMonomial
goal: Lean.Macro

full_name: MvPolynomial._aux_Mathlib_Algebra_MvPolynomial_Division___unexpand_MvPolynomial_divMonomial_2
code: local infixl:70 " /ᵐᵒⁿᵒᵐⁱᵃˡ " => divMonomial
goal: Lean.PrettyPrinter.Unexpander

full_name: MvPolynomial.«_aux_Mathlib_Algebra_MvPolynomial_Division___macroRules_MvPolynomial_term_%ᵐᵒⁿᵒᵐⁱᵃˡ__2»
code: local infixl:70 " %ᵐᵒⁿᵒᵐⁱᵃˡ " => modMonomial
goal: Lean.Macro

full_name: MvPolynomial._aux_Mathlib_Algebra_MvPolynomial_Division___unexpand_MvPolynomial_modMonomial_2
code: local infixl:70 " %ᵐᵒⁿᵒᵐⁱᵃˡ " => modMonomial
goal: Lean.PrettyPrinter.Unexpander

full_name: MvPolynomial.X_mul_divMonomial
code: @[simp]
theorem X_mul_divMonomial (i : σ) (x : MvPolynomial σ R) :
    X i * x /ᵐᵒⁿᵒᵐⁱᵃˡ Finsupp.single i 1 = x 
goal: (MvPolynomial.X i * x).divMonomial (Finsupp.single i 1) = x

full_name: MvPolynomial.X_divMonomial
code: @[simp]
theorem X_divMonomial (i : σ) : (X i : MvPolynomial σ R) /ᵐᵒⁿᵒᵐⁱᵃˡ Finsupp.single i 1 = 1 
goal: (MvPolynomial.X i).divMonomial (Finsupp.single i 1) = 1

full_name: MvPolynomial.mul_X_divMonomial
code: @[simp]
theorem mul_X_divMonomial (x : MvPolynomial σ R) (i : σ) :
    x * X i /ᵐᵒⁿᵒᵐⁱᵃˡ Finsupp.single i 1 = x 
goal: (x * MvPolynomial.X i).divMonomial (Finsupp.single i 1) = x

full_name: MvPolynomial.X_mul_modMonomial
code: @[simp]
theorem X_mul_modMonomial (i : σ) (x : MvPolynomial σ R) :
    X i * x %ᵐᵒⁿᵒᵐⁱᵃˡ Finsupp.single i 1 = 0 
goal: (MvPolynomial.X i * x).modMonomial (Finsupp.single i 1) = 0

full_name: MvPolynomial.mul_X_modMonomial
code: @[simp]
theorem mul_X_modMonomial (x : MvPolynomial σ R) (i : σ) :
    x * X i %ᵐᵒⁿᵒᵐⁱᵃˡ Finsupp.single i 1 = 0 
goal: (x * MvPolynomial.X i).modMonomial (Finsupp.single i 1) = 0

full_name: MvPolynomial.modMonomial_X
code: @[simp]
theorem modMonomial_X (i : σ) : (X i : MvPolynomial σ R) %ᵐᵒⁿᵒᵐⁱᵃˡ Finsupp.single i 1 = 0 
goal: (MvPolynomial.X i).modMonomial (Finsupp.single i 1) = 0

full_name: MvPolynomial.divMonomial_add_modMonomial_single
code: theorem divMonomial_add_modMonomial_single (x : MvPolynomial σ R) (i : σ) :
    X i * (x /ᵐᵒⁿᵒᵐⁱᵃˡ Finsupp.single i 1) + x %ᵐᵒⁿᵒᵐⁱᵃˡ Finsupp.single i 1 = x 
goal: MvPolynomial.X i * x.divMonomial (Finsupp.single i 1) + x.modMonomial (Finsupp.single i 1) = x

full_name: MvPolynomial.modMonomial_add_divMonomial_single
code: theorem modMonomial_add_divMonomial_single (x : MvPolynomial σ R) (i : σ) :
    x %ᵐᵒⁿᵒᵐⁱᵃˡ Finsupp.single i 1 + X i * (x /ᵐᵒⁿᵒᵐⁱᵃˡ Finsupp.single i 1) = x 
goal: x.modMonomial (Finsupp.single i 1) + MvPolynomial.X i * x.divMonomial (Finsupp.single i 1) = x

full_name: MvPolynomial.X_dvd_iff_modMonomial_eq_zero
code: theorem X_dvd_iff_modMonomial_eq_zero {i : σ} {x : MvPolynomial σ R} :
    X i ∣ x ↔ x %ᵐᵒⁿᵒᵐⁱᵃˡ Finsupp.single i 1 = 0 
goal: MvPolynomial.X i ∣ x ↔ x.modMonomial (Finsupp.single i 1) = 0

full_name: MvPolynomial.monomial_dvd_monomial
code: theorem monomial_dvd_monomial {r s : R} {i j : σ →₀ ℕ} :
    monomial i r ∣ monomial j s ↔ (s = 0 ∨ i ≤ j) ∧ r ∣ s 
goal: (MvPolynomial.monomial i) r ∣ (MvPolynomial.monomial j) s ↔ (s = 0 ∨ i ≤ j) ∧ r ∣ s

full_name: MvPolynomial.monomial_one_dvd_monomial_one
code: @[simp]
theorem monomial_one_dvd_monomial_one [Nontrivial R] {i j : σ →₀ ℕ} :
    monomial i (1 : R) ∣ monomial j 1 ↔ i ≤ j 
goal: (MvPolynomial.monomial i) 1 ∣ (MvPolynomial.monomial j) 1 ↔ i ≤ j

full_name: MvPolynomial.X_dvd_X
code: @[simp]
theorem X_dvd_X [Nontrivial R] {i j : σ} :
    (X i : MvPolynomial σ R) ∣ (X j : MvPolynomial σ R) ↔ i = j 
goal: MvPolynomial.X i ∣ MvPolynomial.X j ↔ i = j

full_name: MvPolynomial.X_dvd_monomial
code: @[simp]
theorem X_dvd_monomial {i : σ} {j : σ →₀ ℕ} {r : R} :
    (X i : MvPolynomial σ R) ∣ monomial j r ↔ r = 0 ∨ j i ≠ 0 
goal: MvPolynomial.X i ∣ (MvPolynomial.monomial j) r ↔ r = 0 ∨ j i ≠ 0