Theorem: Filter.mem_countableGenerate_iff
File: Mathlib/Order/Filter/CountableInter.lean

tactic: constructor <;> intro h
state_before: ι : Sort ?u.18419
α : Type u_1
β : Type ?u.18425
l : Filter α
inst✝ : CountableInterFilter l
g : Set (Set α)
s : Set α
⊢ s ∈ countableGenerate g ↔ ∃ S, S ⊆ g ∧ Set.Countable S ∧ ⋂₀ S ⊆ s

tactic: rcases h with ⟨S, Sg, Sct, hS⟩
state_before: case mpr
ι : Sort ?u.18419
α : Type u_1
β : Type ?u.18425
l : Filter α
inst✝ : CountableInterFilter l
g : Set (Set α)
s : Set α
h : ∃ S, S ⊆ g ∧ Set.Countable S ∧ ⋂₀ S ⊆ s
⊢ s ∈ countableGenerate g

tactic: refine' mem_of_superset ((countable_sInter_mem Sct).mpr _) hS
state_before: case mpr.intro.intro.intro
ι : Sort ?u.18419
α : Type u_1
β : Type ?u.18425
l : Filter α
inst✝ : CountableInterFilter l
g : Set (Set α)
s : Set α
S : Set (Set α)
Sg : S ⊆ g
Sct : Set.Countable S
hS : ⋂₀ S ⊆ s
⊢ s ∈ countableGenerate g

tactic: intro s H
state_before: case mpr.intro.intro.intro
ι : Sort ?u.18419
α : Type u_1
β : Type ?u.18425
l : Filter α
inst✝ : CountableInterFilter l
g : Set (Set α)
s : Set α
S : Set (Set α)
Sg : S ⊆ g
Sct : Set.Countable S
hS : ⋂₀ S ⊆ s
⊢ ∀ (s : Set α), s ∈ S → s ∈ countableGenerate g

tactic: exact CountableGenerateSets.basic (Sg H)
state_before: case mpr.intro.intro.intro
ι : Sort ?u.18419
α : Type u_1
β : Type ?u.18425
l : Filter α
inst✝ : CountableInterFilter l
g : Set (Set α)
s✝ : Set α
S : Set (Set α)
Sg : S ⊆ g
Sct : Set.Countable S
hS : ⋂₀ S ⊆ s✝
s : Set α
H : s ∈ S
⊢ s ∈ countableGenerate g

tactic: induction' h with s hs s t _ st ih S Sct _ ih
state_before: case mp
ι : Sort ?u.18419
α : Type u_1
β : Type ?u.18425
l : Filter α
inst✝ : CountableInterFilter l
g : Set (Set α)
s : Set α
h : s ∈ countableGenerate g
⊢ ∃ S, S ⊆ g ∧ Set.Countable S ∧ ⋂₀ S ⊆ s

tactic: choose T Tg Tct hT using ih
state_before: case mp.sInter
ι : Sort ?u.18419
α : Type u_1
β : Type ?u.18425
l : Filter α
inst✝ : CountableInterFilter l
g : Set (Set α)
s : Set α
S : Set (Set α)
Sct : Set.Countable S
a✝ : ∀ (s : Set α), s ∈ S → CountableGenerateSets g s
ih : ∀ (s : Set α), s ∈ S → ∃ S, S ⊆ g ∧ Set.Countable S ∧ ⋂₀ S ⊆ s
⊢ ∃ S_1, S_1 ⊆ g ∧ Set.Countable S_1 ∧ ⋂₀ S_1 ⊆ ⋂₀ S

tactic: refine' ⟨⋃ (s) (H : s ∈ S), T s H, by simpa, Sct.biUnion Tct, _⟩
state_before: case mp.sInter
ι : Sort ?u.18419
α : Type u_1
β : Type ?u.18425
l : Filter α
inst✝ : CountableInterFilter l
g : Set (Set α)
s : Set α
S : Set (Set α)
Sct : Set.Countable S
a✝ : ∀ (s : Set α), s ∈ S → CountableGenerateSets g s
T : (s : Set α) → s ∈ S → Set (Set α)
Tg : ∀ (s : Set α) (a : s ∈ S), T s a ⊆ g
Tct : ∀ (s : Set α) (a : s ∈ S), Set.Countable (T s a)
hT : ∀ (s : Set α) (a : s ∈ S), ⋂₀ T s a ⊆ s
⊢ ∃ S_1, S_1 ⊆ g ∧ Set.Countable S_1 ∧ ⋂₀ S_1 ⊆ ⋂₀ S

tactic: apply subset_sInter
state_before: case mp.sInter
ι : Sort ?u.18419
α : Type u_1
β : Type ?u.18425
l : Filter α
inst✝ : CountableInterFilter l
g : Set (Set α)
s : Set α
S : Set (Set α)
Sct : Set.Countable S
a✝ : ∀ (s : Set α), s ∈ S → CountableGenerateSets g s
T : (s : Set α) → s ∈ S → Set (Set α)
Tg : ∀ (s : Set α) (a : s ∈ S), T s a ⊆ g
Tct : ∀ (s : Set α) (a : s ∈ S), Set.Countable (T s a)
hT : ∀ (s : Set α) (a : s ∈ S), ⋂₀ T s a ⊆ s
⊢ (⋂₀ ⋃ (s : Set α) (H : s ∈ S), T s H) ⊆ ⋂₀ S

