Theorem: Finset.prod_dite_eq
File: Mathlib/Algebra/BigOperators/Basic.lean

tactic: split_ifs with h
state_before: ι : Type ?u.411026
β : Type u
α : Type v
γ : Type w
s✝ s₁ s₂ : Finset α
a✝ : α
f g : α → β
inst✝¹ : CommMonoid β
inst✝ : DecidableEq α
s : Finset α
a : α
b : (x : α) → a = x → β
⊢ (∏ x in s, if h : a = x then b x h else 1) = if a ∈ s then b a (_ : a = a) else 1

tactic: rw [Finset.prod_eq_single a, dif_pos rfl]
state_before: case inl
ι : Type ?u.411026
β : Type u
α : Type v
γ : Type w
s✝ s₁ s₂ : Finset α
a✝ : α
f g : α → β
inst✝¹ : CommMonoid β
inst✝ : DecidableEq α
s : Finset α
a : α
b : (x : α) → a = x → β
h : a ∈ s
⊢ (∏ x in s, if h : a = x then b x h else 1) = b a (_ : a = a)

tactic: intros _ _ h
state_before: case inl.h₀
ι : Type ?u.411026
β : Type u
α : Type v
γ : Type w
s✝ s₁ s₂ : Finset α
a✝ : α
f g : α → β
inst✝¹ : CommMonoid β
inst✝ : DecidableEq α
s : Finset α
a : α
b : (x : α) → a = x → β
h : a ∈ s
⊢ ∀ (b_1 : α), b_1 ∈ s → b_1 ≠ a → (if h : a = b_1 then b b_1 h else 1) = 1

tactic: rw [dif_neg]
state_before: case inl.h₀
ι : Type ?u.411026
β : Type u
α : Type v
γ : Type w
s✝ s₁ s₂ : Finset α
a✝¹ : α
f g : α → β
inst✝¹ : CommMonoid β
inst✝ : DecidableEq α
s : Finset α
a : α
b : (x : α) → a = x → β
h✝ : a ∈ s
b✝ : α
a✝ : b✝ ∈ s
h : b✝ ≠ a
⊢ (if h : a = b✝ then b b✝ h else 1) = 1

tactic: exact h.symm
state_before: case inl.h₀.hnc
ι : Type ?u.411026
β : Type u
α : Type v
γ : Type w
s✝ s₁ s₂ : Finset α
a✝¹ : α
f g : α → β
inst✝¹ : CommMonoid β
inst✝ : DecidableEq α
s : Finset α
a : α
b : (x : α) → a = x → β
h✝ : a ∈ s
b✝ : α
a✝ : b✝ ∈ s
h : b✝ ≠ a
⊢ ¬a = b✝

tactic: simp [h]
state_before: case inl.h₁
ι : Type ?u.411026
β : Type u
α : Type v
γ : Type w
s✝ s₁ s₂ : Finset α
a✝ : α
f g : α → β
inst✝¹ : CommMonoid β
inst✝ : DecidableEq α
s : Finset α
a : α
b : (x : α) → a = x → β
h : a ∈ s
⊢ ¬a ∈ s → (if h : a = a then b a h else 1) = 1

tactic: rw [Finset.prod_eq_one]
state_before: case inr
ι : Type ?u.411026
β : Type u
α : Type v
γ : Type w
s✝ s₁ s₂ : Finset α
a✝ : α
f g : α → β
inst✝¹ : CommMonoid β
inst✝ : DecidableEq α
s : Finset α
a : α
b : (x : α) → a = x → β
h : ¬a ∈ s
⊢ (∏ x in s, if h : a = x then b x h else 1) = 1

tactic: intros
state_before: case inr
ι : Type ?u.411026
β : Type u
α : Type v
γ : Type w
s✝ s₁ s₂ : Finset α
a✝ : α
f g : α → β
inst✝¹ : CommMonoid β
inst✝ : DecidableEq α
s : Finset α
a : α
b : (x : α) → a = x → β
h : ¬a ∈ s
⊢ ∀ (x : α), x ∈ s → (if h : a = x then b x h else 1) = 1

tactic: rw [dif_neg]
state_before: case inr
ι : Type ?u.411026
β : Type u
α : Type v
γ : Type w
s✝ s₁ s₂ : Finset α
a✝¹ : α
f g : α → β
inst✝¹ : CommMonoid β
inst✝ : DecidableEq α
s : Finset α
a : α
b : (x : α) → a = x → β
h : ¬a ∈ s
x✝ : α
a✝ : x✝ ∈ s
⊢ (if h : a = x✝ then b x✝ h else 1) = 1

tactic: rintro rfl
state_before: case inr.hnc
ι : Type ?u.411026
β : Type u
α : Type v
γ : Type w
s✝ s₁ s₂ : Finset α
a✝¹ : α
f g : α → β
inst✝¹ : CommMonoid β
inst✝ : DecidableEq α
s : Finset α
a : α
b : (x : α) → a = x → β
h : ¬a ∈ s
x✝ : α
a✝ : x✝ ∈ s
⊢ ¬a = x✝

tactic: contradiction
state_before: case inr.hnc
ι : Type ?u.411026
β : Type u
α : Type v
γ : Type w
s✝ s₁ s₂ : Finset α
a✝¹ : α
f g : α → β
inst✝¹ : CommMonoid β
inst✝ : DecidableEq α
s : Finset α
a : α
b : (x : α) → a = x → β
h : ¬a ∈ s
a✝ : a ∈ s
⊢ False