Theorem: Finset.exists_of_one_lt_card_pi
File: Mathlib/Data/Finset/Card.lean

Proof steps:
state_before: α✝ : Type u_1
β : Type u_2
R : Type u_3
s✝ t u : Finset α✝
f : α✝ → β
n : ℕ
ι : Type u_4
α : ι → Type u_5
inst✝ : (i : ι) → DecidableEq (α i)
s : Finset ((i : ι) → α i)
h : 1 < s.card
⊢ ∃ i, 1 < (image (fun x => x i) s).card ∧ ∀ (ai : α i), filter (fun x => x i = ai) s ⊂ s
state_after: α✝ : Type u_1
β : Type u_2
R : Type u_3
s✝ t u : Finset α✝
f : α✝ → β
n : ℕ
ι : Type u_4
α : ι → Type u_5
inst✝ : (i : ι) → DecidableEq (α i)
s : Finset ((i : ι) → α i)
h : ∃ a b, a ∈ s ∧ b ∈ s ∧ ∃ a_1, a a_1 ≠ b a_1
⊢ ∃ i,
    (∃ a b, a ∈ image (fun x => x i) s ∧ b ∈ image (fun x => x i) s ∧ a ≠ b) ∧
      ∀ (ai : α i), filter (fun x => x i = ai) s ⊂ s
tactic: simp_rw [one_lt_card_iff, Function.ne_iff] at h ⊢
state_before: α✝ : Type u_1
β : Type u_2
R : Type u_3
s✝ t u : Finset α✝
f : α✝ → β
n : ℕ
ι : Type u_4
α : ι → Type u_5
inst✝ : (i : ι) → DecidableEq (α i)
s : Finset ((i : ι) → α i)
h : ∃ a b, a ∈ s ∧ b ∈ s ∧ ∃ a_1, a a_1 ≠ b a_1
⊢ ∃ i,
    (∃ a b, a ∈ image (fun x => x i) s ∧ b ∈ image (fun x => x i) s ∧ a ≠ b) ∧
      ∀ (ai : α i), filter (fun x => x i = ai) s ⊂ s
state_after: case intro.intro.intro.intro.intro
α✝ : Type u_1
β : Type u_2
R : Type u_3
s✝ t u : Finset α✝
f : α✝ → β
n : ℕ
ι : Type u_4
α : ι → Type u_5
inst✝ : (i : ι) → DecidableEq (α i)
s : Finset ((i : ι) → α i)
a1 a2 : (i : ι) → α i
h1 : a1 ∈ s
h2 : a2 ∈ s
i : ι
hne : a1 i ≠ a2 i
⊢ ∃ i,
    (∃ a b, a ∈ image (fun x => x i) s ∧ b ∈ image (fun x => x i) s ∧ a ≠ b) ∧
      ∀ (ai : α i), filter (fun x => x i = ai) s ⊂ s
tactic: obtain ⟨a1, a2, h1, h2, i, hne⟩ := h
state_before: case intro.intro.intro.intro.intro
α✝ : Type u_1
β : Type u_2
R : Type u_3
s✝ t u : Finset α✝
f : α✝ → β
n : ℕ
ι : Type u_4
α : ι → Type u_5
inst✝ : (i : ι) → DecidableEq (α i)
s : Finset ((i : ι) → α i)
a1 a2 : (i : ι) → α i
h1 : a1 ∈ s
h2 : a2 ∈ s
i : ι
hne : a1 i ≠ a2 i
⊢ ∃ i,
    (∃ a b, a ∈ image (fun x => x i) s ∧ b ∈ image (fun x => x i) s ∧ a ≠ b) ∧
      ∀ (ai : α i), filter (fun x => x i = ai) s ⊂ s
