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

tactic: constructor <;> intro h
state_before: α : Type u
β : Type v
γ : Type w
δ : Type u_1
ι : Sort x
f g : Filter α
s✝ t : Set α
s : Set (Set α)
U : Set α
⊢ U ∈ generate s ↔ ∃ t ⊆ s, t.Finite ∧ ⋂₀ t ⊆ U
state_after: case mp
α : Type u
β : Type v
γ : Type w
δ : Type u_1
ι : Sort x
f g : Filter α
s✝ t : Set α
s : Set (Set α)
U : Set α
h : U ∈ generate s
⊢ ∃ t ⊆ s, t.Finite ∧ ⋂₀ t ⊆ U

case mpr
α : Type u
β : Type v
γ : Type w
δ : Type u_1
ι : Sort x
f g : Filter α
s✝ t : Set α
s : Set (Set α)
U : Set α
h : ∃ t ⊆ s, t.Finite ∧ ⋂₀ t ⊆ U
⊢ U ∈ generate s

tactic: induction h with
| @basic V V_in =>
  exact ⟨{V}, singleton_subset_iff.2 V_in, finite_singleton _, (sInter_singleton _).subset⟩
| univ => exact ⟨∅, empty_subset _, finite_empty, subset_univ _⟩
| superset _ hVW hV =>
  rcases hV with ⟨t, hts, ht, htV⟩
  exact ⟨t, hts, ht, htV.trans hVW⟩
| inter _ _ hV hW =>
  rcases hV, hW with ⟨⟨t, hts, ht, htV⟩, u, hus, hu, huW⟩
  exact
    ⟨t ∪ u, union_subset hts hus, ht.union hu,
      (sInter_union _ _).subset.trans <| inter_subset_inter htV huW⟩
state_before: case mp
α : Type u
β : Type v
γ : Type w
δ : Type u_1
ι : Sort x
f g : Filter α
s✝ t : Set α
s : Set (Set α)
U : Set α
h : U ∈ generate s
⊢ ∃ t ⊆ s, t.Finite ∧ ⋂₀ t ⊆ U
state_after: no goals

tactic: exact ⟨{V}, singleton_subset_iff.2 V_in, finite_singleton _, (sInter_singleton _).subset⟩
state_before: case mp.basic
α : Type u
β : Type v
γ : Type w
δ : Type u_1
ι : Sort x
f g : Filter α
s✝ t : Set α
s : Set (Set α)
U V : Set α
V_in : V ∈ s
⊢ ∃ t ⊆ s, t.Finite ∧ ⋂₀ t ⊆ V
state_after: no goals

tactic: exact ⟨∅, empty_subset _, finite_empty, subset_univ _⟩
state_before: case mp.univ
α : Type u
β : Type v
γ : Type w
δ : Type u_1
ι : Sort x
f g : Filter α
s✝ t : Set α
s : Set (Set α)
U : Set α
⊢ ∃ t ⊆ s, t.Finite ∧ ⋂₀ t ⊆ univ
state_after: no goals

tactic: rcases hV with ⟨t, hts, ht, htV⟩
state_before: case mp.superset
α : Type u
β : Type v
γ : Type w
δ : Type u_1
ι : Sort x
f g : Filter α
s✝¹ t : Set α
s : Set (Set α)
U s✝ t✝ : Set α
a✝ : GenerateSets s s✝
hVW : s✝ ⊆ t✝
hV : ∃ t ⊆ s, t.Finite ∧ ⋂₀ t ⊆ s✝
⊢ ∃ t ⊆ s, t.Finite ∧ ⋂₀ t ⊆ t✝
state_after: case mp.superset.intro.intro.intro
α : Type u
β : Type v
γ : Type w
δ : Type u_1
ι : Sort x
f g : Filter α
s✝¹ t✝¹ : Set α
s : Set (Set α)
U s✝ t✝ : Set α
a✝ : GenerateSets s s✝
hVW : s✝ ⊆ t✝
t : Set (Set α)
hts : t ⊆ s
ht : t.Finite
htV : ⋂₀ t ⊆ s✝
⊢ ∃ t ⊆ s, t.Finite ∧ ⋂₀ t ⊆ t✝

