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

tactic: ext i
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
⊢ ((finSuccEquiv R n) f).support = Finset.image (fun m => m 0) f.support
state_after: case a
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
i : ℕ
⊢ i ∈ ((finSuccEquiv R n) f).support ↔ i ∈ Finset.image (fun m => m 0) f.support

tactic: rw [Polynomial.mem_support_iff, Finset.mem_image, Finsupp.ne_iff]
state_before: case a
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
i : ℕ
⊢ i ∈ ((finSuccEquiv R n) f).support ↔ i ∈ Finset.image (fun m => m 0) f.support
state_after: case a
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
i : ℕ
⊢ (∃ a, (((finSuccEquiv R n) f).coeff i) a ≠ 0 a) ↔ ∃ a ∈ f.support, a 0 = i

tactic: constructor
state_before: case a
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
i : ℕ
⊢ (∃ a, (((finSuccEquiv R n) f).coeff i) a ≠ 0 a) ↔ ∃ a ∈ f.support, a 0 = i
state_after: case a.mp
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
i : ℕ
⊢ (∃ a, (((finSuccEquiv R n) f).coeff i) a ≠ 0 a) → ∃ a ∈ f.support, a 0 = i

case a.mpr
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
i : ℕ
⊢ (∃ a ∈ f.support, a 0 = i) → ∃ a, (((finSuccEquiv R n) f).coeff i) a ≠ 0 a

tactic: rintro ⟨m, hm⟩
state_before: case a.mp
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
i : ℕ
⊢ (∃ a, (((finSuccEquiv R n) f).coeff i) a ≠ 0 a) → ∃ a ∈ f.support, a 0 = i
state_after: case a.mp.intro
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
i : ℕ
m : Fin n →₀ ℕ
hm : (((finSuccEquiv R n) f).coeff i) m ≠ 0 m
⊢ ∃ a ∈ f.support, 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_1
a a' a₁ a₂ : R
e : ℕ
s : σ →₀ ℕ
inst✝ : CommSemiring R
n : ℕ
f : MvPolynomial (Fin (n + 1)) R
i : ℕ
m : Fin n →₀ ℕ
hm : (((finSuccEquiv R n) f).coeff i) m ≠ 0 m
⊢ ∃ a ∈ f.support, a 0 = i
state_after: case a.mp.intro
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
i : ℕ
m : Fin n →₀ ℕ
hm : (((finSuccEquiv R n) f).coeff i) m ≠ 0 m
⊢ cons i m ∈ f.support

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_1
a a' a₁ a₂ : R
e : ℕ
s : σ →₀ ℕ
inst✝ : CommSemiring R
n : ℕ
f : MvPolynomial (Fin (n + 1)) R
i : ℕ
m : Fin n →₀ ℕ
hm : (((finSuccEquiv R n) f).coeff i) m ≠ 0 m
⊢ cons i m ∈ f.support
state_after: case a.mp.intro
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
i : ℕ
m : Fin n →₀ ℕ
hm : (((finSuccEquiv R n) f).coeff i) m ≠ 0 m
⊢ m ∈ (((finSuccEquiv R n) f).coeff i).support

tactic: simpa using hm
state_before: case a.mp.intro
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
i : ℕ
m : Fin n →₀ ℕ
hm : (((finSuccEquiv R n) f).coeff i) m ≠ 0 m
⊢ m ∈ (((finSuccEquiv R n) f).coeff i).support
state_after: no goals

tactic: rintro ⟨m, h, rfl⟩
state_before: case a.mpr
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
i : ℕ
⊢ (∃ a ∈ f.support, a 0 = i) → ∃ a, (((finSuccEquiv R n) f).coeff i) a ≠ 0 a
state_after: case a.mpr.intro.intro
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
m : Fin (n + 1) →₀ ℕ
h : m ∈ f.support
⊢ ∃ a, (((finSuccEquiv R n) f).coeff (m 0)) a ≠ 0 a

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_1
a a' a₁ a₂ : R
e : ℕ
s : σ →₀ ℕ
inst✝ : CommSemiring R
n : ℕ
f : MvPolynomial (Fin (n + 1)) R
m : Fin (n + 1) →₀ ℕ
h : m ∈ f.support
⊢ ∃ a, (((finSuccEquiv R n) f).coeff (m 0)) a ≠ 0 a
state_after: case a.mpr.intro.intro
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
m : Fin (n + 1) →₀ ℕ
h : m ∈ f.support
⊢ (((finSuccEquiv R n) f).coeff (m 0)) m.tail ≠ 0 m.tail

tactic: rwa [← coeff, zero_apply, ← 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_1
a a' a₁ a₂ : R
e : ℕ
s : σ →₀ ℕ
inst✝ : CommSemiring R
n : ℕ
f : MvPolynomial (Fin (n + 1)) R
m : Fin (n + 1) →₀ ℕ
h : m ∈ f.support
⊢ (((finSuccEquiv R n) f).coeff (m 0)) m.tail ≠ 0 m.tail
state_after: no goals