Theorem: LowerTopology.isTopologicalBasis
File: Mathlib/Topology/Order/LowerTopology.lean

tactic: convert isTopologicalBasis_of_subbasis (topology_eq α)
state_before: α : Type u_1
β : Type ?u.6266
inst✝² : Preorder α
inst✝¹ : TopologicalSpace α
inst✝ : LowerTopology α
s : Set α
⊢ IsTopologicalBasis (lowerBasis α)

tactic: simp_rw [lowerBasis, coe_upperClosure, compl_iUnion]
state_before: case h.e'_3
α : Type u_1
β : Type ?u.6266
inst✝² : Preorder α
inst✝¹ : TopologicalSpace α
inst✝ : LowerTopology α
s : Set α
⊢ lowerBasis α = (fun f => ⋂₀ f) '' {f | Set.Finite f ∧ f ⊆ {s | ∃ a, Ici aᶜ = s}}

tactic: ext s
state_before: case h.e'_3
α : Type u_1
β : Type ?u.6266
inst✝² : Preorder α
inst✝¹ : TopologicalSpace α
inst✝ : LowerTopology α
s : Set α
⊢ {s | ∃ t, Set.Finite t ∧ (⋂ (i : α) (_ : i ∈ t), Ici iᶜ) = s} =
    (fun f => ⋂₀ f) '' {f | Set.Finite f ∧ f ⊆ {s | ∃ a, Ici aᶜ = s}}

tactic: constructor
state_before: case h.e'_3.h
α : Type u_1
β : Type ?u.6266
inst✝² : Preorder α
inst✝¹ : TopologicalSpace α
inst✝ : LowerTopology α
s✝ s : Set α
⊢ s ∈ {s | ∃ t, Set.Finite t ∧ (⋂ (i : α) (_ : i ∈ t), Ici iᶜ) = s} ↔
    s ∈ (fun f => ⋂₀ f) '' {f | Set.Finite f ∧ f ⊆ {s | ∃ a, Ici aᶜ = s}}

tactic: rintro ⟨F, hF, rfl⟩
state_before: case h.e'_3.h.mp
α : Type u_1
β : Type ?u.6266
inst✝² : Preorder α
inst✝¹ : TopologicalSpace α
inst✝ : LowerTopology α
s✝ s : Set α
⊢ s ∈ {s | ∃ t, Set.Finite t ∧ (⋂ (i : α) (_ : i ∈ t), Ici iᶜ) = s} →
    s ∈ (fun f => ⋂₀ f) '' {f | Set.Finite f ∧ f ⊆ {s | ∃ a, Ici aᶜ = s}}

tactic: refine' ⟨(fun a => Ici aᶜ) '' F, ⟨hF.image _, image_subset_iff.2 fun _ _ => ⟨_, rfl⟩⟩, _⟩
state_before: case h.e'_3.h.mp.intro.intro
α : Type u_1
β : Type ?u.6266
inst✝² : Preorder α
inst✝¹ : TopologicalSpace α
inst✝ : LowerTopology α
s F : Set α
hF : Set.Finite F
⊢ (⋂ (i : α) (_ : i ∈ F), Ici iᶜ) ∈ (fun f => ⋂₀ f) '' {f | Set.Finite f ∧ f ⊆ {s | ∃ a, Ici aᶜ = s}}

tactic: simp only [sInter_image]
state_before: case h.e'_3.h.mp.intro.intro
α : Type u_1
β : Type ?u.6266
inst✝² : Preorder α
inst✝¹ : TopologicalSpace α
inst✝ : LowerTopology α
s F : Set α
hF : Set.Finite F
⊢ (fun f => ⋂₀ f) ((fun a => Ici aᶜ) '' F) = ⋂ (i : α) (_ : i ∈ F), Ici iᶜ

tactic: rintro ⟨F, ⟨hF, hs⟩, rfl⟩
state_before: case h.e'_3.h.mpr
α : Type u_1
β : Type ?u.6266
inst✝² : Preorder α
inst✝¹ : TopologicalSpace α
inst✝ : LowerTopology α
s✝ s : Set α
⊢ s ∈ (fun f => ⋂₀ f) '' {f | Set.Finite f ∧ f ⊆ {s | ∃ a, Ici aᶜ = s}} →
    s ∈ {s | ∃ t, Set.Finite t ∧ (⋂ (i : α) (_ : i ∈ t), Ici iᶜ) = s}

tactic: haveI := hF.to_subtype
state_before: case h.e'_3.h.mpr.intro.intro.intro
α : Type u_1
β : Type ?u.6266
inst✝² : Preorder α
inst✝¹ : TopologicalSpace α
inst✝ : LowerTopology α
s : Set α
F : Set (Set α)
hF : Set.Finite F
hs : F ⊆ {s | ∃ a, Ici aᶜ = s}
⊢ (fun f => ⋂₀ f) F ∈ {s | ∃ t, Set.Finite t ∧ (⋂ (i : α) (_ : i ∈ t), Ici iᶜ) = s}

tactic: rw [subset_def, Subtype.forall'] at hs
state_before: case h.e'_3.h.mpr.intro.intro.intro
α : Type u_1
β : Type ?u.6266
inst✝² : Preorder α
inst✝¹ : TopologicalSpace α
inst✝ : LowerTopology α
s : Set α
F : Set (Set α)
hF : Set.Finite F
hs : F ⊆ {s | ∃ a, Ici aᶜ = s}
this : Finite ↑F
⊢ (fun f => ⋂₀ f) F ∈ {s | ∃ t, Set.Finite t ∧ (⋂ (i : α) (_ : i ∈ t), Ici iᶜ) = s}

tactic: choose f hf using hs
state_before: case h.e'_3.h.mpr.intro.intro.intro
α : Type u_1
β : Type ?u.6266
inst✝² : Preorder α
inst✝¹ : TopologicalSpace α
inst✝ : LowerTopology α
s : Set α
F : Set (Set α)
hF : Set.Finite F
hs : ∀ (x : { a // a ∈ F }), ↑x ∈ {s | ∃ a, Ici aᶜ = s}
this : Finite ↑F
⊢ (fun f => ⋂₀ f) F ∈ {s | ∃ t, Set.Finite t ∧ (⋂ (i : α) (_ : i ∈ t), Ici iᶜ) = s}

tactic: exact ⟨_, finite_range f, by simp_rw [biInter_range, hf, sInter_eq_iInter]⟩
state_before: case h.e'_3.h.mpr.intro.intro.intro
α : Type u_1
β : Type ?u.6266
inst✝² : Preorder α
inst✝¹ : TopologicalSpace α
inst✝ : LowerTopology α
s : Set α
F : Set (Set α)
hF : Set.Finite F
this : Finite ↑F
f : { a // a ∈ F } → α
hf : ∀ (x : { a // a ∈ F }), Ici (f x)ᶜ = ↑x
⊢ (fun f => ⋂₀ f) F ∈ {s | ∃ t, Set.Finite t ∧ (⋂ (i : α) (_ : i ∈ t), Ici iᶜ) = s}

tactic: simp_rw [biInter_range, hf, sInter_eq_iInter]
state_before: α : Type u_1
β : Type ?u.6266
inst✝² : Preorder α
inst✝¹ : TopologicalSpace α
inst✝ : LowerTopology α
s : Set α
F : Set (Set α)
hF : Set.Finite F
this : Finite ↑F
f : { a // a ∈ F } → α
hf : ∀ (x : { a // a ∈ F }), Ici (f x)ᶜ = ↑x
⊢ (⋂ (i : α) (_ : i ∈ range f), Ici iᶜ) = (fun f => ⋂₀ f) F