tactic: exact ⟨t, hts, ht, htV.trans hVW⟩
state_before: case mp.superset.intro.intro.intro
α : Type u
β : Type v
γ : Type w
δ : Type u_1
ι : Sort x
f g : Filter α
s✝¹ t✝¹ : Set α
s : Set (Set α)
U s✝ t✝ : Set α
a✝ : GenerateSets s s✝
hVW : s✝ ⊆ t✝
t : Set (Set α)
hts : t ⊆ s
ht : t.Finite
htV : ⋂₀ t ⊆ s✝
⊢ ∃ t ⊆ s, t.Finite ∧ ⋂₀ t ⊆ t✝
state_after: no goals

tactic: rcases hV, hW with ⟨⟨t, hts, ht, htV⟩, u, hus, hu, huW⟩
state_before: case mp.inter
α : Type u
β : Type v
γ : Type w
δ : Type u_1
ι : Sort x
f g : Filter α
s✝¹ t : Set α
s : Set (Set α)
U s✝ t✝ : Set α
a✝¹ : GenerateSets s s✝
a✝ : GenerateSets s t✝
hV : ∃ t ⊆ s, t.Finite ∧ ⋂₀ t ⊆ s✝
hW : ∃ t ⊆ s, t.Finite ∧ ⋂₀ t ⊆ t✝
⊢ ∃ t ⊆ s, t.Finite ∧ ⋂₀ t ⊆ s✝ ∩ t✝
state_after: case mp.inter.intro.intro.intro.intro.intro.intro
α : Type u
β : Type v
γ : Type w
δ : Type u_1
ι : Sort x
f g : Filter α
s✝¹ t✝¹ : Set α
s : Set (Set α)
U s✝ t✝ : Set α
a✝¹ : GenerateSets s s✝
a✝ : GenerateSets s t✝
t : Set (Set α)
hts : t ⊆ s
ht : t.Finite
htV : ⋂₀ t ⊆ s✝
u : Set (Set α)
hus : u ⊆ s
hu : u.Finite
huW : ⋂₀ u ⊆ t✝
⊢ ∃ t ⊆ s, t.Finite ∧ ⋂₀ t ⊆ s✝ ∩ t✝

tactic: exact
  ⟨t ∪ u, union_subset hts hus, ht.union hu,
    (sInter_union _ _).subset.trans <| inter_subset_inter htV huW⟩
state_before: case mp.inter.intro.intro.intro.intro.intro.intro
α : Type u
β : Type v
γ : Type w
δ : Type u_1
ι : Sort x
f g : Filter α
s✝¹ t✝¹ : Set α
s : Set (Set α)
U s✝ t✝ : Set α
a✝¹ : GenerateSets s s✝
a✝ : GenerateSets s t✝
t : Set (Set α)
hts : t ⊆ s
ht : t.Finite
htV : ⋂₀ t ⊆ s✝
u : Set (Set α)
hus : u ⊆ s
hu : u.Finite
huW : ⋂₀ u ⊆ t✝
⊢ ∃ t ⊆ s, t.Finite ∧ ⋂₀ t ⊆ s✝ ∩ t✝
state_after: no goals

tactic: rcases h with ⟨t, hts, tfin, h⟩
state_before: case mpr
α : Type u
β : Type v
γ : Type w
δ : Type u_1
ι : Sort x
f g : Filter α
s✝ t : Set α
s : Set (Set α)
U : Set α
h : ∃ t ⊆ s, t.Finite ∧ ⋂₀ t ⊆ U
⊢ U ∈ generate s
state_after: case mpr.intro.intro.intro
α : Type u
β : Type v
γ : Type w
δ : Type u_1
ι : Sort x
f g : Filter α
s✝ t✝ : Set α
s : Set (Set α)
U : Set α
t : Set (Set α)
hts : t ⊆ s
tfin : t.Finite
h : ⋂₀ t ⊆ U
⊢ U ∈ generate s

tactic: exact mem_of_superset ((sInter_mem tfin).2 fun V hV => GenerateSets.basic <| hts hV) h
state_before: case mpr.intro.intro.intro
α : Type u
β : Type v
γ : Type w
δ : Type u_1
ι : Sort x
f g : Filter α
s✝ t✝ : Set α
s : Set (Set α)
U : Set α
t : Set (Set α)
hts : t ⊆ s
tfin : t.Finite
h : ⋂₀ t ⊆ U
⊢ U ∈ generate s
state_after: no goals