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

Proof steps:
state_before: α : Type u_1
s✝¹ t✝ : Finset α
n✝ : ?m.21546
s✝ t : Finset α
inst✝ : DecidableEq α
x : α
s : Finset α
h : x ∉ s
n : ℕ
⊢ powersetCard n.succ (insert x s) = powersetCard n.succ s ∪ image (insert x) (powersetCard n s)
state_after: α : Type u_1
s✝¹ t✝ : Finset α
n✝ : ?m.21546
s✝ t : Finset α
inst✝ : DecidableEq α
x : α
s : Finset α
h : x ∉ s
n : ℕ
⊢ powersetCard n.succ s ∪ filter (fun x => x.card = n.succ) (image (insert x) s.powerset) =
    powersetCard n.succ s ∪ image (insert x) (powersetCard n s)
tactic: rw [powersetCard_eq_filter, powerset_insert, filter_union, ← powersetCard_eq_filter]
state_before: α : Type u_1
s✝¹ t✝ : Finset α
n✝ : ?m.21546
s✝ t : Finset α
inst✝ : DecidableEq α
x : α
s : Finset α
h : x ∉ s
n : ℕ
⊢ powersetCard n.succ s ∪ filter (fun x => x.card = n.succ) (image (insert x) s.powerset) =
    powersetCard n.succ s ∪ image (insert x) (powersetCard n s)
state_after: case e_a
α : Type u_1
s✝¹ t✝ : Finset α
n✝ : ?m.21546
s✝ t : Finset α
inst✝ : DecidableEq α
x : α
s : Finset α
h : x ∉ s
n : ℕ
⊢ filter (fun x => x.card = n.succ) (image (insert x) s.powerset) = image (insert x) (powersetCard n s)
tactic: congr
state_before: case e_a
α : Type u_1
s✝¹ t✝ : Finset α
n✝ : ?m.21546
s✝ t : Finset α
inst✝ : DecidableEq α
x : α
s : Finset α
h : x ∉ s
n : ℕ
⊢ filter (fun x => x.card = n.succ) (image (insert x) s.powerset) = image (insert x) (powersetCard n s)
state_after: case e_a
α : Type u_1
s✝¹ t✝ : Finset α
n✝ : ?m.21546
s✝ t : Finset α
inst✝ : DecidableEq α
x : α
s : Finset α
h : x ∉ s
n : ℕ
⊢ image (insert x) (filter (fun a => (insert x a).card = n.succ) s.powerset) =
    image (insert x) (filter (fun x => x.card = n) s.powerset)
tactic: rw [powersetCard_eq_filter, filter_image]
state_before: case e_a
α : Type u_1
s✝¹ t✝ : Finset α
n✝ : ?m.21546
s✝ t : Finset α
inst✝ : DecidableEq α
x : α
s : Finset α
h : x ∉ s
n : ℕ
⊢ image (insert x) (filter (fun a => (insert x a).card = n.succ) s.powerset) =
    image (insert x) (filter (fun x => x.card = n) s.powerset)
state_after: case e_a.e_s
α : Type u_1
s✝¹ t✝ : Finset α
n✝ : ?m.21546
s✝ t : Finset α
inst✝ : DecidableEq α
x : α
s : Finset α
h : x ∉ s
n : ℕ
⊢ filter (fun a => (insert x a).card = n.succ) s.powerset = filter (fun x => x.card = n) s.powerset
tactic: congr 1
state_before: case e_a.e_s
α : Type u_1
s✝¹ t✝ : Finset α
n✝ : ?m.21546
s✝ t : Finset α
inst✝ : DecidableEq α
x : α
s : Finset α
h : x ∉ s
n : ℕ
⊢ filter (fun a => (insert x a).card = n.succ) s.powerset = filter (fun x => x.card = n) s.powerset
state_after: case e_a.e_s.a
α : Type u_1
s✝¹ t✝¹ : Finset α
n✝ : ?m.21546
s✝ t✝ : Finset α
inst✝ : DecidableEq α
x : α
s : Finset α
h : x ∉ s
n : ℕ
t : Finset α
⊢ t ∈ filter (fun a => (insert x a).card = n.succ) s.powerset ↔ t ∈ filter (fun x => x.card = n) s.powerset
tactic: ext t
state_before: case e_a.e_s.a
α : Type u_1
s✝¹ t✝¹ : Finset α
n✝ : ?m.21546
s✝ t✝ : Finset α
inst✝ : DecidableEq α
x : α
s : Finset α
h : x ∉ s
n : ℕ
t : Finset α
⊢ t ∈ filter (fun a => (insert x a).card = n.succ) s.powerset ↔ t ∈ filter (fun x => x.card = n) s.powerset
state_after: case e_a.e_s.a
α : Type u_1
s✝¹ t✝¹ : Finset α
n✝ : ?m.21546
s✝ t✝ : Finset α
inst✝ : DecidableEq α
x : α
s : Finset α
h : x ∉ s
n : ℕ
t : Finset α
⊢ t ⊆ s → ((insert x t).card = n.succ ↔ t.card = n)
tactic: simp only [mem_powerset, mem_filter, Function.comp_apply, and_congr_right_iff]
state_before: case e_a.e_s.a
α : Type u_1
s✝¹ t✝¹ : Finset α
n✝ : ?m.21546
s✝ t✝ : Finset α
inst✝ : DecidableEq α
x : α
s : Finset α
h : x ∉ s
n : ℕ
t : Finset α
⊢ t ⊆ s → ((insert x t).card = n.succ ↔ t.card = n)
state_after: case e_a.e_s.a
α : Type u_1
s✝¹ t✝¹ : Finset α
n✝ : ?m.21546
s✝ t✝ : Finset α
inst✝ : DecidableEq α
x : α
s : Finset α
h : x ∉ s
n : ℕ
t : Finset α
ht : t ⊆ s
⊢ (insert x t).card = n.succ ↔ t.card = n
tactic: intro ht
state_before: case e_a.e_s.a
α : Type u_1
s✝¹ t✝¹ : Finset α
n✝ : ?m.21546
s✝ t✝ : Finset α
inst✝ : DecidableEq α
x : α
s : Finset α
h : x ∉ s
n : ℕ
t : Finset α
ht : t ⊆ s
⊢ (insert x t).card = n.succ ↔ t.card = n
state_after: case e_a.e_s.a
α : Type u_1
s✝¹ t✝¹ : Finset α
n✝ : ?m.21546
s✝ t✝ : Finset α
inst✝ : DecidableEq α
x : α
s : Finset α
h : x ∉ s
n : ℕ
t : Finset α
ht : t ⊆ s
this : x ∉ t
⊢ (insert x t).card = n.succ ↔ t.card = n
tactic: have : x ∉ t := fun H => h (ht H)
state_before: case e_a.e_s.a
α : Type u_1
s✝¹ t✝¹ : Finset α
n✝ : ?m.21546
s✝ t✝ : Finset α
inst✝ : DecidableEq α
x : α
s : Finset α
h : x ∉ s
n : ℕ
t : Finset α
ht : t ⊆ s
this : x ∉ t
⊢ (insert x t).card = n.succ ↔ t.card = n
state_after: no goals
tactic: simp [card_insert_of_not_mem this, Nat.succ_inj']