Theorem: Filter.iInf_sets_induct
File: Mathlib/Order/Filter/Basic.lean

tactic: rw [mem_iInf_finite'] at hs
state_before: α : Type u
β : Type v
γ : Type w
δ : Type ?u.113425
ι : Sort x
f✝ g : Filter α
s✝ t : Set α
f : ι → Filter α
s : Set α
hs : s ∈ iInf f
p : Set α → Prop
uni : p univ
ins : ∀ {i : ι} {s₁ s₂ : Set α}, s₁ ∈ f i → p s₂ → p (s₁ ∩ s₂)
⊢ p s

tactic: simp only [← Finset.inf_eq_iInf] at hs
state_before: α : Type u
β : Type v
γ : Type w
δ : Type ?u.113425
ι : Sort x
f✝ g : Filter α
s✝ t : Set α
f : ι → Filter α
s : Set α
hs : ∃ t, s ∈ ⨅ (i : PLift ι) (_ : i ∈ t), f i.down
p : Set α → Prop
uni : p univ
ins : ∀ {i : ι} {s₁ s₂ : Set α}, s₁ ∈ f i → p s₂ → p (s₁ ∩ s₂)
⊢ p s

tactic: rcases hs with ⟨is, his⟩
state_before: α : Type u
β : Type v
γ : Type w
δ : Type ?u.113425
ι : Sort x
f✝ g : Filter α
s✝ t : Set α
f : ι → Filter α
s : Set α
p : Set α → Prop
uni : p univ
ins : ∀ {i : ι} {s₁ s₂ : Set α}, s₁ ∈ f i → p s₂ → p (s₁ ∩ s₂)
hs : ∃ t, s ∈ Finset.inf t fun a => f a.down
⊢ p s

tactic: induction is using Finset.induction_on generalizing s
state_before: case intro
α : Type u
β : Type v
γ : Type w
δ : Type ?u.113425
ι : Sort x
f✝ g : Filter α
s✝ t : Set α
f : ι → Filter α
s : Set α
p : Set α → Prop
uni : p univ
ins : ∀ {i : ι} {s₁ s₂ : Set α}, s₁ ∈ f i → p s₂ → p (s₁ ∩ s₂)
is : Finset (PLift ι)
his : s ∈ Finset.inf is fun a => f a.down
⊢ p s

tactic: case empty => rwa [mem_top.1 his]
state_before: case intro.empty
α : Type u
β : Type v
γ : Type w
δ : Type ?u.113425
ι : Sort x
f✝ g : Filter α
s✝ t : Set α
f : ι → Filter α
p : Set α → Prop
uni : p univ
ins : ∀ {i : ι} {s₁ s₂ : Set α}, s₁ ∈ f i → p s₂ → p (s₁ ∩ s₂)
s : Set α
his : s ∈ Finset.inf ∅ fun a => f a.down
⊢ p s

case intro.insert
α : Type u
β : Type v
γ : Type w
δ : Type ?u.113425
ι : Sort x
f✝ g : Filter α
s✝¹ t : Set α
f : ι → Filter α
p : Set α → Prop
uni : p univ
ins : ∀ {i : ι} {s₁ s₂ : Set α}, s₁ ∈ f i → p s₂ → p (s₁ ∩ s₂)
a✝² : PLift ι
s✝ : Finset (PLift ι)
a✝¹ : ¬a✝² ∈ s✝
a✝ : ∀ {s : Set α}, (s ∈ Finset.inf s✝ fun a => f a.down) → p s
s : Set α
his : s ∈ Finset.inf (insert a✝² s✝) fun a => f a.down
⊢ p s

tactic: case insert ih =>
  rw [Finset.inf_insert, mem_inf_iff] at his
  rcases his with ⟨s₁, hs₁, s₂, hs₂, rfl⟩
  exact ins hs₁ (ih hs₂)
state_before: case intro.insert
α : Type u
β : Type v
γ : Type w
δ : Type ?u.113425
ι : Sort x
f✝ g : Filter α
s✝¹ t : Set α
f : ι → Filter α
p : Set α → Prop
uni : p univ
ins : ∀ {i : ι} {s₁ s₂ : Set α}, s₁ ∈ f i → p s₂ → p (s₁ ∩ s₂)
a✝² : PLift ι
s✝ : Finset (PLift ι)
a✝¹ : ¬a✝² ∈ s✝
a✝ : ∀ {s : Set α}, (s ∈ Finset.inf s✝ fun a => f a.down) → p s
s : Set α
his : s ∈ Finset.inf (insert a✝² s✝) fun a => f a.down
⊢ p s

tactic: rwa [mem_top.1 his]
state_before: α : Type u
β : Type v
γ : Type w
δ : Type ?u.113425
ι : Sort x
f✝ g : Filter α
s✝ t : Set α
f : ι → Filter α
p : Set α → Prop
uni : p univ
ins : ∀ {i : ι} {s₁ s₂ : Set α}, s₁ ∈ f i → p s₂ → p (s₁ ∩ s₂)
s : Set α
his : s ∈ Finset.inf ∅ fun a => f a.down
⊢ p s

tactic: rw [Finset.inf_insert, mem_inf_iff] at his
state_before: α : Type u
β : Type v
γ : Type w
δ : Type ?u.113425
ι : Sort x
f✝ g : Filter α
s✝¹ t : Set α
f : ι → Filter α
p : Set α → Prop
uni : p univ
ins : ∀ {i : ι} {s₁ s₂ : Set α}, s₁ ∈ f i → p s₂ → p (s₁ ∩ s₂)
a✝¹ : PLift ι
s✝ : Finset (PLift ι)
a✝ : ¬a✝¹ ∈ s✝
ih : ∀ {s : Set α}, (s ∈ Finset.inf s✝ fun a => f a.down) → p s
s : Set α
his : s ∈ Finset.inf (insert a✝¹ s✝) fun a => f a.down
⊢ p s

tactic: rcases his with ⟨s₁, hs₁, s₂, hs₂, rfl⟩
state_before: α : Type u
β : Type v
γ : Type w
δ : Type ?u.113425
ι : Sort x
f✝ g : Filter α
s✝¹ t : Set α
f : ι → Filter α
p : Set α → Prop
uni : p univ
ins : ∀ {i : ι} {s₁ s₂ : Set α}, s₁ ∈ f i → p s₂ → p (s₁ ∩ s₂)
a✝¹ : PLift ι
s✝ : Finset (PLift ι)
a✝ : ¬a✝¹ ∈ s✝
ih : ∀ {s : Set α}, (s ∈ Finset.inf s✝ fun a => f a.down) → p s
s : Set α
his : ∃ t₁, t₁ ∈ f a✝¹.down ∧ ∃ t₂, (t₂ ∈ Finset.inf s✝ fun a => f a.down) ∧ s = t₁ ∩ t₂
⊢ p s

tactic: exact ins hs₁ (ih hs₂)
state_before: case intro.intro.intro.intro
α : Type u
β : Type v
γ : Type w
δ : Type ?u.113425
ι : Sort x
f✝ g : Filter α
s t : Set α
f : ι → Filter α
p : Set α → Prop
uni : p univ
ins : ∀ {i : ι} {s₁ s₂ : Set α}, s₁ ∈ f i → p s₂ → p (s₁ ∩ s₂)
a✝¹ : PLift ι
s✝ : Finset (PLift ι)
a✝ : ¬a✝¹ ∈ s✝
ih : ∀ {s : Set α}, (s ∈ Finset.inf s✝ fun a => f a.down) → p s
s₁ : Set α
hs₁ : s₁ ∈ f a✝¹.down
s₂ : Set α
hs₂ : s₂ ∈ Finset.inf s✝ fun a => f a.down
⊢ p (s₁ ∩ s₂)