tactic: intro s H
state_before: case mp.sInter.h
ι : Sort ?u.18419
α : Type u_1
β : Type ?u.18425
l : Filter α
inst✝ : CountableInterFilter l
g : Set (Set α)
s : Set α
S : Set (Set α)
Sct : Set.Countable S
a✝ : ∀ (s : Set α), s ∈ S → CountableGenerateSets g s
T : (s : Set α) → s ∈ S → Set (Set α)
Tg : ∀ (s : Set α) (a : s ∈ S), T s a ⊆ g
Tct : ∀ (s : Set α) (a : s ∈ S), Set.Countable (T s a)
hT : ∀ (s : Set α) (a : s ∈ S), ⋂₀ T s a ⊆ s
⊢ ∀ (t' : Set α), t' ∈ S → (⋂₀ ⋃ (s : Set α) (H : s ∈ S), T s H) ⊆ t'

tactic: refine' subset_trans (sInter_subset_sInter (subset_iUnion₂ s H)) (hT s H)
state_before: case mp.sInter.h
ι : Sort ?u.18419
α : Type u_1
β : Type ?u.18425
l : Filter α
inst✝ : CountableInterFilter l
g : Set (Set α)
s✝ : Set α
S : Set (Set α)
Sct : Set.Countable S
a✝ : ∀ (s : Set α), s ∈ S → CountableGenerateSets g s
T : (s : Set α) → s ∈ S → Set (Set α)
Tg : ∀ (s : Set α) (a : s ∈ S), T s a ⊆ g
Tct : ∀ (s : Set α) (a : s ∈ S), Set.Countable (T s a)
hT : ∀ (s : Set α) (a : s ∈ S), ⋂₀ T s a ⊆ s
s : Set α
H : s ∈ S
⊢ (⋂₀ ⋃ (s : Set α) (H : s ∈ S), T s H) ⊆ s

tactic: exact ⟨{s}, by simp [hs, subset_refl]⟩
state_before: case mp.basic
ι : Sort ?u.18419
α : Type u_1
β : Type ?u.18425
l : Filter α
inst✝ : CountableInterFilter l
g : Set (Set α)
s✝ s : Set α
hs : s ∈ g
⊢ ∃ S, S ⊆ g ∧ Set.Countable S ∧ ⋂₀ S ⊆ s

tactic: simp [hs, subset_refl]
state_before: ι : Sort ?u.18419
α : Type u_1
β : Type ?u.18425
l : Filter α
inst✝ : CountableInterFilter l
g : Set (Set α)
s✝ s : Set α
hs : s ∈ g
⊢ {s} ⊆ g ∧ Set.Countable {s} ∧ ⋂₀ {s} ⊆ s

tactic: exact ⟨∅, by simp⟩
state_before: case mp.univ
ι : Sort ?u.18419
α : Type u_1
β : Type ?u.18425
l : Filter α
inst✝ : CountableInterFilter l
g : Set (Set α)
s : Set α
⊢ ∃ S, S ⊆ g ∧ Set.Countable S ∧ ⋂₀ S ⊆ univ

tactic: simp
state_before: ι : Sort ?u.18419
α : Type u_1
β : Type ?u.18425
l : Filter α
inst✝ : CountableInterFilter l
g : Set (Set α)
s : Set α
⊢ ∅ ⊆ g ∧ Set.Countable ∅ ∧ ⋂₀ ∅ ⊆ univ

tactic: refine' Exists.imp (fun S => _) ih
state_before: case mp.superset
ι : Sort ?u.18419
α : Type u_1
β : Type ?u.18425
l : Filter α
inst✝ : CountableInterFilter l
g : Set (Set α)
s✝ s t : Set α
a✝ : CountableGenerateSets g s
st : s ⊆ t
ih : ∃ S, S ⊆ g ∧ Set.Countable S ∧ ⋂₀ S ⊆ s
⊢ ∃ S, S ⊆ g ∧ Set.Countable S ∧ ⋂₀ S ⊆ t

tactic: tauto
state_before: case mp.superset
ι : Sort ?u.18419
α : Type u_1
β : Type ?u.18425
l : Filter α
inst✝ : CountableInterFilter l
g : Set (Set α)
s✝ s t : Set α
a✝ : CountableGenerateSets g s
st : s ⊆ t
ih : ∃ S, S ⊆ g ∧ Set.Countable S ∧ ⋂₀ S ⊆ s
S : Set (Set α)
⊢ S ⊆ g ∧ Set.Countable S ∧ ⋂₀ S ⊆ s → S ⊆ g ∧ Set.Countable S ∧ ⋂₀ S ⊆ t

tactic: simpa
state_before: ι : Sort ?u.18419
α : Type u_1
β : Type ?u.18425
l : Filter α
inst✝ : CountableInterFilter l
g : Set (Set α)
s : Set α
S : Set (Set α)
Sct : Set.Countable S
a✝ : ∀ (s : Set α), s ∈ S → CountableGenerateSets g s
T : (s : Set α) → s ∈ S → Set (Set α)
Tg : ∀ (s : Set α) (a : s ∈ S), T s a ⊆ g
Tct : ∀ (s : Set α) (a : s ∈ S), Set.Countable (T s a)
hT : ∀ (s : Set α) (a : s ∈ S), ⋂₀ T s a ⊆ s
⊢ (⋃ (s : Set α) (H : s ∈ S), T s H) ⊆ g