Theorem: Finset.powersetCard_sup
File: Mathlib/Data/Finset/Powerset.lean

tactic: apply le_antisymm
state_before: α : Type u_1
s✝ t✝ : Finset α
n✝ : ?m.30751
s t : Finset α
inst✝ : DecidableEq α
u : Finset α
n : ℕ
hn : n < u.card
⊢ (powersetCard n.succ u).sup id = u
state_after: case a
α : Type u_1
s✝ t✝ : Finset α
n✝ : ?m.30751
s t : Finset α
inst✝ : DecidableEq α
u : Finset α
n : ℕ
hn : n < u.card
⊢ (powersetCard n.succ u).sup id ≤ u

case a
α : Type u_1
s✝ t✝ : Finset α
n✝ : ?m.30751
s t : Finset α
inst✝ : DecidableEq α
u : Finset α
n : ℕ
hn : n < u.card
⊢ u ≤ (powersetCard n.succ u).sup id

tactic: simp_rw [Finset.sup_le_iff, mem_powersetCard]
state_before: case a
α : Type u_1
s✝ t✝ : Finset α
n✝ : ?m.30751
s t : Finset α
inst✝ : DecidableEq α
u : Finset α
n : ℕ
hn : n < u.card
⊢ (powersetCard n.succ u).sup id ≤ u
state_after: case a
α : Type u_1
s✝ t✝ : Finset α
n✝ : ?m.30751
s t : Finset α
inst✝ : DecidableEq α
u : Finset α
n : ℕ
hn : n < u.card
⊢ ∀ (b : Finset α), b ⊆ u ∧ b.card = n.succ → id b ≤ u

tactic: rintro x ⟨h, -⟩
state_before: case a
α : Type u_1
s✝ t✝ : Finset α
n✝ : ?m.30751
s t : Finset α
inst✝ : DecidableEq α
u : Finset α
n : ℕ
hn : n < u.card
⊢ ∀ (b : Finset α), b ⊆ u ∧ b.card = n.succ → id b ≤ u
state_after: case a.intro
α : Type u_1
s✝ t✝ : Finset α
n✝ : ?m.30751
s t : Finset α
inst✝ : DecidableEq α
u : Finset α
n : ℕ
hn : n < u.card
x : Finset α
h : x ⊆ u
⊢ id x ≤ u

tactic: exact h
state_before: case a.intro
α : Type u_1
s✝ t✝ : Finset α
n✝ : ?m.30751
s t : Finset α
inst✝ : DecidableEq α
u : Finset α
n : ℕ
hn : n < u.card
x : Finset α
h : x ⊆ u
⊢ id x ≤ u
state_after: no goals

tactic: rw [sup_eq_biUnion, le_iff_subset, subset_iff]
state_before: case a
α : Type u_1
s✝ t✝ : Finset α
n✝ : ?m.30751
s t : Finset α
inst✝ : DecidableEq α
u : Finset α
n : ℕ
hn : n < u.card
⊢ u ≤ (powersetCard n.succ u).sup id
state_after: case a
α : Type u_1
s✝ t✝ : Finset α
n✝ : ?m.30751
s t : Finset α
inst✝ : DecidableEq α
u : Finset α
n : ℕ
hn : n < u.card
⊢ ∀ ⦃x : α⦄, x ∈ u → x ∈ (powersetCard n.succ u).biUnion id

tactic: intro x hx
state_before: case a
α : Type u_1
s✝ t✝ : Finset α
n✝ : ?m.30751
s t : Finset α
inst✝ : DecidableEq α
u : Finset α
n : ℕ
hn : n < u.card
⊢ ∀ ⦃x : α⦄, x ∈ u → x ∈ (powersetCard n.succ u).biUnion id
state_after: case a
α : Type u_1
s✝ t✝ : Finset α
n✝ : ?m.30751
s t : Finset α
inst✝ : DecidableEq α
u : Finset α
n : ℕ
hn : n < u.card
x : α
hx : x ∈ u
⊢ x ∈ (powersetCard n.succ u).biUnion id

