Theorem: MvPowerSeries.coeff_prod
File: Mathlib/RingTheory/MvPowerSeries/Basic.lean

tactic: simp only [prod_empty, sum_const, nsmul_eq_mul, mul_one, coeff_one, finsuppAntidiag_empty]
state_before: case empty
σ : Type u_1
R✝ : Type u_2
R : Type u_3
inst✝² : CommSemiring R
ι : Type u_4
inst✝¹ : DecidableEq ι
inst✝ : DecidableEq σ
f : ι → MvPowerSeries σ R
d : σ →₀ ℕ
⊢ (coeff R d) (∏ j ∈ ∅, f j) = ∑ l ∈ ∅.finsuppAntidiag d, ∏ i ∈ ∅, (coeff R (l i)) (f i)
state_after: case empty
σ : Type u_1
R✝ : Type u_2
R : Type u_3
inst✝² : CommSemiring R
ι : Type u_4
inst✝¹ : DecidableEq ι
inst✝ : DecidableEq σ
f : ι → MvPowerSeries σ R
d : σ →₀ ℕ
⊢ (if d = 0 then 1 else 0) = ↑(if d = 0 then {0} else ∅).card

tactic: split_ifs
state_before: case empty
σ : Type u_1
R✝ : Type u_2
R : Type u_3
inst✝² : CommSemiring R
ι : Type u_4
inst✝¹ : DecidableEq ι
inst✝ : DecidableEq σ
f : ι → MvPowerSeries σ R
d : σ →₀ ℕ
⊢ (if d = 0 then 1 else 0) = ↑(if d = 0 then {0} else ∅).card
state_after: case pos
σ : Type u_1
R✝ : Type u_2
R : Type u_3
inst✝² : CommSemiring R
ι : Type u_4
inst✝¹ : DecidableEq ι
inst✝ : DecidableEq σ
f : ι → MvPowerSeries σ R
d : σ →₀ ℕ
h✝ : d = 0
⊢ 1 = ↑{0}.card

case neg
σ : Type u_1
R✝ : Type u_2
R : Type u_3
inst✝² : CommSemiring R
ι : Type u_4
inst✝¹ : DecidableEq ι
inst✝ : DecidableEq σ
f : ι → MvPowerSeries σ R
d : σ →₀ ℕ
h✝ : ¬d = 0
⊢ 0 = ↑∅.card

tactic: simp only [card_singleton, Nat.cast_one]
state_before: case pos
σ : Type u_1
R✝ : Type u_2
R : Type u_3
inst✝² : CommSemiring R
ι : Type u_4
inst✝¹ : DecidableEq ι
inst✝ : DecidableEq σ
f : ι → MvPowerSeries σ R
d : σ →₀ ℕ
h✝ : d = 0
⊢ 1 = ↑{0}.card
state_after: no goals

tactic: simp only [card_empty, Nat.cast_zero]
state_before: case neg
σ : Type u_1
R✝ : Type u_2
R : Type u_3
inst✝² : CommSemiring R
ι : Type u_4
inst✝¹ : DecidableEq ι
inst✝ : DecidableEq σ
f : ι → MvPowerSeries σ R
d : σ →₀ ℕ
h✝ : ¬d = 0
⊢ 0 = ↑∅.card
state_after: no goals

