Theorem: MvPolynomial.finSuccEquiv_support
File: Mathlib/Data/MvPolynomial/Equiv.lean

tactic: ext i
state_before: R : Type u
S₁ : Type v
S₂ : Type w
S₃ : Type x
σ : Type ?u.1237859
a a' a₁ a₂ : R
e : ℕ
s : σ →₀ ℕ
inst✝ : CommSemiring R
n : ℕ
f : MvPolynomial (Fin (n + 1)) R
⊢ Polynomial.support (↑(finSuccEquiv R n) f) = Finset.image (fun m => ↑m 0) (support f)

tactic: rw [Polynomial.mem_support_iff, Finset.mem_image, nonzero_iff_exists]
state_before: case a
R : Type u
S₁ : Type v
S₂ : Type w
S₃ : Type x
σ : Type ?u.1237859
a a' a₁ a₂ : R
e : ℕ
s : σ →₀ ℕ
inst✝ : CommSemiring R
n : ℕ
f : MvPolynomial (Fin (n + 1)) R
i : ℕ
⊢ i ∈ Polynomial.support (↑(finSuccEquiv R n) f) ↔ i ∈ Finset.image (fun m => ↑m 0) (support f)

tactic: constructor
state_before: case a
R : Type u
S₁ : Type v
S₂ : Type w
S₃ : Type x
σ : Type ?u.1237859
a a' a₁ a₂ : R
e : ℕ
s : σ →₀ ℕ
inst✝ : CommSemiring R
n : ℕ
f : MvPolynomial (Fin (n + 1)) R
i : ℕ
⊢ (∃ a, ↑(Polynomial.coeff (↑(finSuccEquiv R n) f) i) a ≠ 0) ↔ ∃ a, a ∈ support f ∧ ↑a 0 = i

tactic: rintro ⟨m, hm⟩
state_before: case a.mp
R : Type u
S₁ : Type v
S₂ : Type w
S₃ : Type x
σ : Type ?u.1237859
a a' a₁ a₂ : R
e : ℕ
s : σ →₀ ℕ
inst✝ : CommSemiring R
n : ℕ
f : MvPolynomial (Fin (n + 1)) R
i : ℕ
⊢ (∃ a, ↑(Polynomial.coeff (↑(finSuccEquiv R n) f) i) a ≠ 0) → ∃ a, a ∈ support f ∧ ↑a 0 = i

tactic: refine' ⟨cons i m, _, cons_zero _ _⟩
state_before: case a.mp.intro
R : Type u
S₁ : Type v
S₂ : Type w
S₃ : Type x
σ : Type ?u.1237859
a a' a₁ a₂ : R
e : ℕ
s : σ →₀ ℕ
inst✝ : CommSemiring R
n : ℕ
f : MvPolynomial (Fin (n + 1)) R
i : ℕ
m : Fin n →₀ ℕ
hm : ↑(Polynomial.coeff (↑(finSuccEquiv R n) f) i) m ≠ 0
⊢ ∃ a, a ∈ support f ∧ ↑a 0 = i

tactic: rw [← support_coeff_finSuccEquiv]
state_before: case a.mp.intro
R : Type u
S₁ : Type v
S₂ : Type w
S₃ : Type x
σ : Type ?u.1237859
a a' a₁ a₂ : R
e : ℕ
s : σ →₀ ℕ
inst✝ : CommSemiring R
n : ℕ
f : MvPolynomial (Fin (n + 1)) R
i : ℕ
m : Fin n →₀ ℕ
hm : ↑(Polynomial.coeff (↑(finSuccEquiv R n) f) i) m ≠ 0
⊢ cons i m ∈ support f

tactic: simpa using hm
state_before: case a.mp.intro
R : Type u
S₁ : Type v
S₂ : Type w
S₃ : Type x
σ : Type ?u.1237859
a a' a₁ a₂ : R
e : ℕ
s : σ →₀ ℕ
inst✝ : CommSemiring R
n : ℕ
f : MvPolynomial (Fin (n + 1)) R
i : ℕ
m : Fin n →₀ ℕ
hm : ↑(Polynomial.coeff (↑(finSuccEquiv R n) f) i) m ≠ 0
⊢ m ∈ support (Polynomial.coeff (↑(finSuccEquiv R n) f) i)

tactic: rintro ⟨m, h, rfl⟩
state_before: case a.mpr
R : Type u
S₁ : Type v
S₂ : Type w
S₃ : Type x
σ : Type ?u.1237859
a a' a₁ a₂ : R
e : ℕ
s : σ →₀ ℕ
inst✝ : CommSemiring R
n : ℕ
f : MvPolynomial (Fin (n + 1)) R
i : ℕ
⊢ (∃ a, a ∈ support f ∧ ↑a 0 = i) → ∃ a, ↑(Polynomial.coeff (↑(finSuccEquiv R n) f) i) a ≠ 0

tactic: refine' ⟨tail m, _⟩
state_before: case a.mpr.intro.intro
R : Type u
S₁ : Type v
S₂ : Type w
S₃ : Type x
σ : Type ?u.1237859
a a' a₁ a₂ : R
e : ℕ
s : σ →₀ ℕ
inst✝ : CommSemiring R
n : ℕ
f : MvPolynomial (Fin (n + 1)) R
m : Fin (n + 1) →₀ ℕ
h : m ∈ support f
⊢ ∃ a, ↑(Polynomial.coeff (↑(finSuccEquiv R n) f) (↑m 0)) a ≠ 0

tactic: rwa [← coeff, ← mem_support_iff, support_coeff_finSuccEquiv, cons_tail]
state_before: case a.mpr.intro.intro
R : Type u
S₁ : Type v
S₂ : Type w
S₃ : Type x
σ : Type ?u.1237859
a a' a₁ a₂ : R
e : ℕ
s : σ →₀ ℕ
inst✝ : CommSemiring R
n : ℕ
f : MvPolynomial (Fin (n + 1)) R
m : Fin (n + 1) →₀ ℕ
h : m ∈ support f
⊢ ↑(Polynomial.coeff (↑(finSuccEquiv R n) f) (↑m 0)) (tail m) ≠ 0