Theorem: Finsupp.mul_prod_erase
File: Mathlib/Algebra/BigOperators/Finsupp.lean

tactic: classical
  rw [Finsupp.prod, Finsupp.prod, ← Finset.mul_prod_erase _ _ hyf, Finsupp.support_erase,
    Finset.prod_congr rfl]
  intro h hx
  rw [Finsupp.erase_ne (ne_of_mem_erase hx)]
state_before: α : Type u_1
ι : Type ?u.140006
γ : Type ?u.140009
A : Type ?u.140012
B : Type ?u.140015
C : Type ?u.140018
inst✝⁵ : AddCommMonoid A
inst✝⁴ : AddCommMonoid B
inst✝³ : AddCommMonoid C
t : ι → A → C
h0 : ∀ (i : ι), t i 0 = 0
h1 : ∀ (i : ι) (x y : A), t i (x + y) = t i x + t i y
s : Finset α
f✝ : α → ι →₀ A
i : ι
g✝ : ι →₀ A
k : ι → A → γ → B
x : γ
β : Type ?u.143148
M : Type u_2
M' : Type ?u.143154
N : Type u_3
P : Type ?u.143160
G : Type ?u.143163
H : Type ?u.143166
R : Type ?u.143169
S : Type ?u.143172
inst✝² : Zero M
inst✝¹ : Zero M'
inst✝ : CommMonoid N
f : α →₀ M
y : α
g : α → M → N
hyf : y ∈ f.support
⊢ g y (↑f y) * prod (erase y f) g = prod f g

tactic: rw [Finsupp.prod, Finsupp.prod, ← Finset.mul_prod_erase _ _ hyf, Finsupp.support_erase,
  Finset.prod_congr rfl]
state_before: α : Type u_1
ι : Type ?u.140006
γ : Type ?u.140009
A : Type ?u.140012
B : Type ?u.140015
C : Type ?u.140018
inst✝⁵ : AddCommMonoid A
inst✝⁴ : AddCommMonoid B
inst✝³ : AddCommMonoid C
t : ι → A → C
h0 : ∀ (i : ι), t i 0 = 0
h1 : ∀ (i : ι) (x y : A), t i (x + y) = t i x + t i y
s : Finset α
f✝ : α → ι →₀ A
i : ι
g✝ : ι →₀ A
k : ι → A → γ → B
x : γ
β : Type ?u.143148
M : Type u_2
M' : Type ?u.143154
N : Type u_3
P : Type ?u.143160
G : Type ?u.143163
H : Type ?u.143166
R : Type ?u.143169
S : Type ?u.143172
inst✝² : Zero M
inst✝¹ : Zero M'
inst✝ : CommMonoid N
f : α →₀ M
y : α
g : α → M → N
hyf : y ∈ f.support
⊢ g y (↑f y) * prod (erase y f) g = prod f g

tactic: intro h hx
state_before: α : Type u_1
ι : Type ?u.140006
γ : Type ?u.140009
A : Type ?u.140012
B : Type ?u.140015
C : Type ?u.140018
inst✝⁵ : AddCommMonoid A
inst✝⁴ : AddCommMonoid B
inst✝³ : AddCommMonoid C
t : ι → A → C
h0 : ∀ (i : ι), t i 0 = 0
h1 : ∀ (i : ι) (x y : A), t i (x + y) = t i x + t i y
s : Finset α
f✝ : α → ι →₀ A
i : ι
g✝ : ι →₀ A
k : ι → A → γ → B
x : γ
β : Type ?u.143148
M : Type u_2
M' : Type ?u.143154
N : Type u_3
P : Type ?u.143160
G : Type ?u.143163
H : Type ?u.143166
R : Type ?u.143169
S : Type ?u.143172
inst✝² : Zero M
inst✝¹ : Zero M'
inst✝ : CommMonoid N
f : α →₀ M
y : α
g : α → M → N
hyf : y ∈ f.support
⊢ ∀ (x : α), x ∈ Finset.erase f.support y → g x (↑(erase y f) x) = g x (↑f x)

tactic: rw [Finsupp.erase_ne (ne_of_mem_erase hx)]
state_before: α : Type u_1
ι : Type ?u.140006
γ : Type ?u.140009
A : Type ?u.140012
B : Type ?u.140015
C : Type ?u.140018
inst✝⁵ : AddCommMonoid A
inst✝⁴ : AddCommMonoid B
inst✝³ : AddCommMonoid C
t : ι → A → C
h0 : ∀ (i : ι), t i 0 = 0
h1 : ∀ (i : ι) (x y : A), t i (x + y) = t i x + t i y
s : Finset α
f✝ : α → ι →₀ A
i : ι
g✝ : ι →₀ A
k : ι → A → γ → B
x : γ
β : Type ?u.143148
M : Type u_2
M' : Type ?u.143154
N : Type u_3
P : Type ?u.143160
G : Type ?u.143163
H : Type ?u.143166
R : Type ?u.143169
S : Type ?u.143172
inst✝² : Zero M
inst✝¹ : Zero M'
inst✝ : CommMonoid N
f : α →₀ M
y : α
g : α → M → N
hyf : y ∈ f.support
h : α
hx : h ∈ Finset.erase f.support y
⊢ g h (↑(erase y f) h) = g h (↑f h)