state_after: case intro.intro.intro.intro.intro
α✝ : Type u_1
β : Type u_2
R : Type u_3
s✝ t u : Finset α✝
f : α✝ → β
n : ℕ
ι : Type u_4
α : ι → Type u_5
inst✝ : (i : ι) → DecidableEq (α i)
s : Finset ((i : ι) → α i)
a1 a2 : (i : ι) → α i
h1 : a1 ∈ s
h2 : a2 ∈ s
i : ι
hne : a1 i ≠ a2 i
ai : α i
⊢ filter (fun x => x i = ai) s ⊂ s
tactic: refine ⟨i, ⟨_, _, mem_image_of_mem _ h1, mem_image_of_mem _ h2, hne⟩, fun ai => ?_⟩
state_before: case intro.intro.intro.intro.intro
α✝ : Type u_1
β : Type u_2
R : Type u_3
s✝ t u : Finset α✝
f : α✝ → β
n : ℕ
ι : Type u_4
α : ι → Type u_5
inst✝ : (i : ι) → DecidableEq (α i)
s : Finset ((i : ι) → α i)
a1 a2 : (i : ι) → α i
h1 : a1 ∈ s
h2 : a2 ∈ s
i : ι
hne : a1 i ≠ a2 i
ai : α i
⊢ filter (fun x => x i = ai) s ⊂ s
state_after: case intro.intro.intro.intro.intro
α✝ : Type u_1
β : Type u_2
R : Type u_3
s✝ t u : Finset α✝
f : α✝ → β
n : ℕ
ι : Type u_4
α : ι → Type u_5
inst✝ : (i : ι) → DecidableEq (α i)
s : Finset ((i : ι) → α i)
a1 a2 : (i : ι) → α i
h1 : a1 ∈ s
h2 : a2 ∈ s
i : ι
hne : a1 i ≠ a2 i
ai : α i
⊢ ∃ x ∈ s, ¬x i = ai
tactic: rw [filter_ssubset]
state_before: case intro.intro.intro.intro.intro
α✝ : Type u_1
β : Type u_2
R : Type u_3
s✝ t u : Finset α✝
f : α✝ → β
n : ℕ
ι : Type u_4
α : ι → Type u_5
inst✝ : (i : ι) → DecidableEq (α i)
s : Finset ((i : ι) → α i)
a1 a2 : (i : ι) → α i
h1 : a1 ∈ s
h2 : a2 ∈ s
i : ι
hne : a1 i ≠ a2 i
ai : α i
⊢ ∃ x ∈ s, ¬x i = ai
state_after: case intro.intro.intro.intro.intro.inl
α✝ : Type u_1
β : Type u_2
R : Type u_3
s✝ t u : Finset α✝
f : α✝ → β
n : ℕ
ι : Type u_4
α : ι → Type u_5
inst✝ : (i : ι) → DecidableEq (α i)
s : Finset ((i : ι) → α i)
a1 a2 : (i : ι) → α i
h1 : a1 ∈ s
h2 : a2 ∈ s
i : ι
hne : a1 i ≠ a2 i
⊢ ∃ x ∈ s, ¬x i = a2 i

case intro.intro.intro.intro.intro.inr
α✝ : Type u_1
β : Type u_2
R : Type u_3
s✝ t u : Finset α✝
f : α✝ → β
n : ℕ
ι : Type u_4
α : ι → Type u_5
inst✝ : (i : ι) → DecidableEq (α i)
s : Finset ((i : ι) → α i)
a1 a2 : (i : ι) → α i
h1 : a1 ∈ s
h2 : a2 ∈ s
i : ι
hne✝ : a1 i ≠ a2 i
ai : α i
hne : a2 i ≠ ai
⊢ ∃ x ∈ s, ¬x i = ai
tactic: obtain rfl | hne := eq_or_ne (a2 i) ai
state_before: case intro.intro.intro.intro.intro.inl
α✝ : Type u_1
β : Type u_2
R : Type u_3
s✝ t u : Finset α✝
f : α✝ → β
n : ℕ
ι : Type u_4
α : ι → Type u_5
inst✝ : (i : ι) → DecidableEq (α i)
s : Finset ((i : ι) → α i)
a1 a2 : (i : ι) → α i
h1 : a1 ∈ s
h2 : a2 ∈ s
i : ι
hne : a1 i ≠ a2 i
⊢ ∃ x ∈ s, ¬x i = a2 i

case intro.intro.intro.intro.intro.inr
α✝ : Type u_1
β : Type u_2
R : Type u_3
s✝ t u : Finset α✝
f : α✝ → β
n : ℕ
ι : Type u_4
α : ι → Type u_5
inst✝ : (i : ι) → DecidableEq (α i)
s : Finset ((i : ι) → α i)
a1 a2 : (i : ι) → α i
h1 : a1 ∈ s
h2 : a2 ∈ s
i : ι
hne✝ : a1 i ≠ a2 i
ai : α i
hne : a2 i ≠ ai
⊢ ∃ x ∈ s, ¬x i = ai
state_after: no goals
tactic: exacts [⟨a1, h1, hne⟩, ⟨a2, h2, hne⟩]