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

tactic: intro x hx
state_before: ι : Type ?u.793618
β : Type u
α : Type v
γ : Type w
s✝ s₁ s₂ : Finset α
a : α
f✝ g : α → β
inst✝ : CommMonoid β
s : Finset α
hc : card s ≤ 1
f : α → β
b : β
h : ∏ x in s, f x = b
⊢ ∀ (x : α), x ∈ s → f x = b

tactic: by_cases hc0 : s.card = 0
state_before: ι : Type ?u.793618
β : Type u
α : Type v
γ : Type w
s✝ s₁ s₂ : Finset α
a : α
f✝ g : α → β
inst✝ : CommMonoid β
s : Finset α
hc : card s ≤ 1
f : α → β
b : β
h : ∏ x in s, f x = b
x : α
hx : x ∈ s
⊢ f x = b

tactic: exact False.elim (card_ne_zero_of_mem hx hc0)
state_before: case pos
ι : Type ?u.793618
β : Type u
α : Type v
γ : Type w
s✝ s₁ s₂ : Finset α
a : α
f✝ g : α → β
inst✝ : CommMonoid β
s : Finset α
hc : card s ≤ 1
f : α → β
b : β
h : ∏ x in s, f x = b
x : α
hx : x ∈ s
hc0 : card s = 0
⊢ f x = b

tactic: have h1 : s.card = 1 := le_antisymm hc (Nat.one_le_of_lt (Nat.pos_of_ne_zero hc0))
state_before: case neg
ι : Type ?u.793618
β : Type u
α : Type v
γ : Type w
s✝ s₁ s₂ : Finset α
a : α
f✝ g : α → β
inst✝ : CommMonoid β
s : Finset α
hc : card s ≤ 1
f : α → β
b : β
h : ∏ x in s, f x = b
x : α
hx : x ∈ s
hc0 : ¬card s = 0
⊢ f x = b

tactic: rw [card_eq_one] at h1
state_before: case neg
ι : Type ?u.793618
β : Type u
α : Type v
γ : Type w
s✝ s₁ s₂ : Finset α
a : α
f✝ g : α → β
inst✝ : CommMonoid β
s : Finset α
hc : card s ≤ 1
f : α → β
b : β
h : ∏ x in s, f x = b
x : α
hx : x ∈ s
hc0 : ¬card s = 0
h1 : card s = 1
⊢ f x = b

tactic: cases' h1 with x2 hx2
state_before: case neg
ι : Type ?u.793618
β : Type u
α : Type v
γ : Type w
s✝ s₁ s₂ : Finset α
a : α
f✝ g : α → β
inst✝ : CommMonoid β
s : Finset α
hc : card s ≤ 1
f : α → β
b : β
h : ∏ x in s, f x = b
x : α
hx : x ∈ s
hc0 : ¬card s = 0
h1 : ∃ a, s = {a}
⊢ f x = b

tactic: rw [hx2, mem_singleton] at hx
state_before: case neg.intro
ι : Type ?u.793618
β : Type u
α : Type v
γ : Type w
s✝ s₁ s₂ : Finset α
a : α
f✝ g : α → β
inst✝ : CommMonoid β
s : Finset α
hc : card s ≤ 1
f : α → β
b : β
h : ∏ x in s, f x = b
x : α
hx : x ∈ s
hc0 : ¬card s = 0
x2 : α
hx2 : s = {x2}
⊢ f x = b

tactic: simp_rw [hx2] at h
state_before: case neg.intro
ι : Type ?u.793618
β : Type u
α : Type v
γ : Type w
s✝ s₁ s₂ : Finset α
a : α
f✝ g : α → β
inst✝ : CommMonoid β
s : Finset α
hc : card s ≤ 1
f : α → β
b : β
h : ∏ x in s, f x = b
x : α
hc0 : ¬card s = 0
x2 : α
hx : x = x2
hx2 : s = {x2}
⊢ f x = b

tactic: rw [hx]
state_before: case neg.intro
ι : Type ?u.793618
β : Type u
α : Type v
γ : Type w
s✝ s₁ s₂ : Finset α
a : α
f✝ g : α → β
inst✝ : CommMonoid β
s : Finset α
hc : card s ≤ 1
f : α → β
b : β
x : α
hc0 : ¬card s = 0
x2 : α
hx : x = x2
hx2 : s = {x2}
h : ∏ x in {x2}, f x = b
⊢ f x = b

tactic: rw [prod_singleton] at h
state_before: case neg.intro
ι : Type ?u.793618
β : Type u
α : Type v
γ : Type w
s✝ s₁ s₂ : Finset α
a : α
f✝ g : α → β
inst✝ : CommMonoid β
s : Finset α
hc : card s ≤ 1
f : α → β
b : β
x : α
hc0 : ¬card s = 0
x2 : α
hx : x = x2
hx2 : s = {x2}
h : ∏ x in {x2}, f x = b
⊢ f x2 = b

tactic: exact h
state_before: case neg.intro
ι : Type ?u.793618
β : Type u
α : Type v
γ : Type w
s✝ s₁ s₂ : Finset α
a : α
f✝ g : α → β
inst✝ : CommMonoid β
s : Finset α
hc : card s ≤ 1
f : α → β
b : β
x : α
hc0 : ¬card s = 0
x2 : α
hx : x = x2
hx2 : s = {x2}
h : f x2 = b
⊢ f x2 = b