Theorem: Infinite.exists_superset_card_eq
File: Mathlib/Data/Fintype/Card.lean

tactic: induction' n with n IH generalizing s
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : Infinite α
s : Finset α
n : ℕ
hn : s.card ≤ n
⊢ ∃ t, s ⊆ t ∧ t.card = n
state_after: case zero
α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : Infinite α
s : Finset α
hn : s.card ≤ 0
⊢ ∃ t, s ⊆ t ∧ t.card = 0

case succ
α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : Infinite α
n : ℕ
IH : ∀ (s : Finset α), s.card ≤ n → ∃ t, s ⊆ t ∧ t.card = n
s : Finset α
hn : s.card ≤ n + 1
⊢ ∃ t, s ⊆ t ∧ t.card = n + 1

tactic: exact ⟨s, subset_refl _, Nat.eq_zero_of_le_zero hn⟩
state_before: case zero
α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : Infinite α
s : Finset α
hn : s.card ≤ 0
⊢ ∃ t, s ⊆ t ∧ t.card = 0
state_after: no goals

tactic: rcases hn.eq_or_lt with hn' | hn'
state_before: case succ
α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : Infinite α
n : ℕ
IH : ∀ (s : Finset α), s.card ≤ n → ∃ t, s ⊆ t ∧ t.card = n
s : Finset α
hn : s.card ≤ n + 1
⊢ ∃ t, s ⊆ t ∧ t.card = n + 1
state_after: case succ.inl
α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : Infinite α
n : ℕ
IH : ∀ (s : Finset α), s.card ≤ n → ∃ t, s ⊆ t ∧ t.card = n
s : Finset α
hn : s.card ≤ n + 1
hn' : s.card = n + 1
⊢ ∃ t, s ⊆ t ∧ t.card = n + 1

case succ.inr
α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : Infinite α
n : ℕ
IH : ∀ (s : Finset α), s.card ≤ n → ∃ t, s ⊆ t ∧ t.card = n
s : Finset α
hn : s.card ≤ n + 1
hn' : s.card < n + 1
⊢ ∃ t, s ⊆ t ∧ t.card = n + 1

tactic: obtain ⟨t, hs, ht⟩ := IH _ (Nat.le_of_lt_succ hn')
state_before: case succ.inr
α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : Infinite α
n : ℕ
IH : ∀ (s : Finset α), s.card ≤ n → ∃ t, s ⊆ t ∧ t.card = n
s : Finset α
hn : s.card ≤ n + 1
hn' : s.card < n + 1
⊢ ∃ t, s ⊆ t ∧ t.card = n + 1
state_after: case succ.inr.intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : Infinite α
n : ℕ
IH : ∀ (s : Finset α), s.card ≤ n → ∃ t, s ⊆ t ∧ t.card = n
s : Finset α
hn : s.card ≤ n + 1
hn' : s.card < n + 1
t : Finset α
hs : s ⊆ t
ht : t.card = n
⊢ ∃ t, s ⊆ t ∧ t.card = n + 1

tactic: obtain ⟨x, hx⟩ := exists_not_mem_finset t
state_before: case succ.inr.intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : Infinite α
n : ℕ
IH : ∀ (s : Finset α), s.card ≤ n → ∃ t, s ⊆ t ∧ t.card = n
s : Finset α
hn : s.card ≤ n + 1
hn' : s.card < n + 1
t : Finset α
hs : s ⊆ t
ht : t.card = n
⊢ ∃ t, s ⊆ t ∧ t.card = n + 1
state_after: case succ.inr.intro.intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : Infinite α
n : ℕ
IH : ∀ (s : Finset α), s.card ≤ n → ∃ t, s ⊆ t ∧ t.card = n
s : Finset α
hn : s.card ≤ n + 1
hn' : s.card < n + 1
t : Finset α
hs : s ⊆ t
ht : t.card = n
x : α
hx : x ∉ t
⊢ ∃ t, s ⊆ t ∧ t.card = n + 1

tactic: refine ⟨Finset.cons x t hx, hs.trans (Finset.subset_cons _), ?_⟩
state_before: case succ.inr.intro.intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : Infinite α
n : ℕ
IH : ∀ (s : Finset α), s.card ≤ n → ∃ t, s ⊆ t ∧ t.card = n
s : Finset α
hn : s.card ≤ n + 1
hn' : s.card < n + 1
t : Finset α
hs : s ⊆ t
ht : t.card = n
x : α
hx : x ∉ t
⊢ ∃ t, s ⊆ t ∧ t.card = n + 1
state_after: case succ.inr.intro.intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : Infinite α
n : ℕ
IH : ∀ (s : Finset α), s.card ≤ n → ∃ t, s ⊆ t ∧ t.card = n
s : Finset α
hn : s.card ≤ n + 1
hn' : s.card < n + 1
t : Finset α
hs : s ⊆ t
ht : t.card = n
x : α
hx : x ∉ t
⊢ (cons x t hx).card = n + 1

tactic: simp [hx, ht]
state_before: case succ.inr.intro.intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : Infinite α
n : ℕ
IH : ∀ (s : Finset α), s.card ≤ n → ∃ t, s ⊆ t ∧ t.card = n
s : Finset α
hn : s.card ≤ n + 1
hn' : s.card < n + 1
t : Finset α
hs : s ⊆ t
ht : t.card = n
x : α
hx : x ∉ t
⊢ (cons x t hx).card = n + 1
state_after: no goals

tactic: exact ⟨s, subset_refl _, hn'⟩
state_before: case succ.inl
α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : Infinite α
n : ℕ
IH : ∀ (s : Finset α), s.card ≤ n → ∃ t, s ⊆ t ∧ t.card = n
s : Finset α
hn : s.card ≤ n + 1
hn' : s.card = n + 1
⊢ ∃ t, s ⊆ t ∧ t.card = n + 1
state_after: no goals