Theorem: PowerSeries.coeff_mul_prod_one_sub_of_lt_order
File: Mathlib/RingTheory/PowerSeries/Order.lean

tactic: induction' s using Finset.induction_on with a s ha ih t
state_before: R✝ : Type u_1
inst✝¹ : Semiring R✝
φ✝ : R✝⟦X⟧
R : Type u_2
ι : Type u_3
inst✝ : CommRing R
k : ℕ
s : Finset ι
φ : R⟦X⟧
f : ι → R⟦X⟧
⊢ (∀ i ∈ s, ↑k < (f i).order) → (coeff R k) (φ * ∏ i ∈ s, (1 - f i)) = (coeff R k) φ
state_after: case empty
R✝ : Type u_1
inst✝¹ : Semiring R✝
φ✝ : R✝⟦X⟧
R : Type u_2
ι : Type u_3
inst✝ : CommRing R
k : ℕ
φ : R⟦X⟧
f : ι → R⟦X⟧
⊢ (∀ i ∈ ∅, ↑k < (f i).order) → (coeff R k) (φ * ∏ i ∈ ∅, (1 - f i)) = (coeff R k) φ

case insert
R✝ : Type u_1
inst✝¹ : Semiring R✝
φ✝ : R✝⟦X⟧
R : Type u_2
ι : Type u_3
inst✝ : CommRing R
k : ℕ
φ : R⟦X⟧
f : ι → R⟦X⟧
a : ι
s : Finset ι
ha : a ∉ s
ih : (∀ i ∈ s, ↑k < (f i).order) → (coeff R k) (φ * ∏ i ∈ s, (1 - f i)) = (coeff R k) φ
⊢ (∀ i ∈ insert a s, ↑k < (f i).order) → (coeff R k) (φ * ∏ i ∈ insert a s, (1 - f i)) = (coeff R k) φ

tactic: simp
state_before: case empty
R✝ : Type u_1
inst✝¹ : Semiring R✝
φ✝ : R✝⟦X⟧
R : Type u_2
ι : Type u_3
inst✝ : CommRing R
k : ℕ
φ : R⟦X⟧
f : ι → R⟦X⟧
⊢ (∀ i ∈ ∅, ↑k < (f i).order) → (coeff R k) (φ * ∏ i ∈ ∅, (1 - f i)) = (coeff R k) φ
state_after: no goals

tactic: intro t
state_before: case insert
R✝ : Type u_1
inst✝¹ : Semiring R✝
φ✝ : R✝⟦X⟧
R : Type u_2
ι : Type u_3
inst✝ : CommRing R
k : ℕ
φ : R⟦X⟧
f : ι → R⟦X⟧
a : ι
s : Finset ι
ha : a ∉ s
ih : (∀ i ∈ s, ↑k < (f i).order) → (coeff R k) (φ * ∏ i ∈ s, (1 - f i)) = (coeff R k) φ
⊢ (∀ i ∈ insert a s, ↑k < (f i).order) → (coeff R k) (φ * ∏ i ∈ insert a s, (1 - f i)) = (coeff R k) φ
state_after: case insert
R✝ : Type u_1
inst✝¹ : Semiring R✝
φ✝ : R✝⟦X⟧
R : Type u_2
ι : Type u_3
inst✝ : CommRing R
k : ℕ
φ : R⟦X⟧
f : ι → R⟦X⟧
a : ι
s : Finset ι
ha : a ∉ s
ih : (∀ i ∈ s, ↑k < (f i).order) → (coeff R k) (φ * ∏ i ∈ s, (1 - f i)) = (coeff R k) φ
t : ∀ i ∈ insert a s, ↑k < (f i).order
⊢ (coeff R k) (φ * ∏ i ∈ insert a s, (1 - f i)) = (coeff R k) φ

tactic: simp only [Finset.mem_insert, forall_eq_or_imp] at t
state_before: case insert
R✝ : Type u_1
inst✝¹ : Semiring R✝
φ✝ : R✝⟦X⟧
R : Type u_2
ι : Type u_3
inst✝ : CommRing R
k : ℕ
φ : R⟦X⟧
f : ι → R⟦X⟧
a : ι
s : Finset ι
ha : a ∉ s
ih : (∀ i ∈ s, ↑k < (f i).order) → (coeff R k) (φ * ∏ i ∈ s, (1 - f i)) = (coeff R k) φ
t : ∀ i ∈ insert a s, ↑k < (f i).order
⊢ (coeff R k) (φ * ∏ i ∈ insert a s, (1 - f i)) = (coeff R k) φ
state_after: case insert
R✝ : Type u_1
inst✝¹ : Semiring R✝
φ✝ : R✝⟦X⟧
R : Type u_2
ι : Type u_3
inst✝ : CommRing R
k : ℕ
φ : R⟦X⟧
f : ι → R⟦X⟧
a : ι
s : Finset ι
ha : a ∉ s
ih : (∀ i ∈ s, ↑k < (f i).order) → (coeff R k) (φ * ∏ i ∈ s, (1 - f i)) = (coeff R k) φ
t : ↑k < (f a).order ∧ ∀ a ∈ s, ↑k < (f a).order
⊢ (coeff R k) (φ * ∏ i ∈ insert a s, (1 - f i)) = (coeff R k) φ

tactic: rw [Finset.prod_insert ha, ← mul_assoc, mul_right_comm, coeff_mul_one_sub_of_lt_order _ t.1]
state_before: case insert
R✝ : Type u_1
inst✝¹ : Semiring R✝
φ✝ : R✝⟦X⟧
R : Type u_2
ι : Type u_3
inst✝ : CommRing R
k : ℕ
φ : R⟦X⟧
f : ι → R⟦X⟧
a : ι
s : Finset ι
ha : a ∉ s
ih : (∀ i ∈ s, ↑k < (f i).order) → (coeff R k) (φ * ∏ i ∈ s, (1 - f i)) = (coeff R k) φ
t : ↑k < (f a).order ∧ ∀ a ∈ s, ↑k < (f a).order
⊢ (coeff R k) (φ * ∏ i ∈ insert a s, (1 - f i)) = (coeff R k) φ
state_after: case insert
R✝ : Type u_1
inst✝¹ : Semiring R✝
φ✝ : R✝⟦X⟧
R : Type u_2
ι : Type u_3
inst✝ : CommRing R
k : ℕ
φ : R⟦X⟧
f : ι → R⟦X⟧
a : ι
s : Finset ι
ha : a ∉ s
ih : (∀ i ∈ s, ↑k < (f i).order) → (coeff R k) (φ * ∏ i ∈ s, (1 - f i)) = (coeff R k) φ
t : ↑k < (f a).order ∧ ∀ a ∈ s, ↑k < (f a).order
⊢ (coeff R k) (φ * ∏ x ∈ s, (1 - f x)) = (coeff R k) φ

tactic: exact ih t.2
state_before: case insert
R✝ : Type u_1
inst✝¹ : Semiring R✝
φ✝ : R✝⟦X⟧
R : Type u_2
ι : Type u_3
inst✝ : CommRing R
k : ℕ
φ : R⟦X⟧
f : ι → R⟦X⟧
a : ι
s : Finset ι
ha : a ∉ s
ih : (∀ i ∈ s, ↑k < (f i).order) → (coeff R k) (φ * ∏ i ∈ s, (1 - f i)) = (coeff R k) φ
t : ↑k < (f a).order ∧ ∀ a ∈ s, ↑k < (f a).order
⊢ (coeff R k) (φ * ∏ x ∈ s, (1 - f x)) = (coeff R k) φ
state_after: no goals