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

tactic: rw [Ne.def, ← weightedTotalDegree'_eq_bot_iff w p, ← Ne.def, WithBot.ne_bot_iff_exists] at hp
state_before: R : Type u_2
M : Type u_3
inst✝³ : CommSemiring R
σ : Type u_1
inst✝² : AddCommMonoid M
inst✝¹ : SemilatticeSup M
inst✝ : OrderBot M
w : σ → M
p : MvPolynomial σ R
hp : p ≠ 0
⊢ weightedTotalDegree' w p = ↑(weightedTotalDegree w p)

tactic: obtain ⟨m, hm⟩ := hp
state_before: R : Type u_2
M : Type u_3
inst✝³ : CommSemiring R
σ : Type u_1
inst✝² : AddCommMonoid M
inst✝¹ : SemilatticeSup M
inst✝ : OrderBot M
w : σ → M
p : MvPolynomial σ R
hp : ∃ a, ↑a = weightedTotalDegree' w p
⊢ weightedTotalDegree' w p = ↑(weightedTotalDegree w p)

tactic: apply le_antisymm
state_before: case intro
R : Type u_2
M : Type u_3
inst✝³ : CommSemiring R
σ : Type u_1
inst✝² : AddCommMonoid M
inst✝¹ : SemilatticeSup M
inst✝ : OrderBot M
w : σ → M
p : MvPolynomial σ R
m : M
hm : ↑m = weightedTotalDegree' w p
⊢ weightedTotalDegree' w p = ↑(weightedTotalDegree w p)

tactic: simp only [weightedTotalDegree, weightedTotalDegree', Finset.sup_le_iff, WithBot.coe_le_coe]
state_before: case intro.a
R : Type u_2
M : Type u_3
inst✝³ : CommSemiring R
σ : Type u_1
inst✝² : AddCommMonoid M
inst✝¹ : SemilatticeSup M
inst✝ : OrderBot M
w : σ → M
p : MvPolynomial σ R
m : M
hm : ↑m = weightedTotalDegree' w p
⊢ weightedTotalDegree' w p ≤ ↑(weightedTotalDegree w p)

tactic: intro b
state_before: case intro.a
R : Type u_2
M : Type u_3
inst✝³ : CommSemiring R
σ : Type u_1
inst✝² : AddCommMonoid M
inst✝¹ : SemilatticeSup M
inst✝ : OrderBot M
w : σ → M
p : MvPolynomial σ R
m : M
hm : ↑m = weightedTotalDegree' w p
⊢ ∀ (b : σ →₀ ℕ), b ∈ support p → ↑(weightedDegree' w) b ≤ sup (support p) fun s => ↑(weightedDegree' w) s

tactic: exact Finset.le_sup
state_before: case intro.a
R : Type u_2
M : Type u_3
inst✝³ : CommSemiring R
σ : Type u_1
inst✝² : AddCommMonoid M
inst✝¹ : SemilatticeSup M
inst✝ : OrderBot M
w : σ → M
p : MvPolynomial σ R
m : M
hm : ↑m = weightedTotalDegree' w p
b : σ →₀ ℕ
⊢ b ∈ support p → ↑(weightedDegree' w) b ≤ sup (support p) fun s => ↑(weightedDegree' w) s

tactic: simp only [weightedTotalDegree]
state_before: case intro.a
R : Type u_2
M : Type u_3
inst✝³ : CommSemiring R
σ : Type u_1
inst✝² : AddCommMonoid M
inst✝¹ : SemilatticeSup M
inst✝ : OrderBot M
w : σ → M
p : MvPolynomial σ R
m : M
hm : ↑m = weightedTotalDegree' w p
⊢ ↑(weightedTotalDegree w p) ≤ weightedTotalDegree' w p

tactic: have hm' : weightedTotalDegree' w p ≤ m := le_of_eq hm.symm
state_before: case intro.a
R : Type u_2
M : Type u_3
inst✝³ : CommSemiring R
σ : Type u_1
inst✝² : AddCommMonoid M
inst✝¹ : SemilatticeSup M
inst✝ : OrderBot M
w : σ → M
p : MvPolynomial σ R
m : M
hm : ↑m = weightedTotalDegree' w p
⊢ ↑(sup (support p) fun s => ↑(weightedDegree' w) s) ≤ weightedTotalDegree' w p

tactic: rw [← hm]
state_before: case intro.a
R : Type u_2
M : Type u_3
inst✝³ : CommSemiring R
σ : Type u_1
inst✝² : AddCommMonoid M
inst✝¹ : SemilatticeSup M
inst✝ : OrderBot M
w : σ → M
p : MvPolynomial σ R
m : M
hm : ↑m = weightedTotalDegree' w p
hm' : weightedTotalDegree' w p ≤ ↑m
⊢ ↑(sup (support p) fun s => ↑(weightedDegree' w) s) ≤ weightedTotalDegree' w p

tactic: simpa [weightedTotalDegree'] using hm'
state_before: case intro.a
R : Type u_2
M : Type u_3
inst✝³ : CommSemiring R
σ : Type u_1
inst✝² : AddCommMonoid M
inst✝¹ : SemilatticeSup M
inst✝ : OrderBot M
w : σ → M
p : MvPolynomial σ R
m : M
hm : ↑m = weightedTotalDegree' w p
hm' : weightedTotalDegree' w p ≤ ↑m
⊢ ↑(sup (support p) fun s => ↑(weightedDegree' w) s) ≤ ↑m