Theorem: MvPolynomial.degree_finSuccEquiv
File: Mathlib/Algebra/MvPolynomial/Equiv.lean

Proof steps:
state_before: R : Type u
S₁ : Type v
S₂ : Type w
S₃ : Type x
σ : Type u_1
a a' a₁ a₂ : R
e : ℕ
s : σ →₀ ℕ
inst✝ : CommSemiring R
n : ℕ
f : MvPolynomial (Fin (n + 1)) R
h : f ≠ 0
⊢ ((finSuccEquiv R n) f).degree = ↑(degreeOf 0 f)
state_after: R : Type u
S₁ : Type v
S₂ : Type w
S₃ : Type x
σ : Type u_1
a a' a₁ a₂ : R
e : ℕ
s : σ →₀ ℕ
inst✝ : CommSemiring R
n : ℕ
f : MvPolynomial (Fin (n + 1)) R
h : f ≠ 0
h₀ : ∀ {α : Type ?u.167292} {β : Type ?u.167295} (f : α → β), (fun x => x) ∘ f = f
⊢ ((finSuccEquiv R n) f).degree = ↑(degreeOf 0 f)
tactic: have h₀ : ∀ {α β : Type _} (f : α → β), (fun x => x) ∘ f = f := fun f => rfl
state_before: R : Type u
S₁ : Type v
S₂ : Type w
S₃ : Type x
σ : Type u_1
a a' a₁ a₂ : R
e : ℕ
s : σ →₀ ℕ
inst✝ : CommSemiring R
n : ℕ
f : MvPolynomial (Fin (n + 1)) R
h : f ≠ 0
h₀ : ∀ {α : Type ?u.167292} {β : Type ?u.167295} (f : α → β), (fun x => x) ∘ f = f
⊢ ((finSuccEquiv R n) f).degree = ↑(degreeOf 0 f)
state_after: R : Type u
S₁ : Type v
S₂ : Type w
S₃ : Type x
σ : Type u_1
a a' a₁ a₂ : R
e : ℕ
s : σ →₀ ℕ
inst✝ : CommSemiring R
n : ℕ
f : MvPolynomial (Fin (n + 1)) R
h : f ≠ 0
h₀ : ∀ {α : Type ?u.167292} {β : Type ?u.167295} (f : α → β), (fun x => x) ∘ f = f
h₁ : ∀ {α : Type ?u.167360} {β : Type ?u.167363} (f : α → β), (f ∘ fun x => x) = f
⊢ ((finSuccEquiv R n) f).degree = ↑(degreeOf 0 f)
tactic: have h₁ : ∀ {α β : Type _} (f : α → β), f ∘ (fun x => x) = f := fun f => rfl
state_before: R : Type u
S₁ : Type v
S₂ : Type w
S₃ : Type x
σ : Type u_1
a a' a₁ a₂ : R
e : ℕ
s : σ →₀ ℕ
inst✝ : CommSemiring R
n : ℕ
f : MvPolynomial (Fin (n + 1)) R
h : f ≠ 0
h₀ : ∀ {α : Type ?u.167292} {β : Type ?u.167295} (f : α → β), (fun x => x) ∘ f = f
h₁ : ∀ {α : Type ?u.167360} {β : Type ?u.167363} (f : α → β), (f ∘ fun x => x) = f
⊢ ((finSuccEquiv R n) f).degree = ↑(degreeOf 0 f)
state_after: R : Type u
S₁ : Type v
S₂ : Type w
S₃ : Type x
σ : Type u_1
a a' a₁ a₂ : R
e : ℕ
s : σ →₀ ℕ
inst✝ : CommSemiring R
n : ℕ
f : MvPolynomial (Fin (n + 1)) R
h : f ≠ 0
h₀ : ∀ {α : Type ?u.167292} {β : Type ?u.167295} (f : α → β), (fun x => x) ∘ f = f
h₁ : ∀ {α : Type ?u.167360} {β : Type ?u.167363} (f : α → β), (f ∘ fun x => x) = f
h₂ : WithBot.some = Nat.cast
⊢ ((finSuccEquiv R n) f).degree = ↑(degreeOf 0 f)
tactic: have h₂ : WithBot.some = Nat.cast := rfl
state_before: R : Type u
S₁ : Type v
S₂ : Type w
S₃ : Type x
σ : Type u_1
a a' a₁ a₂ : R
e : ℕ
s : σ →₀ ℕ
inst✝ : CommSemiring R
n : ℕ
f : MvPolynomial (Fin (n + 1)) R
h : f ≠ 0
h₀ : ∀ {α : Type ?u.167292} {β : Type ?u.167295} (f : α → β), (fun x => x) ∘ f = f
h₁ : ∀ {α : Type ?u.167360} {β : Type ?u.167363} (f : α → β), (f ∘ fun x => x) = f
h₂ : WithBot.some = Nat.cast
⊢ ((finSuccEquiv R n) f).degree = ↑(degreeOf 0 f)
state_after: R : Type u
S₁ : Type v
S₂ : Type w
S₃ : Type x
σ : Type u_1
a a' a₁ a₂ : R
e : ℕ
s : σ →₀ ℕ
inst✝ : CommSemiring R
n : ℕ
f : MvPolynomial (Fin (n + 1)) R
h : f ≠ 0
h₀ : ∀ {α β : Type} (f : α → β), (fun x => x) ∘ f = f
h₁ : ∀ {α : Type ?u.167360} {β : Type ?u.167363} (f : α → β), (f ∘ fun x => x) = f
h₂ : WithBot.some = Nat.cast
h' : (((finSuccEquiv R n) f).support.sup fun x => x) = degreeOf 0 f
⊢ ((finSuccEquiv R n) f).degree = ↑(degreeOf 0 f)
tactic: have h' : ((finSuccEquiv R n f).support.sup fun x => x) = degreeOf 0 f := by
    rw [degreeOf_eq_sup, finSuccEquiv_support f, Finset.sup_image, h₀]
state_before: R : Type u
S₁ : Type v
S₂ : Type w
S₃ : Type x
σ : Type u_1
a a' a₁ a₂ : R
e : ℕ
s : σ →₀ ℕ
inst✝ : CommSemiring R
n : ℕ
f : MvPolynomial (Fin (n + 1)) R
h : f ≠ 0
h₀ : ∀ {α β : Type} (f : α → β), (fun x => x) ∘ f = f
h₁ : ∀ {α : Type ?u.167360} {β : Type ?u.167363} (f : α → β), (f ∘ fun x => x) = f
h₂ : WithBot.some = Nat.cast
h' : (((finSuccEquiv R n) f).support.sup fun x => x) = degreeOf 0 f
⊢ ((finSuccEquiv R n) f).degree = ↑(degreeOf 0 f)
state_after: no goals
tactic: rw [Polynomial.degree, ← h', ← h₂, Finset.coe_sup_of_nonempty (support_finSuccEquiv_nonempty h),
    Finset.max_eq_sup_coe, h₁]