tactic: simp only [mem_biUnion, exists_prop, id]
state_before: case a
α : Type u_1
s✝ t✝ : Finset α
n✝ : ?m.30751
s t : Finset α
inst✝ : DecidableEq α
u : Finset α
n : ℕ
hn : n < u.card
x : α
hx : x ∈ u
⊢ x ∈ (powersetCard n.succ u).biUnion id
state_after: case a
α : Type u_1
s✝ t✝ : Finset α
n✝ : ?m.30751
s t : Finset α
inst✝ : DecidableEq α
u : Finset α
n : ℕ
hn : n < u.card
x : α
hx : x ∈ u
⊢ ∃ a ∈ powersetCard n.succ u, x ∈ a

tactic: obtain ⟨t, ht⟩ : ∃ t, t ∈ powersetCard n (u.erase x) := powersetCard_nonempty.2
  (le_trans (Nat.le_sub_one_of_lt hn) pred_card_le_card_erase)
state_before: case a
α : Type u_1
s✝ t✝ : Finset α
n✝ : ?m.30751
s t : Finset α
inst✝ : DecidableEq α
u : Finset α
n : ℕ
hn : n < u.card
x : α
hx : x ∈ u
⊢ ∃ a ∈ powersetCard n.succ u, x ∈ a
state_after: case a.intro
α : Type u_1
s✝ t✝¹ : Finset α
n✝ : ?m.30751
s t✝ : Finset α
inst✝ : DecidableEq α
u : Finset α
n : ℕ
hn : n < u.card
x : α
hx : x ∈ u
t : Finset α
ht : t ∈ powersetCard n (u.erase x)
⊢ ∃ a ∈ powersetCard n.succ u, x ∈ a

tactic: refine ⟨insert x t, ?_, mem_insert_self _ _⟩
state_before: case a.intro
α : Type u_1
s✝ t✝¹ : Finset α
n✝ : ?m.30751
s t✝ : Finset α
inst✝ : DecidableEq α
u : Finset α
n : ℕ
hn : n < u.card
x : α
hx : x ∈ u
t : Finset α
ht : t ∈ powersetCard n (u.erase x)
⊢ ∃ a ∈ powersetCard n.succ u, x ∈ a
state_after: case a.intro
α : Type u_1
s✝ t✝¹ : Finset α
n✝ : ?m.30751
s t✝ : Finset α
inst✝ : DecidableEq α
u : Finset α
n : ℕ
hn : n < u.card
x : α
hx : x ∈ u
t : Finset α
ht : t ∈ powersetCard n (u.erase x)
⊢ insert x t ∈ powersetCard n.succ u

tactic: rw [← insert_erase hx, powersetCard_succ_insert (not_mem_erase _ _)]
state_before: case a.intro
α : Type u_1
s✝ t✝¹ : Finset α
n✝ : ?m.30751
s t✝ : Finset α
inst✝ : DecidableEq α
u : Finset α
n : ℕ
hn : n < u.card
x : α
hx : x ∈ u
t : Finset α
ht : t ∈ powersetCard n (u.erase x)
⊢ insert x t ∈ powersetCard n.succ u
state_after: case a.intro
α : Type u_1
s✝ t✝¹ : Finset α
n✝ : ?m.30751
s t✝ : Finset α
inst✝ : DecidableEq α
u : Finset α
n : ℕ
hn : n < u.card
x : α
hx : x ∈ u
t : Finset α
ht : t ∈ powersetCard n (u.erase x)
⊢ insert x t ∈ powersetCard n.succ (u.erase x) ∪ image (insert x) (powersetCard n (u.erase x))

tactic: exact mem_union_right _ (mem_image_of_mem _ ht)
state_before: case a.intro
α : Type u_1
s✝ t✝¹ : Finset α
n✝ : ?m.30751
s t✝ : Finset α
inst✝ : DecidableEq α
u : Finset α
n : ℕ
hn : n < u.card
x : α
hx : x ∈ u
t : Finset α
ht : t ∈ powersetCard n (u.erase x)
⊢ insert x t ∈ powersetCard n.succ (u.erase x) ∪ image (insert x) (powersetCard n (u.erase x))
state_after: no goals