Theorem: Finset.family_induction_on
File: Mathlib/Combinatorics/SetFamily/Compression/Down.lean

tactic: refine memberFamily_induction_on 𝒜 empty singleton_empty fun a 𝒜 h𝒜₀ h𝒜₁ ↦ subfamily a h𝒜₀ ?_
state_before: α : Type u_1
inst✝ : DecidableEq α
𝒜✝ ℬ : Finset (Finset α)
s : Finset α
a : α
p : Finset (Finset α) → Prop
𝒜 : Finset (Finset α)
empty : p ∅
singleton_empty : p {∅}
image_insert : ∀ (a : α) ⦃𝒜 : Finset (Finset α)⦄, (∀ s ∈ 𝒜, a ∉ s) → p 𝒜 → p (image (insert a) 𝒜)
subfamily : ∀ (a : α) ⦃𝒜 : Finset (Finset α)⦄, p (filter (fun x => a ∉ x) 𝒜) → p (filter (fun x => a ∈ x) 𝒜) → p 𝒜
⊢ p 𝒜
state_after: α : Type u_1
inst✝ : DecidableEq α
𝒜✝¹ ℬ : Finset (Finset α)
s : Finset α
a✝ : α
p : Finset (Finset α) → Prop
𝒜✝ : Finset (Finset α)
empty : p ∅
singleton_empty : p {∅}
image_insert : ∀ (a : α) ⦃𝒜 : Finset (Finset α)⦄, (∀ s ∈ 𝒜, a ∉ s) → p 𝒜 → p (image (insert a) 𝒜)
subfamily : ∀ (a : α) ⦃𝒜 : Finset (Finset α)⦄, p (filter (fun x => a ∉ x) 𝒜) → p (filter (fun x => a ∈ x) 𝒜) → p 𝒜
a : α
𝒜 : Finset (Finset α)
h𝒜₀ : p (nonMemberSubfamily a 𝒜)
h𝒜₁ : p (memberSubfamily a 𝒜)
⊢ p (filter (fun x => a ∈ x) 𝒜)

tactic: rw [← image_insert_memberSubfamily]
state_before: α : Type u_1
inst✝ : DecidableEq α
𝒜✝¹ ℬ : Finset (Finset α)
s : Finset α
a✝ : α
p : Finset (Finset α) → Prop
𝒜✝ : Finset (Finset α)
empty : p ∅
singleton_empty : p {∅}
image_insert : ∀ (a : α) ⦃𝒜 : Finset (Finset α)⦄, (∀ s ∈ 𝒜, a ∉ s) → p 𝒜 → p (image (insert a) 𝒜)
subfamily : ∀ (a : α) ⦃𝒜 : Finset (Finset α)⦄, p (filter (fun x => a ∉ x) 𝒜) → p (filter (fun x => a ∈ x) 𝒜) → p 𝒜
a : α
𝒜 : Finset (Finset α)
h𝒜₀ : p (nonMemberSubfamily a 𝒜)
h𝒜₁ : p (memberSubfamily a 𝒜)
⊢ p (filter (fun x => a ∈ x) 𝒜)
state_after: α : Type u_1
inst✝ : DecidableEq α
𝒜✝¹ ℬ : Finset (Finset α)
s : Finset α
a✝ : α
p : Finset (Finset α) → Prop
𝒜✝ : Finset (Finset α)
empty : p ∅
singleton_empty : p {∅}
image_insert : ∀ (a : α) ⦃𝒜 : Finset (Finset α)⦄, (∀ s ∈ 𝒜, a ∉ s) → p 𝒜 → p (image (insert a) 𝒜)
subfamily : ∀ (a : α) ⦃𝒜 : Finset (Finset α)⦄, p (filter (fun x => a ∉ x) 𝒜) → p (filter (fun x => a ∈ x) 𝒜) → p 𝒜
a : α
𝒜 : Finset (Finset α)
h𝒜₀ : p (nonMemberSubfamily a 𝒜)
h𝒜₁ : p (memberSubfamily a 𝒜)
⊢ p (image (insert a) (memberSubfamily a 𝒜))

tactic: exact image_insert _ (by simp) h𝒜₁
state_before: α : Type u_1
inst✝ : DecidableEq α
𝒜✝¹ ℬ : Finset (Finset α)
s : Finset α
a✝ : α
p : Finset (Finset α) → Prop
𝒜✝ : Finset (Finset α)
empty : p ∅
singleton_empty : p {∅}
image_insert : ∀ (a : α) ⦃𝒜 : Finset (Finset α)⦄, (∀ s ∈ 𝒜, a ∉ s) → p 𝒜 → p (image (insert a) 𝒜)
subfamily : ∀ (a : α) ⦃𝒜 : Finset (Finset α)⦄, p (filter (fun x => a ∉ x) 𝒜) → p (filter (fun x => a ∈ x) 𝒜) → p 𝒜
a : α
𝒜 : Finset (Finset α)
h𝒜₀ : p (nonMemberSubfamily a 𝒜)
h𝒜₁ : p (memberSubfamily a 𝒜)
⊢ p (image (insert a) (memberSubfamily a 𝒜))
state_after: no goals

tactic: simp
state_before: α : Type u_1
inst✝ : DecidableEq α
𝒜✝¹ ℬ : Finset (Finset α)
s : Finset α
a✝ : α
p : Finset (Finset α) → Prop
𝒜✝ : Finset (Finset α)
empty : p ∅
singleton_empty : p {∅}
image_insert : ∀ (a : α) ⦃𝒜 : Finset (Finset α)⦄, (∀ s ∈ 𝒜, a ∉ s) → p 𝒜 → p (image (insert a) 𝒜)
subfamily : ∀ (a : α) ⦃𝒜 : Finset (Finset α)⦄, p (filter (fun x => a ∉ x) 𝒜) → p (filter (fun x => a ∈ x) 𝒜) → p 𝒜
a : α
𝒜 : Finset (Finset α)
h𝒜₀ : p (nonMemberSubfamily a 𝒜)
h𝒜₁ : p (memberSubfamily a 𝒜)
⊢ ∀ s ∈ memberSubfamily a 𝒜, a ∉ s
state_after: no goals