tactic: rw [finsuppAntidiag_insert ha, prod_insert ha, coeff_mul, sum_biUnion]
state_before: case insert
σ : Type u_1
R✝ : Type u_2
R : Type u_3
inst✝² : CommSemiring R
ι : Type u_4
inst✝¹ : DecidableEq ι
inst✝ : DecidableEq σ
f : ι → MvPowerSeries σ R
a : ι
s : Finset ι
ha : a ∉ s
ih : ∀ (d : σ →₀ ℕ), (coeff R d) (∏ j ∈ s, f j) = ∑ l ∈ s.finsuppAntidiag d, ∏ i ∈ s, (coeff R (l i)) (f i)
d : σ →₀ ℕ
⊢ (coeff R d) (∏ j ∈ insert a s, f j) = ∑ l ∈ (insert a s).finsuppAntidiag d, ∏ i ∈ insert a s, (coeff R (l i)) (f i)
state_after: case insert
σ : Type u_1
R✝ : Type u_2
R : Type u_3
inst✝² : CommSemiring R
ι : Type u_4
inst✝¹ : DecidableEq ι
inst✝ : DecidableEq σ
f : ι → MvPowerSeries σ R
a : ι
s : Finset ι
ha : a ∉ s
ih : ∀ (d : σ →₀ ℕ), (coeff R d) (∏ j ∈ s, f j) = ∑ l ∈ s.finsuppAntidiag d, ∏ i ∈ s, (coeff R (l i)) (f i)
d : σ →₀ ℕ
⊢ ∑ p ∈ antidiagonal d, (coeff R p.1) (f a) * (coeff R p.2) (∏ x ∈ s, f x) =
    ∑ x ∈ antidiagonal d,
      ∑ i ∈ Finset.map { toFun := fun f => (↑f).update a x.1, inj' := ⋯ } (s.finsuppAntidiag x.2).attach,
        ∏ i_1 ∈ insert a s, (coeff R (i i_1)) (f i_1)

case insert
σ : Type u_1
R✝ : Type u_2
R : Type u_3
inst✝² : CommSemiring R
ι : Type u_4
inst✝¹ : DecidableEq ι
inst✝ : DecidableEq σ
f : ι → MvPowerSeries σ R
a : ι
s : Finset ι
ha : a ∉ s
ih : ∀ (d : σ →₀ ℕ), (coeff R d) (∏ j ∈ s, f j) = ∑ l ∈ s.finsuppAntidiag d, ∏ i ∈ s, (coeff R (l i)) (f i)
d : σ →₀ ℕ
⊢ (↑(antidiagonal d)).PairwiseDisjoint fun p =>
    Finset.map { toFun := fun f => (↑f).update a p.1, inj' := ⋯ } (s.finsuppAntidiag p.2).attach

tactic: apply Finset.sum_congr rfl
state_before: case insert
σ : Type u_1
R✝ : Type u_2
R : Type u_3
inst✝² : CommSemiring R
ι : Type u_4
inst✝¹ : DecidableEq ι
inst✝ : DecidableEq σ
f : ι → MvPowerSeries σ R
a : ι
s : Finset ι
ha : a ∉ s
ih : ∀ (d : σ →₀ ℕ), (coeff R d) (∏ j ∈ s, f j) = ∑ l ∈ s.finsuppAntidiag d, ∏ i ∈ s, (coeff R (l i)) (f i)
d : σ →₀ ℕ
⊢ ∑ p ∈ antidiagonal d, (coeff R p.1) (f a) * (coeff R p.2) (∏ x ∈ s, f x) =
    ∑ x ∈ antidiagonal d,
      ∑ i ∈ Finset.map { toFun := fun f => (↑f).update a x.1, inj' := ⋯ } (s.finsuppAntidiag x.2).attach,
        ∏ i_1 ∈ insert a s, (coeff R (i i_1)) (f i_1)
state_after: case insert
σ : Type u_1
R✝ : Type u_2
R : Type u_3
inst✝² : CommSemiring R
ι : Type u_4
inst✝¹ : DecidableEq ι
inst✝ : DecidableEq σ
f : ι → MvPowerSeries σ R
a : ι
s : Finset ι
ha : a ∉ s
ih : ∀ (d : σ →₀ ℕ), (coeff R d) (∏ j ∈ s, f j) = ∑ l ∈ s.finsuppAntidiag d, ∏ i ∈ s, (coeff R (l i)) (f i)
d : σ →₀ ℕ
⊢ ∀ x ∈ antidiagonal d,
    (coeff R x.1) (f a) * (coeff R x.2) (∏ x ∈ s, f x) =
      ∑ i ∈ Finset.map { toFun := fun f => (↑f).update a x.1, inj' := ⋯ } (s.finsuppAntidiag x.2).attach,
        ∏ i_1 ∈ insert a s, (coeff R (i i_1)) (f i_1)

tactic: simp only [mem_antidiagonal, sum_map, Function.Embedding.coeFn_mk, coe_update, Prod.forall]
state_before: case insert
σ : Type u_1
R✝ : Type u_2
R : Type u_3
inst✝² : CommSemiring R
ι : Type u_4
inst✝¹ : DecidableEq ι
inst✝ : DecidableEq σ
f : ι → MvPowerSeries σ R
a : ι
s : Finset ι
ha : a ∉ s
ih : ∀ (d : σ →₀ ℕ), (coeff R d) (∏ j ∈ s, f j) = ∑ l ∈ s.finsuppAntidiag d, ∏ i ∈ s, (coeff R (l i)) (f i)
d : σ →₀ ℕ
⊢ ∀ x ∈ antidiagonal d,
    (coeff R x.1) (f a) * (coeff R x.2) (∏ x ∈ s, f x) =
      ∑ i ∈ Finset.map { toFun := fun f => (↑f).update a x.1, inj' := ⋯ } (s.finsuppAntidiag x.2).attach,
        ∏ i_1 ∈ insert a s, (coeff R (i i_1)) (f i_1)
state_after: case insert
σ : Type u_1
R✝ : Type u_2
R : Type u_3
inst✝² : CommSemiring R
ι : Type u_4
inst✝¹ : DecidableEq ι
inst✝ : DecidableEq σ
f : ι → MvPowerSeries σ R
a : ι
s : Finset ι
ha : a ∉ s
ih : ∀ (d : σ →₀ ℕ), (coeff R d) (∏ j ∈ s, f j) = ∑ l ∈ s.finsuppAntidiag d, ∏ i ∈ s, (coeff R (l i)) (f i)
d : σ →₀ ℕ
⊢ ∀ (a_1 b : σ →₀ ℕ),
    a_1 + b = d →
      (coeff R a_1) (f a) * (coeff R b) (∏ x ∈ s, f x) =
        ∑ x ∈ (s.finsuppAntidiag b).attach, ∏ x_1 ∈ insert a s, (coeff R (Function.update (⇑↑x) a a_1 x_1)) (f x_1)

tactic: rintro u v rfl
state_before: case insert
σ : Type u_1
R✝ : Type u_2
R : Type u_3
inst✝² : CommSemiring R
ι : Type u_4
inst✝¹ : DecidableEq ι
inst✝ : DecidableEq σ
f : ι → MvPowerSeries σ R
a : ι
s : Finset ι
ha : a ∉ s
ih : ∀ (d : σ →₀ ℕ), (coeff R d) (∏ j ∈ s, f j) = ∑ l ∈ s.finsuppAntidiag d, ∏ i ∈ s, (coeff R (l i)) (f i)
d : σ →₀ ℕ
⊢ ∀ (a_1 b : σ →₀ ℕ),
    a_1 + b = d →
      (coeff R a_1) (f a) * (coeff R b) (∏ x ∈ s, f x) =
        ∑ x ∈ (s.finsuppAntidiag b).attach, ∏ x_1 ∈ insert a s, (coeff R (Function.update (⇑↑x) a a_1 x_1)) (f x_1)
state_after: case insert
σ : Type u_1
R✝ : Type u_2
R : Type u_3
inst✝² : CommSemiring R
ι : Type u_4
inst✝¹ : DecidableEq ι
inst✝ : DecidableEq σ
f : ι → MvPowerSeries σ R
a : ι
s : Finset ι
ha : a ∉ s
ih : ∀ (d : σ →₀ ℕ), (coeff R d) (∏ j ∈ s, f j) = ∑ l ∈ s.finsuppAntidiag d, ∏ i ∈ s, (coeff R (l i)) (f i)
u v : σ →₀ ℕ
⊢ (coeff R u) (f a) * (coeff R v) (∏ x ∈ s, f x) =
    ∑ x ∈ (s.finsuppAntidiag v).attach, ∏ x_1 ∈ insert a s, (coeff R (Function.update (⇑↑x) a u x_1)) (f x_1)

tactic: rw [ih, Finset.mul_sum, ← Finset.sum_attach]
state_before: case insert
σ : Type u_1
R✝ : Type u_2
R : Type u_3
inst✝² : CommSemiring R
ι : Type u_4
inst✝¹ : DecidableEq ι
inst✝ : DecidableEq σ
f : ι → MvPowerSeries σ R
a : ι
s : Finset ι
ha : a ∉ s
ih : ∀ (d : σ →₀ ℕ), (coeff R d) (∏ j ∈ s, f j) = ∑ l ∈ s.finsuppAntidiag d, ∏ i ∈ s, (coeff R (l i)) (f i)
u v : σ →₀ ℕ
⊢ (coeff R u) (f a) * (coeff R v) (∏ x ∈ s, f x) =
    ∑ x ∈ (s.finsuppAntidiag v).attach, ∏ x_1 ∈ insert a s, (coeff R (Function.update (⇑↑x) a u x_1)) (f x_1)
state_after: case insert
σ : Type u_1
R✝ : Type u_2
R : Type u_3
inst✝² : CommSemiring R
ι : Type u_4
inst✝¹ : DecidableEq ι
inst✝ : DecidableEq σ
f : ι → MvPowerSeries σ R
a : ι
s : Finset ι
ha : a ∉ s
ih : ∀ (d : σ →₀ ℕ), (coeff R d) (∏ j ∈ s, f j) = ∑ l ∈ s.finsuppAntidiag d, ∏ i ∈ s, (coeff R (l i)) (f i)
u v : σ →₀ ℕ
⊢ ∑ x ∈ (s.finsuppAntidiag v).attach, (coeff R u) (f a) * ∏ i ∈ s, (coeff R (↑x i)) (f i) =
    ∑ x ∈ (s.finsuppAntidiag v).attach, ∏ x_1 ∈ insert a s, (coeff R (Function.update (⇑↑x) a u x_1)) (f x_1)

tactic: apply Finset.sum_congr rfl
state_before: case insert
σ : Type u_1
R✝ : Type u_2
R : Type u_3
inst✝² : CommSemiring R
ι : Type u_4
inst✝¹ : DecidableEq ι
inst✝ : DecidableEq σ
f : ι → MvPowerSeries σ R
a : ι
s : Finset ι
ha : a ∉ s
ih : ∀ (d : σ →₀ ℕ), (coeff R d) (∏ j ∈ s, f j) = ∑ l ∈ s.finsuppAntidiag d, ∏ i ∈ s, (coeff R (l i)) (f i)
u v : σ →₀ ℕ
⊢ ∑ x ∈ (s.finsuppAntidiag v).attach, (coeff R u) (f a) * ∏ i ∈ s, (coeff R (↑x i)) (f i) =
    ∑ x ∈ (s.finsuppAntidiag v).attach, ∏ x_1 ∈ insert a s, (coeff R (Function.update (⇑↑x) a u x_1)) (f x_1)
state_after: case insert
σ : Type u_1
R✝ : Type u_2
R : Type u_3
inst✝² : CommSemiring R
ι : Type u_4
inst✝¹ : DecidableEq ι
inst✝ : DecidableEq σ
f : ι → MvPowerSeries σ R
a : ι
s : Finset ι
ha : a ∉ s
ih : ∀ (d : σ →₀ ℕ), (coeff R d) (∏ j ∈ s, f j) = ∑ l ∈ s.finsuppAntidiag d, ∏ i ∈ s, (coeff R (l i)) (f i)
u v : σ →₀ ℕ
⊢ ∀ x ∈ (s.finsuppAntidiag v).attach,
    (coeff R u) (f a) * ∏ i ∈ s, (coeff R (↑x i)) (f i) =
      ∏ x_1 ∈ insert a s, (coeff R (Function.update (⇑↑x) a u x_1)) (f x_1)

tactic: simp only [mem_attach, Finset.prod_insert ha, Function.update_same, forall_true_left,
  Subtype.forall]
state_before: case insert
σ : Type u_1
R✝ : Type u_2
R : Type u_3
inst✝² : CommSemiring R
ι : Type u_4
inst✝¹ : DecidableEq ι
inst✝ : DecidableEq σ
f : ι → MvPowerSeries σ R
a : ι
s : Finset ι
ha : a ∉ s
ih : ∀ (d : σ →₀ ℕ), (coeff R d) (∏ j ∈ s, f j) = ∑ l ∈ s.finsuppAntidiag d, ∏ i ∈ s, (coeff R (l i)) (f i)
u v : σ →₀ ℕ
⊢ ∀ x ∈ (s.finsuppAntidiag v).attach,
    (coeff R u) (f a) * ∏ i ∈ s, (coeff R (↑x i)) (f i) =
      ∏ x_1 ∈ insert a s, (coeff R (Function.update (⇑↑x) a u x_1)) (f x_1)
state_after: case insert
σ : Type u_1
R✝ : Type u_2
R : Type u_3
inst✝² : CommSemiring R
ι : Type u_4
inst✝¹ : DecidableEq ι
inst✝ : DecidableEq σ
f : ι → MvPowerSeries σ R
a : ι
s : Finset ι
ha : a ∉ s
ih : ∀ (d : σ →₀ ℕ), (coeff R d) (∏ j ∈ s, f j) = ∑ l ∈ s.finsuppAntidiag d, ∏ i ∈ s, (coeff R (l i)) (f i)
u v : σ →₀ ℕ
⊢ ∀ a_1 ∈ s.finsuppAntidiag v,
    (coeff R u) (f a) * ∏ x ∈ s, (coeff R (a_1 x)) (f x) =
      (coeff R u) (f a) * ∏ x ∈ s, (coeff R (Function.update (⇑a_1) a u x)) (f x)

tactic: rintro x -
state_before: case insert
σ : Type u_1
R✝ : Type u_2
R : Type u_3
inst✝² : CommSemiring R
ι : Type u_4
inst✝¹ : DecidableEq ι
inst✝ : DecidableEq σ
f : ι → MvPowerSeries σ R
a : ι
s : Finset ι
ha : a ∉ s
ih : ∀ (d : σ →₀ ℕ), (coeff R d) (∏ j ∈ s, f j) = ∑ l ∈ s.finsuppAntidiag d, ∏ i ∈ s, (coeff R (l i)) (f i)
u v : σ →₀ ℕ
⊢ ∀ a_1 ∈ s.finsuppAntidiag v,
    (coeff R u) (f a) * ∏ x ∈ s, (coeff R (a_1 x)) (f x) =
      (coeff R u) (f a) * ∏ x ∈ s, (coeff R (Function.update (⇑a_1) a u x)) (f x)
state_after: case insert
σ : Type u_1
R✝ : Type u_2
R : Type u_3
inst✝² : CommSemiring R
ι : Type u_4
inst✝¹ : DecidableEq ι
inst✝ : DecidableEq σ
f : ι → MvPowerSeries σ R
a : ι
s : Finset ι
ha : a ∉ s
ih : ∀ (d : σ →₀ ℕ), (coeff R d) (∏ j ∈ s, f j) = ∑ l ∈ s.finsuppAntidiag d, ∏ i ∈ s, (coeff R (l i)) (f i)
u v : σ →₀ ℕ
x : ι →₀ σ →₀ ℕ
⊢ (coeff R u) (f a) * ∏ x_1 ∈ s, (coeff R (x x_1)) (f x_1) =
    (coeff R u) (f a) * ∏ x_1 ∈ s, (coeff R (Function.update (⇑x) a u x_1)) (f x_1)

tactic: rw [Finset.prod_congr rfl]
state_before: case insert
σ : Type u_1
R✝ : Type u_2
R : Type u_3
inst✝² : CommSemiring R
ι : Type u_4
inst✝¹ : DecidableEq ι
inst✝ : DecidableEq σ
f : ι → MvPowerSeries σ R
a : ι
s : Finset ι
ha : a ∉ s
ih : ∀ (d : σ →₀ ℕ), (coeff R d) (∏ j ∈ s, f j) = ∑ l ∈ s.finsuppAntidiag d, ∏ i ∈ s, (coeff R (l i)) (f i)
u v : σ →₀ ℕ
x : ι →₀ σ →₀ ℕ
⊢ (coeff R u) (f a) * ∏ x_1 ∈ s, (coeff R (x x_1)) (f x_1) =
    (coeff R u) (f a) * ∏ x_1 ∈ s, (coeff R (Function.update (⇑x) a u x_1)) (f x_1)
state_after: case insert
σ : Type u_1
R✝ : Type u_2
R : Type u_3
inst✝² : CommSemiring R
ι : Type u_4
inst✝¹ : DecidableEq ι
inst✝ : DecidableEq σ
f : ι → MvPowerSeries σ R
a : ι
s : Finset ι
ha : a ∉ s
ih : ∀ (d : σ →₀ ℕ), (coeff R d) (∏ j ∈ s, f j) = ∑ l ∈ s.finsuppAntidiag d, ∏ i ∈ s, (coeff R (l i)) (f i)
u v : σ →₀ ℕ
x : ι →₀ σ →₀ ℕ
⊢ ∀ x_1 ∈ s, (coeff R (x x_1)) (f x_1) = (coeff R (Function.update (⇑x) a u x_1)) (f x_1)

tactic: intro i hi
state_before: case insert
σ : Type u_1
R✝ : Type u_2
R : Type u_3
inst✝² : CommSemiring R
ι : Type u_4
inst✝¹ : DecidableEq ι
inst✝ : DecidableEq σ
f : ι → MvPowerSeries σ R
a : ι
s : Finset ι
ha : a ∉ s
ih : ∀ (d : σ →₀ ℕ), (coeff R d) (∏ j ∈ s, f j) = ∑ l ∈ s.finsuppAntidiag d, ∏ i ∈ s, (coeff R (l i)) (f i)
u v : σ →₀ ℕ
x : ι →₀ σ →₀ ℕ
⊢ ∀ x_1 ∈ s, (coeff R (x x_1)) (f x_1) = (coeff R (Function.update (⇑x) a u x_1)) (f x_1)
state_after: case insert
σ : Type u_1
R✝ : Type u_2
R : Type u_3
inst✝² : CommSemiring R
ι : Type u_4
inst✝¹ : DecidableEq ι
inst✝ : DecidableEq σ
f : ι → MvPowerSeries σ R
a : ι
s : Finset ι
ha : a ∉ s
ih : ∀ (d : σ →₀ ℕ), (coeff R d) (∏ j ∈ s, f j) = ∑ l ∈ s.finsuppAntidiag d, ∏ i ∈ s, (coeff R (l i)) (f i)
u v : σ →₀ ℕ
x : ι →₀ σ →₀ ℕ
i : ι
hi : i ∈ s
⊢ (coeff R (x i)) (f i) = (coeff R (Function.update (⇑x) a u i)) (f i)

tactic: rw [Function.update_noteq]
state_before: case insert
σ : Type u_1
R✝ : Type u_2
R : Type u_3
inst✝² : CommSemiring R
ι : Type u_4
inst✝¹ : DecidableEq ι
inst✝ : DecidableEq σ
f : ι → MvPowerSeries σ R
a : ι
s : Finset ι
ha : a ∉ s
ih : ∀ (d : σ →₀ ℕ), (coeff R d) (∏ j ∈ s, f j) = ∑ l ∈ s.finsuppAntidiag d, ∏ i ∈ s, (coeff R (l i)) (f i)
u v : σ →₀ ℕ
x : ι →₀ σ →₀ ℕ
i : ι
hi : i ∈ s
⊢ (coeff R (x i)) (f i) = (coeff R (Function.update (⇑x) a u i)) (f i)
state_after: case insert.h
σ : Type u_1
R✝ : Type u_2
R : Type u_3
inst✝² : CommSemiring R
ι : Type u_4
inst✝¹ : DecidableEq ι
inst✝ : DecidableEq σ
f : ι → MvPowerSeries σ R
a : ι
s : Finset ι
ha : a ∉ s
ih : ∀ (d : σ →₀ ℕ), (coeff R d) (∏ j ∈ s, f j) = ∑ l ∈ s.finsuppAntidiag d, ∏ i ∈ s, (coeff R (l i)) (f i)
u v : σ →₀ ℕ
x : ι →₀ σ →₀ ℕ
i : ι
hi : i ∈ s
⊢ i ≠ a

tactic: exact ne_of_mem_of_not_mem hi ha
state_before: case insert.h
σ : Type u_1
R✝ : Type u_2
R : Type u_3
inst✝² : CommSemiring R
ι : Type u_4
inst✝¹ : DecidableEq ι
inst✝ : DecidableEq σ
f : ι → MvPowerSeries σ R
a : ι
s : Finset ι
ha : a ∉ s
ih : ∀ (d : σ →₀ ℕ), (coeff R d) (∏ j ∈ s, f j) = ∑ l ∈ s.finsuppAntidiag d, ∏ i ∈ s, (coeff R (l i)) (f i)
u v : σ →₀ ℕ
x : ι →₀ σ →₀ ℕ
i : ι
hi : i ∈ s
⊢ i ≠ a
state_after: no goals

tactic: simp only [Set.PairwiseDisjoint, Set.Pairwise, mem_coe, mem_antidiagonal, ne_eq,
  disjoint_left, mem_map, mem_attach, Function.Embedding.coeFn_mk, true_and, Subtype.exists,
  exists_prop, not_exists, not_and, forall_exists_index, and_imp, forall_apply_eq_imp_iff₂,
  Prod.forall, Prod.mk.injEq]
state_before: case insert
σ : Type u_1
R✝ : Type u_2
R : Type u_3
inst✝² : CommSemiring R
ι : Type u_4
inst✝¹ : DecidableEq ι
inst✝ : DecidableEq σ
f : ι → MvPowerSeries σ R
a : ι
s : Finset ι
ha : a ∉ s
ih : ∀ (d : σ →₀ ℕ), (coeff R d) (∏ j ∈ s, f j) = ∑ l ∈ s.finsuppAntidiag d, ∏ i ∈ s, (coeff R (l i)) (f i)
d : σ →₀ ℕ
⊢ (↑(antidiagonal d)).PairwiseDisjoint fun p =>
    Finset.map { toFun := fun f => (↑f).update a p.1, inj' := ⋯ } (s.finsuppAntidiag p.2).attach
state_after: case insert
σ : Type u_1
R✝ : Type u_2
R : Type u_3
inst✝² : CommSemiring R
ι : Type u_4
inst✝¹ : DecidableEq ι
inst✝ : DecidableEq σ
f : ι → MvPowerSeries σ R
a : ι
s : Finset ι
ha : a ∉ s
ih : ∀ (d : σ →₀ ℕ), (coeff R d) (∏ j ∈ s, f j) = ∑ l ∈ s.finsuppAntidiag d, ∏ i ∈ s, (coeff R (l i)) (f i)
d : σ →₀ ℕ
⊢ ∀ (a_1 b : σ →₀ ℕ),
    a_1 + b = d →
      ∀ (a_3 b_1 : σ →₀ ℕ),
        a_3 + b_1 = d →
          (a_1 = a_3 → ¬b = b_1) →
            ∀ a_6 ∈ s.finsuppAntidiag b, ∀ x ∈ s.finsuppAntidiag b_1, ¬x.update a a_3 = a_6.update a a_1

tactic: rintro u v rfl u' v' huv h k - l - hkl
state_before: case insert
σ : Type u_1
R✝ : Type u_2
R : Type u_3
inst✝² : CommSemiring R
ι : Type u_4
inst✝¹ : DecidableEq ι
inst✝ : DecidableEq σ
f : ι → MvPowerSeries σ R
a : ι
s : Finset ι
ha : a ∉ s
ih : ∀ (d : σ →₀ ℕ), (coeff R d) (∏ j ∈ s, f j) = ∑ l ∈ s.finsuppAntidiag d, ∏ i ∈ s, (coeff R (l i)) (f i)
d : σ →₀ ℕ
⊢ ∀ (a_1 b : σ →₀ ℕ),
    a_1 + b = d →
      ∀ (a_3 b_1 : σ →₀ ℕ),
        a_3 + b_1 = d →
          (a_1 = a_3 → ¬b = b_1) →
            ∀ a_6 ∈ s.finsuppAntidiag b, ∀ x ∈ s.finsuppAntidiag b_1, ¬x.update a a_3 = a_6.update a a_1
state_after: case insert
σ : Type u_1
R✝ : Type u_2
R : Type u_3
inst✝² : CommSemiring R
ι : Type u_4
inst✝¹ : DecidableEq ι
inst✝ : DecidableEq σ
f : ι → MvPowerSeries σ R
a : ι
s : Finset ι
ha : a ∉ s
ih : ∀ (d : σ →₀ ℕ), (coeff R d) (∏ j ∈ s, f j) = ∑ l ∈ s.finsuppAntidiag d, ∏ i ∈ s, (coeff R (l i)) (f i)
u v u' v' : σ →₀ ℕ
huv : u' + v' = u + v
h : u = u' → ¬v = v'
k l : ι →₀ σ →₀ ℕ
hkl : l.update a u' = k.update a u
⊢ False

tactic: obtain rfl : u' = u := by
  simpa only [Finsupp.coe_update, Function.update_same] using DFunLike.congr_fun hkl a
state_before: case insert
σ : Type u_1
R✝ : Type u_2
R : Type u_3
inst✝² : CommSemiring R
ι : Type u_4
inst✝¹ : DecidableEq ι
inst✝ : DecidableEq σ
f : ι → MvPowerSeries σ R
a : ι
s : Finset ι
ha : a ∉ s
ih : ∀ (d : σ →₀ ℕ), (coeff R d) (∏ j ∈ s, f j) = ∑ l ∈ s.finsuppAntidiag d, ∏ i ∈ s, (coeff R (l i)) (f i)
u v u' v' : σ →₀ ℕ
huv : u' + v' = u + v
h : u = u' → ¬v = v'
k l : ι →₀ σ →₀ ℕ
hkl : l.update a u' = k.update a u
⊢ False
state_after: case insert
σ : Type u_1
R✝ : Type u_2
R : Type u_3
inst✝² : CommSemiring R
ι : Type u_4
inst✝¹ : DecidableEq ι
inst✝ : DecidableEq σ
f : ι → MvPowerSeries σ R
a : ι
s : Finset ι
ha : a ∉ s
ih : ∀ (d : σ →₀ ℕ), (coeff R d) (∏ j ∈ s, f j) = ∑ l ∈ s.finsuppAntidiag d, ∏ i ∈ s, (coeff R (l i)) (f i)
v u' v' : σ →₀ ℕ
k l : ι →₀ σ →₀ ℕ
huv : u' + v' = u' + v
h : u' = u' → ¬v = v'
hkl : l.update a u' = k.update a u'
⊢ False

tactic: simp only [add_right_inj] at huv
state_before: case insert
σ : Type u_1
R✝ : Type u_2
R : Type u_3
inst✝² : CommSemiring R
ι : Type u_4
inst✝¹ : DecidableEq ι
inst✝ : DecidableEq σ
f : ι → MvPowerSeries σ R
a : ι
s : Finset ι
ha : a ∉ s
ih : ∀ (d : σ →₀ ℕ), (coeff R d) (∏ j ∈ s, f j) = ∑ l ∈ s.finsuppAntidiag d, ∏ i ∈ s, (coeff R (l i)) (f i)
v u' v' : σ →₀ ℕ
k l : ι →₀ σ →₀ ℕ
huv : u' + v' = u' + v
h : u' = u' → ¬v = v'
hkl : l.update a u' = k.update a u'
⊢ False
state_after: case insert
σ : Type u_1
R✝ : Type u_2
R : Type u_3
inst✝² : CommSemiring R
ι : Type u_4
inst✝¹ : DecidableEq ι
inst✝ : DecidableEq σ
f : ι → MvPowerSeries σ R
a : ι
s : Finset ι
ha : a ∉ s
ih : ∀ (d : σ →₀ ℕ), (coeff R d) (∏ j ∈ s, f j) = ∑ l ∈ s.finsuppAntidiag d, ∏ i ∈ s, (coeff R (l i)) (f i)
v u' v' : σ →₀ ℕ
k l : ι →₀ σ →₀ ℕ
h : u' = u' → ¬v = v'
hkl : l.update a u' = k.update a u'
huv : v' = v
⊢ False

tactic: exact h rfl huv.symm
state_before: case insert
σ : Type u_1
R✝ : Type u_2
R : Type u_3
inst✝² : CommSemiring R
ι : Type u_4
inst✝¹ : DecidableEq ι
inst✝ : DecidableEq σ
f : ι → MvPowerSeries σ R
a : ι
s : Finset ι
ha : a ∉ s
ih : ∀ (d : σ →₀ ℕ), (coeff R d) (∏ j ∈ s, f j) = ∑ l ∈ s.finsuppAntidiag d, ∏ i ∈ s, (coeff R (l i)) (f i)
v u' v' : σ →₀ ℕ
k l : ι →₀ σ →₀ ℕ
h : u' = u' → ¬v = v'
hkl : l.update a u' = k.update a u'
huv : v' = v
⊢ False
state_after: no goals

tactic: simpa only [Finsupp.coe_update, Function.update_same] using DFunLike.congr_fun hkl a
state_before: σ : Type u_1
R✝ : Type u_2
R : Type u_3
inst✝² : CommSemiring R
ι : Type u_4
inst✝¹ : DecidableEq ι
inst✝ : DecidableEq σ
f : ι → MvPowerSeries σ R
a : ι
s : Finset ι
ha : a ∉ s
ih : ∀ (d : σ →₀ ℕ), (coeff R d) (∏ j ∈ s, f j) = ∑ l ∈ s.finsuppAntidiag d, ∏ i ∈ s, (coeff R (l i)) (f i)
u v u' v' : σ →₀ ℕ
huv : u' + v' = u + v
h : u = u' → ¬v = v'
k l : ι →₀ σ →₀ ℕ
hkl : l.update a u' = k.update a u
⊢ u' = u
state_after: no goals