Theorem: MvPolynomial.weightedDegree_eq_zero_iff
File: Mathlib/RingTheory/MvPolynomial/WeightedHomogeneous.lean

Proof steps:
state_before: R : Type u_1
M : Type u_2
inst✝¹ : CommSemiring R
σ : Type u_3
inst✝ : CanonicallyLinearOrderedAddCommMonoid M
w : σ → M
φ : MvPolynomial σ R
hw : NonTorsionWeight w
m : σ →₀ ℕ
⊢ (weight w) m = 0 ↔ ∀ (x : σ), m x = 0
state_after: R : Type u_1
M : Type u_2
inst✝¹ : CommSemiring R
σ : Type u_3
inst✝ : CanonicallyLinearOrderedAddCommMonoid M
w : σ → M
φ : MvPolynomial σ R
hw : NonTorsionWeight w
m : σ →₀ ℕ
⊢ (m.sum fun i c => c • w i) = 0 ↔ ∀ (x : σ), m x = 0
tactic: simp only [weight, Finsupp.total, LinearMap.toAddMonoidHom_coe, coe_lsum,
    LinearMap.coe_smulRight, LinearMap.id_coe, id_eq]
state_before: R : Type u_1
M : Type u_2
inst✝¹ : CommSemiring R
σ : Type u_3
inst✝ : CanonicallyLinearOrderedAddCommMonoid M
w : σ → M
φ : MvPolynomial σ R
hw : NonTorsionWeight w
m : σ →₀ ℕ
⊢ (m.sum fun i c => c • w i) = 0 ↔ ∀ (x : σ), m x = 0
state_after: R : Type u_1
M : Type u_2
inst✝¹ : CommSemiring R
σ : Type u_3
inst✝ : CanonicallyLinearOrderedAddCommMonoid M
w : σ → M
φ : MvPolynomial σ R
hw : NonTorsionWeight w
m : σ →₀ ℕ
⊢ (∀ x ∈ m.support, m x • w x = 0) ↔ ∀ (x : σ), m x = 0
tactic: rw [Finsupp.sum, Finset.sum_eq_zero_iff]
state_before: R : Type u_1
M : Type u_2
inst✝¹ : CommSemiring R
σ : Type u_3
inst✝ : CanonicallyLinearOrderedAddCommMonoid M
w : σ → M
φ : MvPolynomial σ R
hw : NonTorsionWeight w
m : σ →₀ ℕ
⊢ (∀ x ∈ m.support, m x • w x = 0) ↔ ∀ (x : σ), m x = 0
state_after: case h
R : Type u_1
M : Type u_2
inst✝¹ : CommSemiring R
σ : Type u_3
inst✝ : CanonicallyLinearOrderedAddCommMonoid M
w : σ → M
φ : MvPolynomial σ R
hw : NonTorsionWeight w
m : σ →₀ ℕ
⊢ ∀ (a : σ), a ∈ m.support → m a • w a = 0 ↔ m a = 0
tactic: apply forall_congr'
state_before: case h
R : Type u_1
M : Type u_2
inst✝¹ : CommSemiring R
σ : Type u_3
inst✝ : CanonicallyLinearOrderedAddCommMonoid M
w : σ → M
φ : MvPolynomial σ R
hw : NonTorsionWeight w
m : σ →₀ ℕ
⊢ ∀ (a : σ), a ∈ m.support → m a • w a = 0 ↔ m a = 0
state_after: case h
R : Type u_1
M : Type u_2
inst✝¹ : CommSemiring R
σ : Type u_3
inst✝ : CanonicallyLinearOrderedAddCommMonoid M
w : σ → M
φ : MvPolynomial σ R
hw : NonTorsionWeight w
m : σ →₀ ℕ
x : σ
⊢ x ∈ m.support → m x • w x = 0 ↔ m x = 0
tactic: intro x
state_before: case h
R : Type u_1
M : Type u_2
inst✝¹ : CommSemiring R
σ : Type u_3
inst✝ : CanonicallyLinearOrderedAddCommMonoid M
w : σ → M
φ : MvPolynomial σ R
hw : NonTorsionWeight w
m : σ →₀ ℕ
x : σ
⊢ x ∈ m.support → m x • w x = 0 ↔ m x = 0
state_after: case h
R : Type u_1
M : Type u_2
inst✝¹ : CommSemiring R
σ : Type u_3
inst✝ : CanonicallyLinearOrderedAddCommMonoid M
w : σ → M
φ : MvPolynomial σ R
hw : NonTorsionWeight w
m : σ →₀ ℕ
x : σ
⊢ m x ≠ 0 → m x • w x = 0 ↔ m x = 0
tactic: rw [Finsupp.mem_support_iff]
state_before: case h
R : Type u_1
M : Type u_2
inst✝¹ : CommSemiring R
σ : Type u_3
inst✝ : CanonicallyLinearOrderedAddCommMonoid M
w : σ → M
φ : MvPolynomial σ R
hw : NonTorsionWeight w
m : σ →₀ ℕ
x : σ
⊢ m x ≠ 0 → m x • w x = 0 ↔ m x = 0
state_after: case h.mp
R : Type u_1
M : Type u_2
inst✝¹ : CommSemiring R
σ : Type u_3
inst✝ : CanonicallyLinearOrderedAddCommMonoid M
w : σ → M
φ : MvPolynomial σ R
hw : NonTorsionWeight w
m : σ →₀ ℕ
x : σ
⊢ (m x ≠ 0 → m x • w x = 0) → m x = 0

case h.mpr
R : Type u_1
M : Type u_2
inst✝¹ : CommSemiring R
σ : Type u_3
inst✝ : CanonicallyLinearOrderedAddCommMonoid M
w : σ → M
φ : MvPolynomial σ R
hw : NonTorsionWeight w
m : σ →₀ ℕ
x : σ
⊢ m x = 0 → m x ≠ 0 → m x • w x = 0
tactic: constructor