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

tactic: intro x hx
state_before: ι : Type u_1
κ : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
s✝ s₁ s₂ : Finset α
a : α
f✝ g : α → β
inst✝ : CommMonoid β
s : Finset α
hc : s.card ≤ 1
f : α → β
b : β
h : ∏ x ∈ s, f x = b
⊢ ∀ x ∈ s, f x = b
state_after: ι : Type u_1
κ : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
s✝ s₁ s₂ : Finset α
a : α
f✝ g : α → β
inst✝ : CommMonoid β
s : Finset α
hc : s.card ≤ 1
f : α → β
b : β
h : ∏ x ∈ s, f x = b
x : α
hx : x ∈ s
⊢ f x = b

tactic: by_cases hc0 : s.card = 0
state_before: ι : Type u_1
κ : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
s✝ s₁ s₂ : Finset α
a : α
f✝ g : α → β
inst✝ : CommMonoid β
s : Finset α
hc : s.card ≤ 1
f : α → β
b : β
h : ∏ x ∈ s, f x = b
x : α
hx : x ∈ s
⊢ f x = b
state_after: case pos
ι : Type u_1
κ : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
s✝ s₁ s₂ : Finset α
a : α
f✝ g : α → β
inst✝ : CommMonoid β
s : Finset α
hc : s.card ≤ 1
f : α → β
b : β
h : ∏ x ∈ s, f x = b
x : α
hx : x ∈ s
hc0 : s.card = 0
⊢ f x = b

case neg
ι : Type u_1
κ : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
s✝ s₁ s₂ : Finset α
a : α
f✝ g : α → β
inst✝ : CommMonoid β
s : Finset α
hc : s.card ≤ 1
f : α → β
b : β
h : ∏ x ∈ s, f x = b
x : α
hx : x ∈ s
hc0 : ¬s.card = 0
⊢ f x = b

tactic: exact False.elim (card_ne_zero_of_mem hx hc0)
state_before: case pos
ι : Type u_1
κ : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
s✝ s₁ s₂ : Finset α
a : α
f✝ g : α → β
inst✝ : CommMonoid β
s : Finset α
hc : s.card ≤ 1
f : α → β
b : β
h : ∏ x ∈ s, f x = b
x : α
hx : x ∈ s
hc0 : s.card = 0
⊢ f x = b
state_after: no goals

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_1
κ : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
s✝ s₁ s₂ : Finset α
a : α
f✝ g : α → β
inst✝ : CommMonoid β
s : Finset α
hc : s.card ≤ 1
f : α → β
b : β
h : ∏ x ∈ s, f x = b
x : α
hx : x ∈ s
hc0 : ¬s.card = 0
⊢ f x = b
state_after: case neg
ι : Type u_1
κ : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
s✝ s₁ s₂ : Finset α
a : α
f✝ g : α → β
inst✝ : CommMonoid β
s : Finset α
hc : s.card ≤ 1
f : α → β
b : β
h : ∏ x ∈ s, f x = b
x : α
hx : x ∈ s
hc0 : ¬s.card = 0
h1 : s.card = 1
⊢ f x = b

tactic: rw [card_eq_one] at h1
state_before: case neg
ι : Type u_1
κ : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
s✝ s₁ s₂ : Finset α
a : α
f✝ g : α → β
inst✝ : CommMonoid β
s : Finset α
hc : s.card ≤ 1
f : α → β
b : β
h : ∏ x ∈ s, f x = b
x : α
hx : x ∈ s
hc0 : ¬s.card = 0
h1 : s.card = 1
⊢ f x = b
state_after: case neg
ι : Type u_1
κ : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
s✝ s₁ s₂ : Finset α
a : α
f✝ g : α → β
inst✝ : CommMonoid β
s : Finset α
hc : s.card ≤ 1
f : α → β
b : β
h : ∏ x ∈ s, f x = b
x : α
hx : x ∈ s
hc0 : ¬s.card = 0
h1 : ∃ a, s = {a}
⊢ f x = b

tactic: cases' h1 with x2 hx2
state_before: case neg
ι : Type u_1
κ : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
s✝ s₁ s₂ : Finset α
a : α
f✝ g : α → β
inst✝ : CommMonoid β
s : Finset α
hc : s.card ≤ 1
f : α → β
b : β
h : ∏ x ∈ s, f x = b
x : α
hx : x ∈ s
hc0 : ¬s.card = 0
h1 : ∃ a, s = {a}
⊢ f x = b
state_after: case neg.intro
ι : Type u_1
κ : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
s✝ s₁ s₂ : Finset α
a : α
f✝ g : α → β
inst✝ : CommMonoid β
s : Finset α
hc : s.card ≤ 1
f : α → β
b : β
h : ∏ x ∈ s, f x = b
x : α
hx : x ∈ s
hc0 : ¬s.card = 0
x2 : α
hx2 : s = {x2}
⊢ f x = b

tactic: rw [hx2, mem_singleton] at hx
state_before: case neg.intro
ι : Type u_1
κ : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
s✝ s₁ s₂ : Finset α
a : α
f✝ g : α → β
inst✝ : CommMonoid β
s : Finset α
hc : s.card ≤ 1
f : α → β
b : β
h : ∏ x ∈ s, f x = b
x : α
hx : x ∈ s
hc0 : ¬s.card = 0
x2 : α
hx2 : s = {x2}
⊢ f x = b
state_after: case neg.intro
ι : Type u_1
κ : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
s✝ s₁ s₂ : Finset α
a : α
f✝ g : α → β
inst✝ : CommMonoid β
s : Finset α
hc : s.card ≤ 1
f : α → β
b : β
h : ∏ x ∈ s, f x = b
x : α
hc0 : ¬s.card = 0
x2 : α
hx : x = x2
hx2 : s = {x2}
⊢ f x = b

tactic: simp_rw [hx2] at h
state_before: case neg.intro
ι : Type u_1
κ : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
s✝ s₁ s₂ : Finset α
a : α
f✝ g : α → β
inst✝ : CommMonoid β
s : Finset α
hc : s.card ≤ 1
f : α → β
b : β
h : ∏ x ∈ s, f x = b
x : α
hc0 : ¬s.card = 0
x2 : α
hx : x = x2
hx2 : s = {x2}
⊢ f x = b
state_after: case neg.intro
ι : Type u_1
κ : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
s✝ s₁ s₂ : Finset α
a : α
f✝ g : α → β
inst✝ : CommMonoid β
s : Finset α
hc : s.card ≤ 1
f : α → β
b : β
x : α
hc0 : ¬s.card = 0
x2 : α
hx : x = x2
hx2 : s = {x2}
h : ∏ x ∈ {x2}, f x = b
⊢ f x = b

tactic: rw [hx]
state_before: case neg.intro
ι : Type u_1
κ : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
s✝ s₁ s₂ : Finset α
a : α
f✝ g : α → β
inst✝ : CommMonoid β
s : Finset α
hc : s.card ≤ 1
f : α → β
b : β
x : α
hc0 : ¬s.card = 0
x2 : α
hx : x = x2
hx2 : s = {x2}
h : ∏ x ∈ {x2}, f x = b
⊢ f x = b
state_after: case neg.intro
ι : Type u_1
κ : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
s✝ s₁ s₂ : Finset α
a : α
f✝ g : α → β
inst✝ : CommMonoid β
s : Finset α
hc : s.card ≤ 1
f : α → β
b : β
x : α
hc0 : ¬s.card = 0
x2 : α
hx : x = x2
hx2 : s = {x2}
h : ∏ x ∈ {x2}, f x = b
⊢ f x2 = b

tactic: rw [prod_singleton] at h
state_before: case neg.intro
ι : Type u_1
κ : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
s✝ s₁ s₂ : Finset α
a : α
f✝ g : α → β
inst✝ : CommMonoid β
s : Finset α
hc : s.card ≤ 1
f : α → β
b : β
x : α
hc0 : ¬s.card = 0
x2 : α
hx : x = x2
hx2 : s = {x2}
h : ∏ x ∈ {x2}, f x = b
⊢ f x2 = b
state_after: case neg.intro
ι : Type u_1
κ : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
s✝ s₁ s₂ : Finset α
a : α
f✝ g : α → β
inst✝ : CommMonoid β
s : Finset α
hc : s.card ≤ 1
f : α → β
b : β
x : α
hc0 : ¬s.card = 0
x2 : α
hx : x = x2
hx2 : s = {x2}
h : f x2 = b
⊢ f x2 = b

tactic: exact h
state_before: case neg.intro
ι : Type u_1
κ : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
s✝ s₁ s₂ : Finset α
a : α
f✝ g : α → β
inst✝ : CommMonoid β
s : Finset α
hc : s.card ≤ 1
f : α → β
b : β
x : α
hc0 : ¬s.card = 0
x2 : α
hx : x = x2
hx2 : s = {x2}
h : f x2 = b
⊢ f x2 = b
state_after: no goals