topology.order.lower_topologyMathlib.Topology.Order.LowerUpperTopology

This file has been ported!

Changes since the initial port

The following section lists changes to this file in mathlib3 and mathlib4 that occured after the initial port. Most recent changes are shown first. Hovering over a commit will show all commits associated with the same mathlib3 commit.

Changes in mathlib3

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(last sync)

Changes in mathlib3port

mathlib3
mathlib3port
Diff
@@ -238,7 +238,7 @@ theorem Topology.IsLower.isClosed_upperClosure (h : s.Finite) : IsClosed (upperC
 /-- Every set open in the lower topology is a lower set. -/
 theorem Topology.IsLower.isLowerSet_of_isOpen (h : IsOpen s) : IsLowerSet s :=
   by
-  rw [is_open_iff_generate_Ici_compl] at h 
+  rw [is_open_iff_generate_Ici_compl] at h
   induction h
   case basic u h => obtain ⟨a, rfl⟩ := h; exact (isUpperSet_Ici a).compl
   case univ => exact isLowerSet_univ
@@ -278,7 +278,7 @@ protected theorem Topology.IsLower.isTopologicalBasis :
     rw [sInter_image]
   · rintro ⟨F, ⟨hF, hs⟩, rfl⟩
     haveI := hF.to_subtype
-    rw [subset_def, Subtype.forall'] at hs 
+    rw [subset_def, Subtype.forall'] at hs
     choose f hf using hs
     exact ⟨_, finite_range f, by simp_rw [bInter_range, hf, sInter_eq_Inter]⟩
 #align lower_topology.is_topological_basis Topology.IsLower.isTopologicalBasis
Diff
@@ -198,15 +198,15 @@ section Preorder
 
 variable [Preorder α] [TopologicalSpace α] [Topology.IsLower α] {s : Set α}
 
-#print Topology.IsLower.WithLowerHomeomorph /-
+#print Topology.IsLower.withLowerHomeomorph /-
 /-- If `α` is equipped with the lower topology, then it is homeomorphic to `with_lower_topology α`.
 -/
-def Topology.IsLower.WithLowerHomeomorph : Topology.WithLower α ≃ₜ α :=
+def Topology.IsLower.withLowerHomeomorph : Topology.WithLower α ≃ₜ α :=
   {
     Topology.WithLower.ofLower with
     continuous_toFun := by convert continuous_id; apply topology_eq_lower_topology
     continuous_invFun := by convert ← continuous_id; apply topology_eq_lower_topology }
-#align lower_topology.with_lower_topology_homeomorph Topology.IsLower.WithLowerHomeomorph
+#align lower_topology.with_lower_topology_homeomorph Topology.IsLower.withLowerHomeomorph
 -/
 
 #print Topology.IsLower.isOpen_iff_generate_Ici_compl /-
Diff
@@ -172,7 +172,7 @@ theorem Topology.WithLower.isOpen_def (T : Set (Topology.WithLower α)) :
 end Topology.WithLower
 
 #print Topology.IsLower /-
-/- ./././Mathport/Syntax/Translate/Command.lean:404:30: infer kinds are unsupported in Lean 4: #[`topology_eq_isLower] [] -/
+/- ./././Mathport/Syntax/Translate/Command.lean:400:30: infer kinds are unsupported in Lean 4: #[`topology_eq_isLower] [] -/
 /--
 The lower topology is the topology generated by the complements of the closed intervals to infinity.
 -/
Diff
@@ -172,7 +172,7 @@ theorem Topology.WithLower.isOpen_def (T : Set (Topology.WithLower α)) :
 end Topology.WithLower
 
 #print Topology.IsLower /-
-/- ./././Mathport/Syntax/Translate/Command.lean:394:30: infer kinds are unsupported in Lean 4: #[`topology_eq_isLower] [] -/
+/- ./././Mathport/Syntax/Translate/Command.lean:404:30: infer kinds are unsupported in Lean 4: #[`topology_eq_isLower] [] -/
 /--
 The lower topology is the topology generated by the complements of the closed intervals to infinity.
 -/
Diff
@@ -55,157 +55,164 @@ variable (α β : Type _)
 
 open Set TopologicalSpace
 
-#print WithLowerTopology /-
+#print Topology.WithLower /-
 /-- Type synonym for a preorder equipped with the lower topology
 -/
-def WithLowerTopology :=
+def Topology.WithLower :=
   α
-#align with_lower_topology WithLowerTopology
+#align with_lower_topology Topology.WithLower
 -/
 
 variable {α β}
 
-namespace WithLowerTopology
+namespace Topology.WithLower
 
-#print WithLowerTopology.toLower /-
+#print Topology.WithLower.toLower /-
 /-- `to_lower` is the identity function to the `with_lower_topology` of a type.  -/
 @[match_pattern]
-def toLower : α ≃ WithLowerTopology α :=
+def Topology.WithLower.toLower : α ≃ Topology.WithLower α :=
   Equiv.refl _
-#align with_lower_topology.to_lower WithLowerTopology.toLower
+#align with_lower_topology.to_lower Topology.WithLower.toLower
 -/
 
-#print WithLowerTopology.ofLower /-
+#print Topology.WithLower.ofLower /-
 /-- `of_lower` is the identity function from the `with_lower_topology` of a type.  -/
 @[match_pattern]
-def ofLower : WithLowerTopology α ≃ α :=
+def Topology.WithLower.ofLower : Topology.WithLower α ≃ α :=
   Equiv.refl _
-#align with_lower_topology.of_lower WithLowerTopology.ofLower
+#align with_lower_topology.of_lower Topology.WithLower.ofLower
 -/
 
-#print WithLowerTopology.to_withLowerTopology_symm_eq /-
+#print Topology.WithLower.to_WithLower_symm_eq /-
 @[simp]
-theorem to_withLowerTopology_symm_eq : (@toLower α).symm = ofLower :=
+theorem Topology.WithLower.to_WithLower_symm_eq :
+    (@Topology.WithLower.toLower α).symm = Topology.WithLower.ofLower :=
   rfl
-#align with_lower_topology.to_with_lower_topology_symm_eq WithLowerTopology.to_withLowerTopology_symm_eq
+#align with_lower_topology.to_with_lower_topology_symm_eq Topology.WithLower.to_WithLower_symm_eq
 -/
 
-#print WithLowerTopology.of_withLowerTopology_symm_eq /-
+#print Topology.WithLower.of_WithLower_symm_eq /-
 @[simp]
-theorem of_withLowerTopology_symm_eq : (@ofLower α).symm = toLower :=
+theorem Topology.WithLower.of_WithLower_symm_eq :
+    (@Topology.WithLower.ofLower α).symm = Topology.WithLower.toLower :=
   rfl
-#align with_lower_topology.of_with_lower_topology_symm_eq WithLowerTopology.of_withLowerTopology_symm_eq
+#align with_lower_topology.of_with_lower_topology_symm_eq Topology.WithLower.of_WithLower_symm_eq
 -/
 
-#print WithLowerTopology.toLower_ofLower /-
+#print Topology.WithLower.toLower_ofLower /-
 @[simp]
-theorem toLower_ofLower (a : WithLowerTopology α) : toLower (ofLower a) = a :=
+theorem Topology.WithLower.toLower_ofLower (a : Topology.WithLower α) :
+    Topology.WithLower.toLower (Topology.WithLower.ofLower a) = a :=
   rfl
-#align with_lower_topology.to_lower_of_lower WithLowerTopology.toLower_ofLower
+#align with_lower_topology.to_lower_of_lower Topology.WithLower.toLower_ofLower
 -/
 
-#print WithLowerTopology.ofLower_toLower /-
+#print Topology.WithLower.ofLower_toLower /-
 @[simp]
-theorem ofLower_toLower (a : α) : ofLower (toLower a) = a :=
+theorem Topology.WithLower.ofLower_toLower (a : α) :
+    Topology.WithLower.ofLower (Topology.WithLower.toLower a) = a :=
   rfl
-#align with_lower_topology.of_lower_to_lower WithLowerTopology.ofLower_toLower
+#align with_lower_topology.of_lower_to_lower Topology.WithLower.ofLower_toLower
 -/
 
-#print WithLowerTopology.toLower_inj /-
+#print Topology.WithLower.toLower_inj /-
 @[simp]
-theorem toLower_inj {a b : α} : toLower a = toLower b ↔ a = b :=
+theorem Topology.WithLower.toLower_inj {a b : α} :
+    Topology.WithLower.toLower a = Topology.WithLower.toLower b ↔ a = b :=
   Iff.rfl
-#align with_lower_topology.to_lower_inj WithLowerTopology.toLower_inj
+#align with_lower_topology.to_lower_inj Topology.WithLower.toLower_inj
 -/
 
-#print WithLowerTopology.ofLower_inj /-
+#print Topology.WithLower.ofLower_inj /-
 @[simp]
-theorem ofLower_inj {a b : WithLowerTopology α} : ofLower a = ofLower b ↔ a = b :=
+theorem Topology.WithLower.ofLower_inj {a b : Topology.WithLower α} :
+    Topology.WithLower.ofLower a = Topology.WithLower.ofLower b ↔ a = b :=
   Iff.rfl
-#align with_lower_topology.of_lower_inj WithLowerTopology.ofLower_inj
+#align with_lower_topology.of_lower_inj Topology.WithLower.ofLower_inj
 -/
 
-#print WithLowerTopology.rec /-
+#print Topology.WithLower.rec /-
 /-- A recursor for `with_lower_topology`. Use as `induction x using with_lower_topology.rec`. -/
-protected def rec {β : WithLowerTopology α → Sort _} (h : ∀ a, β (toLower a)) : ∀ a, β a := fun a =>
-  h (ofLower a)
-#align with_lower_topology.rec WithLowerTopology.rec
+protected def Topology.WithLower.rec {β : Topology.WithLower α → Sort _}
+    (h : ∀ a, β (Topology.WithLower.toLower a)) : ∀ a, β a := fun a =>
+  h (Topology.WithLower.ofLower a)
+#align with_lower_topology.rec Topology.WithLower.rec
 -/
 
-instance [Nonempty α] : Nonempty (WithLowerTopology α) :=
+instance [Nonempty α] : Nonempty (Topology.WithLower α) :=
   ‹Nonempty α›
 
-instance [Inhabited α] : Inhabited (WithLowerTopology α) :=
+instance [Inhabited α] : Inhabited (Topology.WithLower α) :=
   ‹Inhabited α›
 
 variable [Preorder α]
 
-instance : Preorder (WithLowerTopology α) :=
+instance : Preorder (Topology.WithLower α) :=
   ‹Preorder α›
 
-instance : TopologicalSpace (WithLowerTopology α) :=
+instance : TopologicalSpace (Topology.WithLower α) :=
   generateFrom {s | ∃ a, Ici aᶜ = s}
 
-#print WithLowerTopology.isOpen_preimage_ofLower /-
-theorem isOpen_preimage_ofLower (S : Set α) :
-    IsOpen (WithLowerTopology.ofLower ⁻¹' S) ↔
+#print Topology.WithLower.isOpen_preimage_ofLower /-
+theorem Topology.WithLower.isOpen_preimage_ofLower (S : Set α) :
+    IsOpen (Topology.WithLower.ofLower ⁻¹' S) ↔
       (generateFrom {s : Set α | ∃ a : α, Ici aᶜ = s}).IsOpen S :=
   Iff.rfl
-#align with_lower_topology.is_open_preimage_of_lower WithLowerTopology.isOpen_preimage_ofLower
+#align with_lower_topology.is_open_preimage_of_lower Topology.WithLower.isOpen_preimage_ofLower
 -/
 
-#print WithLowerTopology.isOpen_def /-
-theorem isOpen_def (T : Set (WithLowerTopology α)) :
+#print Topology.WithLower.isOpen_def /-
+theorem Topology.WithLower.isOpen_def (T : Set (Topology.WithLower α)) :
     IsOpen T ↔
-      (generateFrom {s : Set α | ∃ a : α, Ici aᶜ = s}).IsOpen (WithLowerTopology.toLower ⁻¹' T) :=
+      (generateFrom {s : Set α | ∃ a : α, Ici aᶜ = s}).IsOpen (Topology.WithLower.toLower ⁻¹' T) :=
   Iff.rfl
-#align with_lower_topology.is_open_def WithLowerTopology.isOpen_def
+#align with_lower_topology.is_open_def Topology.WithLower.isOpen_def
 -/
 
-end WithLowerTopology
+end Topology.WithLower
 
-#print LowerTopology /-
-/- ./././Mathport/Syntax/Translate/Command.lean:394:30: infer kinds are unsupported in Lean 4: #[`topology_eq_lowerTopology] [] -/
+#print Topology.IsLower /-
+/- ./././Mathport/Syntax/Translate/Command.lean:394:30: infer kinds are unsupported in Lean 4: #[`topology_eq_isLower] [] -/
 /--
 The lower topology is the topology generated by the complements of the closed intervals to infinity.
 -/
-class LowerTopology (α : Type _) [t : TopologicalSpace α] [Preorder α] : Prop where
-  topology_eq_lowerTopology : t = generateFrom {s | ∃ a, Ici aᶜ = s}
-#align lower_topology LowerTopology
+class Topology.IsLower (α : Type _) [t : TopologicalSpace α] [Preorder α] : Prop where
+  topology_eq_isLower : t = generateFrom {s | ∃ a, Ici aᶜ = s}
+#align lower_topology Topology.IsLower
 -/
 
-instance [Preorder α] : LowerTopology (WithLowerTopology α) :=
+instance [Preorder α] : Topology.IsLower (Topology.WithLower α) :=
   ⟨rfl⟩
 
-namespace LowerTopology
+namespace Topology.IsLower
 
-#print LowerTopology.lowerBasis /-
+#print Topology.IsLower.lowerBasis /-
 /-- The complements of the upper closures of finite sets are a collection of lower sets
 which form a basis for the lower topology. -/
-def lowerBasis (α : Type _) [Preorder α] :=
+def Topology.IsLower.lowerBasis (α : Type _) [Preorder α] :=
   {s : Set α | ∃ t : Set α, t.Finite ∧ (upperClosure t : Set α)ᶜ = s}
-#align lower_topology.lower_basis LowerTopology.lowerBasis
+#align lower_topology.lower_basis Topology.IsLower.lowerBasis
 -/
 
 section Preorder
 
-variable [Preorder α] [TopologicalSpace α] [LowerTopology α] {s : Set α}
+variable [Preorder α] [TopologicalSpace α] [Topology.IsLower α] {s : Set α}
 
-#print LowerTopology.withLowerTopologyHomeomorph /-
+#print Topology.IsLower.WithLowerHomeomorph /-
 /-- If `α` is equipped with the lower topology, then it is homeomorphic to `with_lower_topology α`.
 -/
-def withLowerTopologyHomeomorph : WithLowerTopology α ≃ₜ α :=
+def Topology.IsLower.WithLowerHomeomorph : Topology.WithLower α ≃ₜ α :=
   {
-    WithLowerTopology.ofLower with
+    Topology.WithLower.ofLower with
     continuous_toFun := by convert continuous_id; apply topology_eq_lower_topology
     continuous_invFun := by convert ← continuous_id; apply topology_eq_lower_topology }
-#align lower_topology.with_lower_topology_homeomorph LowerTopology.withLowerTopologyHomeomorph
+#align lower_topology.with_lower_topology_homeomorph Topology.IsLower.WithLowerHomeomorph
 -/
 
-#print LowerTopology.isOpen_iff_generate_Ici_compl /-
-theorem isOpen_iff_generate_Ici_compl : IsOpen s ↔ GenerateOpen {t | ∃ a, Ici aᶜ = t} s := by
-  rw [topology_eq_lower_topology α] <;> rfl
-#align lower_topology.is_open_iff_generate_Ici_compl LowerTopology.isOpen_iff_generate_Ici_compl
+#print Topology.IsLower.isOpen_iff_generate_Ici_compl /-
+theorem Topology.IsLower.isOpen_iff_generate_Ici_compl :
+    IsOpen s ↔ GenerateOpen {t | ∃ a, Ici aᶜ = t} s := by rw [topology_eq_lower_topology α] <;> rfl
+#align lower_topology.is_open_iff_generate_Ici_compl Topology.IsLower.isOpen_iff_generate_Ici_compl
 -/
 
 /- warning: lower_topology.is_closed_Ici clashes with is_closed_Ici -> isClosed_Ici
@@ -213,22 +220,23 @@ Case conversion may be inaccurate. Consider using '#align lower_topology.is_clos
 #print isClosed_Ici /-
 /-- Left-closed right-infinite intervals [a, ∞) are closed in the lower topology. -/
 theorem isClosed_Ici (a : α) : IsClosed (Ici a) :=
-  isOpen_compl_iff.1 <| isOpen_iff_generate_Ici_compl.2 <| GenerateOpen.basic _ ⟨a, rfl⟩
+  isOpen_compl_iff.1 <|
+    Topology.IsLower.isOpen_iff_generate_Ici_compl.2 <| GenerateOpen.basic _ ⟨a, rfl⟩
 #align lower_topology.is_closed_Ici isClosed_Ici
 -/
 
-#print LowerTopology.isClosed_upperClosure /-
+#print Topology.IsLower.isClosed_upperClosure /-
 /-- The upper closure of a finite set is closed in the lower topology. -/
-theorem isClosed_upperClosure (h : s.Finite) : IsClosed (upperClosure s : Set α) :=
+theorem Topology.IsLower.isClosed_upperClosure (h : s.Finite) : IsClosed (upperClosure s : Set α) :=
   by
   simp only [← UpperSet.iInf_Ici, UpperSet.coe_iInf]
   exact Set.Finite.isClosed_biUnion h fun a h₁ => isClosed_Ici a
-#align lower_topology.is_closed_upper_closure LowerTopology.isClosed_upperClosure
+#align lower_topology.is_closed_upper_closure Topology.IsLower.isClosed_upperClosure
 -/
 
-#print LowerTopology.isLowerSet_of_isOpen /-
+#print Topology.IsLower.isLowerSet_of_isOpen /-
 /-- Every set open in the lower topology is a lower set. -/
-theorem isLowerSet_of_isOpen (h : IsOpen s) : IsLowerSet s :=
+theorem Topology.IsLower.isLowerSet_of_isOpen (h : IsOpen s) : IsLowerSet s :=
   by
   rw [is_open_iff_generate_Ici_compl] at h 
   induction h
@@ -236,29 +244,30 @@ theorem isLowerSet_of_isOpen (h : IsOpen s) : IsLowerSet s :=
   case univ => exact isLowerSet_univ
   case inter u v hu1 hv1 hu2 hv2 => exact hu2.inter hv2
   case sUnion _ _ ih => exact isLowerSet_sUnion ih
-#align lower_topology.is_lower_set_of_is_open LowerTopology.isLowerSet_of_isOpen
+#align lower_topology.is_lower_set_of_is_open Topology.IsLower.isLowerSet_of_isOpen
 -/
 
-#print LowerTopology.isUpperSet_of_isClosed /-
-theorem isUpperSet_of_isClosed (h : IsClosed s) : IsUpperSet s :=
-  isLowerSet_compl.1 <| isLowerSet_of_isOpen h.isOpen_compl
-#align lower_topology.is_upper_set_of_is_closed LowerTopology.isUpperSet_of_isClosed
+#print Topology.IsLower.isUpperSet_of_isClosed /-
+theorem Topology.IsLower.isUpperSet_of_isClosed (h : IsClosed s) : IsUpperSet s :=
+  isLowerSet_compl.1 <| Topology.IsLower.isLowerSet_of_isOpen h.isOpen_compl
+#align lower_topology.is_upper_set_of_is_closed Topology.IsLower.isUpperSet_of_isClosed
 -/
 
-#print LowerTopology.closure_singleton /-
+#print Topology.IsLower.closure_singleton /-
 /--
 The closure of a singleton `{a}` in the lower topology is the left-closed right-infinite interval
 [a, ∞).
 -/
 @[simp]
-theorem closure_singleton (a : α) : closure {a} = Ici a :=
+theorem Topology.IsLower.closure_singleton (a : α) : closure {a} = Ici a :=
   subset_antisymm ((closure_minimal fun b h => h.ge) <| isClosed_Ici a) <|
-    (isUpperSet_of_isClosed isClosed_closure).Ici_subset <| subset_closure rfl
-#align lower_topology.closure_singleton LowerTopology.closure_singleton
+    (Topology.IsLower.isUpperSet_of_isClosed isClosed_closure).Ici_subset <| subset_closure rfl
+#align lower_topology.closure_singleton Topology.IsLower.closure_singleton
 -/
 
-#print LowerTopology.isTopologicalBasis /-
-protected theorem isTopologicalBasis : IsTopologicalBasis (lowerBasis α) :=
+#print Topology.IsLower.isTopologicalBasis /-
+protected theorem Topology.IsLower.isTopologicalBasis :
+    IsTopologicalBasis (Topology.IsLower.lowerBasis α) :=
   by
   convert is_topological_basis_of_subbasis (topology_eq_lower_topology α)
   simp_rw [lower_basis, coe_upperClosure, compl_Union]
@@ -272,14 +281,14 @@ protected theorem isTopologicalBasis : IsTopologicalBasis (lowerBasis α) :=
     rw [subset_def, Subtype.forall'] at hs 
     choose f hf using hs
     exact ⟨_, finite_range f, by simp_rw [bInter_range, hf, sInter_eq_Inter]⟩
-#align lower_topology.is_topological_basis LowerTopology.isTopologicalBasis
+#align lower_topology.is_topological_basis Topology.IsLower.isTopologicalBasis
 -/
 
 end Preorder
 
 section PartialOrder
 
-variable [PartialOrder α] [TopologicalSpace α] [LowerTopology α]
+variable [PartialOrder α] [TopologicalSpace α] [Topology.IsLower α]
 
 -- see Note [lower instance priority]
 /-- The lower topology on a partial order is T₀.
@@ -290,16 +299,17 @@ instance (priority := 90) : T0Space α :=
 
 end PartialOrder
 
-end LowerTopology
+end Topology.IsLower
 
-instance [Preorder α] [TopologicalSpace α] [LowerTopology α] [OrderBot α] [Preorder β]
-    [TopologicalSpace β] [LowerTopology β] [OrderBot β] : LowerTopology (α × β)
-    where topology_eq_lowerTopology :=
+instance [Preorder α] [TopologicalSpace α] [Topology.IsLower α] [OrderBot α] [Preorder β]
+    [TopologicalSpace β] [Topology.IsLower β] [OrderBot β] : Topology.IsLower (α × β)
+    where topology_eq_isLower :=
     by
     refine' le_antisymm (le_generateFrom _) _
     · rintro _ ⟨x, rfl⟩
       exact ((isClosed_Ici _).Prod <| isClosed_Ici _).isOpen_compl
-    rw [(lower_topology.is_topological_basis.prod LowerTopology.isTopologicalBasis).eq_generateFrom,
+    rw [(lower_topology.is_topological_basis.prod
+          Topology.IsLower.isTopologicalBasis).eq_generateFrom,
       le_generate_from_iff_subset_is_open, image2_subset_iff]
     rintro _ ⟨s, hs, rfl⟩ _ ⟨t, ht, rfl⟩
     dsimp
@@ -313,14 +323,14 @@ instance [Preorder α] [TopologicalSpace α] [LowerTopology α] [OrderBot α] [P
 
 section CompleteLattice
 
-variable [CompleteLattice α] [CompleteLattice β] [TopologicalSpace α] [LowerTopology α]
-  [TopologicalSpace β] [LowerTopology β]
+variable [CompleteLattice α] [CompleteLattice β] [TopologicalSpace α] [Topology.IsLower α]
+  [TopologicalSpace β] [Topology.IsLower β]
 
 #print sInfHom.continuous /-
 theorem sInfHom.continuous (f : sInfHom α β) : Continuous f :=
   by
   convert continuous_generateFrom _
-  · exact LowerTopology.topology_eq_lowerTopology β
+  · exact Topology.IsLower.topology_eq_isLower β
   rintro _ ⟨b, rfl⟩
   rw [preimage_compl, isOpen_compl_iff]
   convert isClosed_Ici (Inf <| f ⁻¹' Ici b)
@@ -329,11 +339,11 @@ theorem sInfHom.continuous (f : sInfHom α β) : Continuous f :=
 #align Inf_hom.continuous sInfHom.continuous
 -/
 
-#print LowerTopology.continuousInf /-
+#print Topology.IsLower.toContinuousInf /-
 -- see Note [lower instance priority]
-instance (priority := 90) LowerTopology.continuousInf : ContinuousInf α :=
+instance (priority := 90) Topology.IsLower.toContinuousInf : ContinuousInf α :=
   ⟨(infsInfHom : sInfHom (α × α) α).Continuous⟩
-#align lower_topology.to_has_continuous_inf LowerTopology.continuousInf
+#align lower_topology.to_has_continuous_inf Topology.IsLower.toContinuousInf
 -/
 
 end CompleteLattice
Diff
@@ -3,9 +3,9 @@ Copyright (c) 2023 Christopher Hoskin. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Christopher Hoskin
 -/
-import Mathbin.Topology.Homeomorph
-import Mathbin.Topology.Order.Lattice
-import Mathbin.Order.Hom.CompleteLattice
+import Topology.Homeomorph
+import Topology.Order.Lattice
+import Order.Hom.CompleteLattice
 
 #align_import topology.order.lower_topology from "leanprover-community/mathlib"@"34ee86e6a59d911a8e4f89b68793ee7577ae79c7"
 
@@ -165,7 +165,7 @@ theorem isOpen_def (T : Set (WithLowerTopology α)) :
 end WithLowerTopology
 
 #print LowerTopology /-
-/- ./././Mathport/Syntax/Translate/Command.lean:393:30: infer kinds are unsupported in Lean 4: #[`topology_eq_lowerTopology] [] -/
+/- ./././Mathport/Syntax/Translate/Command.lean:394:30: infer kinds are unsupported in Lean 4: #[`topology_eq_lowerTopology] [] -/
 /--
 The lower topology is the topology generated by the complements of the closed intervals to infinity.
 -/
Diff
@@ -222,7 +222,7 @@ theorem isClosed_Ici (a : α) : IsClosed (Ici a) :=
 theorem isClosed_upperClosure (h : s.Finite) : IsClosed (upperClosure s : Set α) :=
   by
   simp only [← UpperSet.iInf_Ici, UpperSet.coe_iInf]
-  exact isClosed_biUnion h fun a h₁ => isClosed_Ici a
+  exact Set.Finite.isClosed_biUnion h fun a h₁ => isClosed_Ici a
 #align lower_topology.is_closed_upper_closure LowerTopology.isClosed_upperClosure
 -/
 
@@ -305,7 +305,8 @@ instance [Preorder α] [TopologicalSpace α] [LowerTopology α] [OrderBot α] [P
     dsimp
     simp_rw [coe_upperClosure, compl_Union, prod_eq, preimage_Inter, preimage_compl]
     -- Note: `refine` doesn't work here because it tries using `prod.topological_space`.
-    apply (isOpen_biInter hs fun a _ => _).inter (isOpen_biInter ht fun b _ => _)
+    apply
+      (Set.Finite.isOpen_biInter hs fun a _ => _).inter (Set.Finite.isOpen_biInter ht fun b _ => _)
     · exact generate_open.basic _ ⟨(a, ⊥), by simp [Ici_prod_eq, prod_univ]⟩
     · exact generate_open.basic _ ⟨(⊥, b), by simp [Ici_prod_eq, univ_prod]⟩
     all_goals infer_instance
Diff
@@ -208,11 +208,13 @@ theorem isOpen_iff_generate_Ici_compl : IsOpen s ↔ GenerateOpen {t | ∃ a, Ic
 #align lower_topology.is_open_iff_generate_Ici_compl LowerTopology.isOpen_iff_generate_Ici_compl
 -/
 
-#print LowerTopology.isClosed_Ici /-
+/- warning: lower_topology.is_closed_Ici clashes with is_closed_Ici -> isClosed_Ici
+Case conversion may be inaccurate. Consider using '#align lower_topology.is_closed_Ici isClosed_Iciₓ'. -/
+#print isClosed_Ici /-
 /-- Left-closed right-infinite intervals [a, ∞) are closed in the lower topology. -/
 theorem isClosed_Ici (a : α) : IsClosed (Ici a) :=
   isOpen_compl_iff.1 <| isOpen_iff_generate_Ici_compl.2 <| GenerateOpen.basic _ ⟨a, rfl⟩
-#align lower_topology.is_closed_Ici LowerTopology.isClosed_Ici
+#align lower_topology.is_closed_Ici isClosed_Ici
 -/
 
 #print LowerTopology.isClosed_upperClosure /-
@@ -296,7 +298,7 @@ instance [Preorder α] [TopologicalSpace α] [LowerTopology α] [OrderBot α] [P
     by
     refine' le_antisymm (le_generateFrom _) _
     · rintro _ ⟨x, rfl⟩
-      exact ((LowerTopology.isClosed_Ici _).Prod <| LowerTopology.isClosed_Ici _).isOpen_compl
+      exact ((isClosed_Ici _).Prod <| isClosed_Ici _).isOpen_compl
     rw [(lower_topology.is_topological_basis.prod LowerTopology.isTopologicalBasis).eq_generateFrom,
       le_generate_from_iff_subset_is_open, image2_subset_iff]
     rintro _ ⟨s, hs, rfl⟩ _ ⟨t, ht, rfl⟩
@@ -320,7 +322,7 @@ theorem sInfHom.continuous (f : sInfHom α β) : Continuous f :=
   · exact LowerTopology.topology_eq_lowerTopology β
   rintro _ ⟨b, rfl⟩
   rw [preimage_compl, isOpen_compl_iff]
-  convert LowerTopology.isClosed_Ici (Inf <| f ⁻¹' Ici b)
+  convert isClosed_Ici (Inf <| f ⁻¹' Ici b)
   refine' subset_antisymm (fun a => sInf_le) fun a ha => le_trans _ <| OrderHomClass.mono f ha
   simp [map_Inf]
 #align Inf_hom.continuous sInfHom.continuous
Diff
@@ -2,16 +2,13 @@
 Copyright (c) 2023 Christopher Hoskin. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Christopher Hoskin
-
-! This file was ported from Lean 3 source module topology.order.lower_topology
-! leanprover-community/mathlib commit 34ee86e6a59d911a8e4f89b68793ee7577ae79c7
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
 -/
 import Mathbin.Topology.Homeomorph
 import Mathbin.Topology.Order.Lattice
 import Mathbin.Order.Hom.CompleteLattice
 
+#align_import topology.order.lower_topology from "leanprover-community/mathlib"@"34ee86e6a59d911a8e4f89b68793ee7577ae79c7"
+
 /-!
 # Lower topology
 
Diff
@@ -157,16 +157,18 @@ theorem isOpen_preimage_ofLower (S : Set α) :
 #align with_lower_topology.is_open_preimage_of_lower WithLowerTopology.isOpen_preimage_ofLower
 -/
 
+#print WithLowerTopology.isOpen_def /-
 theorem isOpen_def (T : Set (WithLowerTopology α)) :
     IsOpen T ↔
       (generateFrom {s : Set α | ∃ a : α, Ici aᶜ = s}).IsOpen (WithLowerTopology.toLower ⁻¹' T) :=
   Iff.rfl
 #align with_lower_topology.is_open_def WithLowerTopology.isOpen_def
+-/
 
 end WithLowerTopology
 
 #print LowerTopology /-
-/- ./././Mathport/Syntax/Translate/Command.lean:394:30: infer kinds are unsupported in Lean 4: #[`topology_eq_lowerTopology] [] -/
+/- ./././Mathport/Syntax/Translate/Command.lean:393:30: infer kinds are unsupported in Lean 4: #[`topology_eq_lowerTopology] [] -/
 /--
 The lower topology is the topology generated by the complements of the closed intervals to infinity.
 -/
@@ -192,6 +194,7 @@ section Preorder
 
 variable [Preorder α] [TopologicalSpace α] [LowerTopology α] {s : Set α}
 
+#print LowerTopology.withLowerTopologyHomeomorph /-
 /-- If `α` is equipped with the lower topology, then it is homeomorphic to `with_lower_topology α`.
 -/
 def withLowerTopologyHomeomorph : WithLowerTopology α ≃ₜ α :=
@@ -200,10 +203,13 @@ def withLowerTopologyHomeomorph : WithLowerTopology α ≃ₜ α :=
     continuous_toFun := by convert continuous_id; apply topology_eq_lower_topology
     continuous_invFun := by convert ← continuous_id; apply topology_eq_lower_topology }
 #align lower_topology.with_lower_topology_homeomorph LowerTopology.withLowerTopologyHomeomorph
+-/
 
+#print LowerTopology.isOpen_iff_generate_Ici_compl /-
 theorem isOpen_iff_generate_Ici_compl : IsOpen s ↔ GenerateOpen {t | ∃ a, Ici aᶜ = t} s := by
   rw [topology_eq_lower_topology α] <;> rfl
 #align lower_topology.is_open_iff_generate_Ici_compl LowerTopology.isOpen_iff_generate_Ici_compl
+-/
 
 #print LowerTopology.isClosed_Ici /-
 /-- Left-closed right-infinite intervals [a, ∞) are closed in the lower topology. -/
@@ -310,6 +316,7 @@ section CompleteLattice
 variable [CompleteLattice α] [CompleteLattice β] [TopologicalSpace α] [LowerTopology α]
   [TopologicalSpace β] [LowerTopology β]
 
+#print sInfHom.continuous /-
 theorem sInfHom.continuous (f : sInfHom α β) : Continuous f :=
   by
   convert continuous_generateFrom _
@@ -320,11 +327,14 @@ theorem sInfHom.continuous (f : sInfHom α β) : Continuous f :=
   refine' subset_antisymm (fun a => sInf_le) fun a ha => le_trans _ <| OrderHomClass.mono f ha
   simp [map_Inf]
 #align Inf_hom.continuous sInfHom.continuous
+-/
 
+#print LowerTopology.continuousInf /-
 -- see Note [lower instance priority]
 instance (priority := 90) LowerTopology.continuousInf : ContinuousInf α :=
   ⟨(infsInfHom : sInfHom (α × α) α).Continuous⟩
 #align lower_topology.to_has_continuous_inf LowerTopology.continuousInf
+-/
 
 end CompleteLattice
 
Diff
@@ -147,31 +147,31 @@ instance : Preorder (WithLowerTopology α) :=
   ‹Preorder α›
 
 instance : TopologicalSpace (WithLowerTopology α) :=
-  generateFrom { s | ∃ a, Ici aᶜ = s }
+  generateFrom {s | ∃ a, Ici aᶜ = s}
 
 #print WithLowerTopology.isOpen_preimage_ofLower /-
 theorem isOpen_preimage_ofLower (S : Set α) :
     IsOpen (WithLowerTopology.ofLower ⁻¹' S) ↔
-      (generateFrom { s : Set α | ∃ a : α, Ici aᶜ = s }).IsOpen S :=
+      (generateFrom {s : Set α | ∃ a : α, Ici aᶜ = s}).IsOpen S :=
   Iff.rfl
 #align with_lower_topology.is_open_preimage_of_lower WithLowerTopology.isOpen_preimage_ofLower
 -/
 
 theorem isOpen_def (T : Set (WithLowerTopology α)) :
     IsOpen T ↔
-      (generateFrom { s : Set α | ∃ a : α, Ici aᶜ = s }).IsOpen (WithLowerTopology.toLower ⁻¹' T) :=
+      (generateFrom {s : Set α | ∃ a : α, Ici aᶜ = s}).IsOpen (WithLowerTopology.toLower ⁻¹' T) :=
   Iff.rfl
 #align with_lower_topology.is_open_def WithLowerTopology.isOpen_def
 
 end WithLowerTopology
 
 #print LowerTopology /-
-/- ./././Mathport/Syntax/Translate/Command.lean:393:30: infer kinds are unsupported in Lean 4: #[`topology_eq_lowerTopology] [] -/
+/- ./././Mathport/Syntax/Translate/Command.lean:394:30: infer kinds are unsupported in Lean 4: #[`topology_eq_lowerTopology] [] -/
 /--
 The lower topology is the topology generated by the complements of the closed intervals to infinity.
 -/
 class LowerTopology (α : Type _) [t : TopologicalSpace α] [Preorder α] : Prop where
-  topology_eq_lowerTopology : t = generateFrom { s | ∃ a, Ici aᶜ = s }
+  topology_eq_lowerTopology : t = generateFrom {s | ∃ a, Ici aᶜ = s}
 #align lower_topology LowerTopology
 -/
 
@@ -184,7 +184,7 @@ namespace LowerTopology
 /-- The complements of the upper closures of finite sets are a collection of lower sets
 which form a basis for the lower topology. -/
 def lowerBasis (α : Type _) [Preorder α] :=
-  { s : Set α | ∃ t : Set α, t.Finite ∧ (upperClosure t : Set α)ᶜ = s }
+  {s : Set α | ∃ t : Set α, t.Finite ∧ (upperClosure t : Set α)ᶜ = s}
 #align lower_topology.lower_basis LowerTopology.lowerBasis
 -/
 
@@ -198,10 +198,10 @@ def withLowerTopologyHomeomorph : WithLowerTopology α ≃ₜ α :=
   {
     WithLowerTopology.ofLower with
     continuous_toFun := by convert continuous_id; apply topology_eq_lower_topology
-    continuous_invFun := by convert← continuous_id; apply topology_eq_lower_topology }
+    continuous_invFun := by convert ← continuous_id; apply topology_eq_lower_topology }
 #align lower_topology.with_lower_topology_homeomorph LowerTopology.withLowerTopologyHomeomorph
 
-theorem isOpen_iff_generate_Ici_compl : IsOpen s ↔ GenerateOpen { t | ∃ a, Ici aᶜ = t } s := by
+theorem isOpen_iff_generate_Ici_compl : IsOpen s ↔ GenerateOpen {t | ∃ a, Ici aᶜ = t} s := by
   rw [topology_eq_lower_topology α] <;> rfl
 #align lower_topology.is_open_iff_generate_Ici_compl LowerTopology.isOpen_iff_generate_Ici_compl
 
Diff
@@ -225,7 +225,7 @@ theorem isClosed_upperClosure (h : s.Finite) : IsClosed (upperClosure s : Set α
 /-- Every set open in the lower topology is a lower set. -/
 theorem isLowerSet_of_isOpen (h : IsOpen s) : IsLowerSet s :=
   by
-  rw [is_open_iff_generate_Ici_compl] at h
+  rw [is_open_iff_generate_Ici_compl] at h 
   induction h
   case basic u h => obtain ⟨a, rfl⟩ := h; exact (isUpperSet_Ici a).compl
   case univ => exact isLowerSet_univ
@@ -264,7 +264,7 @@ protected theorem isTopologicalBasis : IsTopologicalBasis (lowerBasis α) :=
     rw [sInter_image]
   · rintro ⟨F, ⟨hF, hs⟩, rfl⟩
     haveI := hF.to_subtype
-    rw [subset_def, Subtype.forall'] at hs
+    rw [subset_def, Subtype.forall'] at hs 
     choose f hf using hs
     exact ⟨_, finite_range f, by simp_rw [bInter_range, hf, sInter_eq_Inter]⟩
 #align lower_topology.is_topological_basis LowerTopology.isTopologicalBasis
Diff
@@ -221,6 +221,7 @@ theorem isClosed_upperClosure (h : s.Finite) : IsClosed (upperClosure s : Set α
 #align lower_topology.is_closed_upper_closure LowerTopology.isClosed_upperClosure
 -/
 
+#print LowerTopology.isLowerSet_of_isOpen /-
 /-- Every set open in the lower topology is a lower set. -/
 theorem isLowerSet_of_isOpen (h : IsOpen s) : IsLowerSet s :=
   by
@@ -231,10 +232,13 @@ theorem isLowerSet_of_isOpen (h : IsOpen s) : IsLowerSet s :=
   case inter u v hu1 hv1 hu2 hv2 => exact hu2.inter hv2
   case sUnion _ _ ih => exact isLowerSet_sUnion ih
 #align lower_topology.is_lower_set_of_is_open LowerTopology.isLowerSet_of_isOpen
+-/
 
+#print LowerTopology.isUpperSet_of_isClosed /-
 theorem isUpperSet_of_isClosed (h : IsClosed s) : IsUpperSet s :=
   isLowerSet_compl.1 <| isLowerSet_of_isOpen h.isOpen_compl
 #align lower_topology.is_upper_set_of_is_closed LowerTopology.isUpperSet_of_isClosed
+-/
 
 #print LowerTopology.closure_singleton /-
 /--
Diff
@@ -157,12 +157,6 @@ theorem isOpen_preimage_ofLower (S : Set α) :
 #align with_lower_topology.is_open_preimage_of_lower WithLowerTopology.isOpen_preimage_ofLower
 -/
 
-/- warning: with_lower_topology.is_open_def -> WithLowerTopology.isOpen_def is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : Preorder.{u1} α] (T : Set.{u1} (WithLowerTopology.{u1} α)), Iff (IsOpen.{u1} (WithLowerTopology.{u1} α) (WithLowerTopology.topologicalSpace.{u1} α _inst_1) T) (TopologicalSpace.IsOpen.{u1} α (TopologicalSpace.generateFrom.{u1} α (setOf.{u1} (Set.{u1} α) (fun (s : Set.{u1} α) => Exists.{succ u1} α (fun (a : α) => Eq.{succ u1} (Set.{u1} α) (HasCompl.compl.{u1} (Set.{u1} α) (BooleanAlgebra.toHasCompl.{u1} (Set.{u1} α) (Set.booleanAlgebra.{u1} α)) (Set.Ici.{u1} α _inst_1 a)) s)))) (Set.preimage.{u1, u1} α (WithLowerTopology.{u1} α) (coeFn.{succ u1, succ u1} (Equiv.{succ u1, succ u1} α (WithLowerTopology.{u1} α)) (fun (_x : Equiv.{succ u1, succ u1} α (WithLowerTopology.{u1} α)) => α -> (WithLowerTopology.{u1} α)) (Equiv.hasCoeToFun.{succ u1, succ u1} α (WithLowerTopology.{u1} α)) (WithLowerTopology.toLower.{u1} α)) T))
-but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : Preorder.{u1} α] (T : Set.{u1} (WithLowerTopology.{u1} α)), Iff (IsOpen.{u1} (WithLowerTopology.{u1} α) (WithLowerTopology.instTopologicalSpaceWithLowerTopology.{u1} α _inst_1) T) (TopologicalSpace.IsOpen.{u1} α (TopologicalSpace.generateFrom.{u1} α (setOf.{u1} (Set.{u1} α) (fun (s : Set.{u1} α) => Exists.{succ u1} α (fun (a : α) => Eq.{succ u1} (Set.{u1} α) (HasCompl.compl.{u1} (Set.{u1} α) (BooleanAlgebra.toHasCompl.{u1} (Set.{u1} α) (Set.instBooleanAlgebraSet.{u1} α)) (Set.Ici.{u1} α _inst_1 a)) s)))) (Set.preimage.{u1, u1} α (WithLowerTopology.{u1} α) (FunLike.coe.{succ u1, succ u1, succ u1} (Equiv.{succ u1, succ u1} α (WithLowerTopology.{u1} α)) α (fun (_x : α) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : α) => WithLowerTopology.{u1} α) _x) (Equiv.instFunLikeEquiv.{succ u1, succ u1} α (WithLowerTopology.{u1} α)) (WithLowerTopology.toLower.{u1} α)) T))
-Case conversion may be inaccurate. Consider using '#align with_lower_topology.is_open_def WithLowerTopology.isOpen_defₓ'. -/
 theorem isOpen_def (T : Set (WithLowerTopology α)) :
     IsOpen T ↔
       (generateFrom { s : Set α | ∃ a : α, Ici aᶜ = s }).IsOpen (WithLowerTopology.toLower ⁻¹' T) :=
@@ -198,12 +192,6 @@ section Preorder
 
 variable [Preorder α] [TopologicalSpace α] [LowerTopology α] {s : Set α}
 
-/- warning: lower_topology.with_lower_topology_homeomorph -> LowerTopology.withLowerTopologyHomeomorph is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : Preorder.{u1} α] [_inst_2 : TopologicalSpace.{u1} α] [_inst_3 : LowerTopology.{u1} α _inst_2 _inst_1], Homeomorph.{u1, u1} (WithLowerTopology.{u1} α) α (WithLowerTopology.topologicalSpace.{u1} α _inst_1) _inst_2
-but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : Preorder.{u1} α] [_inst_2 : TopologicalSpace.{u1} α] [_inst_3 : LowerTopology.{u1} α _inst_2 _inst_1], Homeomorph.{u1, u1} (WithLowerTopology.{u1} α) α (WithLowerTopology.instTopologicalSpaceWithLowerTopology.{u1} α _inst_1) _inst_2
-Case conversion may be inaccurate. Consider using '#align lower_topology.with_lower_topology_homeomorph LowerTopology.withLowerTopologyHomeomorphₓ'. -/
 /-- If `α` is equipped with the lower topology, then it is homeomorphic to `with_lower_topology α`.
 -/
 def withLowerTopologyHomeomorph : WithLowerTopology α ≃ₜ α :=
@@ -213,12 +201,6 @@ def withLowerTopologyHomeomorph : WithLowerTopology α ≃ₜ α :=
     continuous_invFun := by convert← continuous_id; apply topology_eq_lower_topology }
 #align lower_topology.with_lower_topology_homeomorph LowerTopology.withLowerTopologyHomeomorph
 
-/- warning: lower_topology.is_open_iff_generate_Ici_compl -> LowerTopology.isOpen_iff_generate_Ici_compl is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : Preorder.{u1} α] [_inst_2 : TopologicalSpace.{u1} α] [_inst_3 : LowerTopology.{u1} α _inst_2 _inst_1] {s : Set.{u1} α}, Iff (IsOpen.{u1} α _inst_2 s) (TopologicalSpace.GenerateOpen.{u1} α (setOf.{u1} (Set.{u1} α) (fun (t : Set.{u1} α) => Exists.{succ u1} α (fun (a : α) => Eq.{succ u1} (Set.{u1} α) (HasCompl.compl.{u1} (Set.{u1} α) (BooleanAlgebra.toHasCompl.{u1} (Set.{u1} α) (Set.booleanAlgebra.{u1} α)) (Set.Ici.{u1} α _inst_1 a)) t))) s)
-but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : Preorder.{u1} α] [_inst_2 : TopologicalSpace.{u1} α] [_inst_3 : LowerTopology.{u1} α _inst_2 _inst_1] {s : Set.{u1} α}, Iff (IsOpen.{u1} α _inst_2 s) (TopologicalSpace.GenerateOpen.{u1} α (setOf.{u1} (Set.{u1} α) (fun (t : Set.{u1} α) => Exists.{succ u1} α (fun (a : α) => Eq.{succ u1} (Set.{u1} α) (HasCompl.compl.{u1} (Set.{u1} α) (BooleanAlgebra.toHasCompl.{u1} (Set.{u1} α) (Set.instBooleanAlgebraSet.{u1} α)) (Set.Ici.{u1} α _inst_1 a)) t))) s)
-Case conversion may be inaccurate. Consider using '#align lower_topology.is_open_iff_generate_Ici_compl LowerTopology.isOpen_iff_generate_Ici_complₓ'. -/
 theorem isOpen_iff_generate_Ici_compl : IsOpen s ↔ GenerateOpen { t | ∃ a, Ici aᶜ = t } s := by
   rw [topology_eq_lower_topology α] <;> rfl
 #align lower_topology.is_open_iff_generate_Ici_compl LowerTopology.isOpen_iff_generate_Ici_compl
@@ -239,12 +221,6 @@ theorem isClosed_upperClosure (h : s.Finite) : IsClosed (upperClosure s : Set α
 #align lower_topology.is_closed_upper_closure LowerTopology.isClosed_upperClosure
 -/
 
-/- warning: lower_topology.is_lower_set_of_is_open -> LowerTopology.isLowerSet_of_isOpen is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : Preorder.{u1} α] [_inst_2 : TopologicalSpace.{u1} α] [_inst_3 : LowerTopology.{u1} α _inst_2 _inst_1] {s : Set.{u1} α}, (IsOpen.{u1} α _inst_2 s) -> (IsLowerSet.{u1} α (Preorder.toHasLe.{u1} α _inst_1) s)
-but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : Preorder.{u1} α] [_inst_2 : TopologicalSpace.{u1} α] [_inst_3 : LowerTopology.{u1} α _inst_2 _inst_1] {s : Set.{u1} α}, (IsOpen.{u1} α _inst_2 s) -> (IsLowerSet.{u1} α (Preorder.toLE.{u1} α _inst_1) s)
-Case conversion may be inaccurate. Consider using '#align lower_topology.is_lower_set_of_is_open LowerTopology.isLowerSet_of_isOpenₓ'. -/
 /-- Every set open in the lower topology is a lower set. -/
 theorem isLowerSet_of_isOpen (h : IsOpen s) : IsLowerSet s :=
   by
@@ -256,12 +232,6 @@ theorem isLowerSet_of_isOpen (h : IsOpen s) : IsLowerSet s :=
   case sUnion _ _ ih => exact isLowerSet_sUnion ih
 #align lower_topology.is_lower_set_of_is_open LowerTopology.isLowerSet_of_isOpen
 
-/- warning: lower_topology.is_upper_set_of_is_closed -> LowerTopology.isUpperSet_of_isClosed is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : Preorder.{u1} α] [_inst_2 : TopologicalSpace.{u1} α] [_inst_3 : LowerTopology.{u1} α _inst_2 _inst_1] {s : Set.{u1} α}, (IsClosed.{u1} α _inst_2 s) -> (IsUpperSet.{u1} α (Preorder.toHasLe.{u1} α _inst_1) s)
-but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : Preorder.{u1} α] [_inst_2 : TopologicalSpace.{u1} α] [_inst_3 : LowerTopology.{u1} α _inst_2 _inst_1] {s : Set.{u1} α}, (IsClosed.{u1} α _inst_2 s) -> (IsUpperSet.{u1} α (Preorder.toLE.{u1} α _inst_1) s)
-Case conversion may be inaccurate. Consider using '#align lower_topology.is_upper_set_of_is_closed LowerTopology.isUpperSet_of_isClosedₓ'. -/
 theorem isUpperSet_of_isClosed (h : IsClosed s) : IsUpperSet s :=
   isLowerSet_compl.1 <| isLowerSet_of_isOpen h.isOpen_compl
 #align lower_topology.is_upper_set_of_is_closed LowerTopology.isUpperSet_of_isClosed
@@ -336,12 +306,6 @@ section CompleteLattice
 variable [CompleteLattice α] [CompleteLattice β] [TopologicalSpace α] [LowerTopology α]
   [TopologicalSpace β] [LowerTopology β]
 
-/- warning: Inf_hom.continuous -> sInfHom.continuous is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : CompleteLattice.{u1} α] [_inst_2 : CompleteLattice.{u2} β] [_inst_3 : TopologicalSpace.{u1} α] [_inst_4 : LowerTopology.{u1} α _inst_3 (PartialOrder.toPreorder.{u1} α (CompleteSemilatticeInf.toPartialOrder.{u1} α (CompleteLattice.toCompleteSemilatticeInf.{u1} α _inst_1)))] [_inst_5 : TopologicalSpace.{u2} β] [_inst_6 : LowerTopology.{u2} β _inst_5 (PartialOrder.toPreorder.{u2} β (CompleteSemilatticeInf.toPartialOrder.{u2} β (CompleteLattice.toCompleteSemilatticeInf.{u2} β _inst_2)))] (f : sInfHom.{u1, u2} α β (ConditionallyCompleteLattice.toHasInf.{u1} α (CompleteLattice.toConditionallyCompleteLattice.{u1} α _inst_1)) (ConditionallyCompleteLattice.toHasInf.{u2} β (CompleteLattice.toConditionallyCompleteLattice.{u2} β _inst_2))), Continuous.{u1, u2} α β _inst_3 _inst_5 (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (sInfHom.{u1, u2} α β (ConditionallyCompleteLattice.toHasInf.{u1} α (CompleteLattice.toConditionallyCompleteLattice.{u1} α _inst_1)) (ConditionallyCompleteLattice.toHasInf.{u2} β (CompleteLattice.toConditionallyCompleteLattice.{u2} β _inst_2))) (fun (_x : sInfHom.{u1, u2} α β (ConditionallyCompleteLattice.toHasInf.{u1} α (CompleteLattice.toConditionallyCompleteLattice.{u1} α _inst_1)) (ConditionallyCompleteLattice.toHasInf.{u2} β (CompleteLattice.toConditionallyCompleteLattice.{u2} β _inst_2))) => α -> β) (sInfHom.hasCoeToFun.{u1, u2} α β (ConditionallyCompleteLattice.toHasInf.{u1} α (CompleteLattice.toConditionallyCompleteLattice.{u1} α _inst_1)) (ConditionallyCompleteLattice.toHasInf.{u2} β (CompleteLattice.toConditionallyCompleteLattice.{u2} β _inst_2))) f)
-but is expected to have type
-  forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : CompleteLattice.{u2} α] [_inst_2 : CompleteLattice.{u1} β] [_inst_3 : TopologicalSpace.{u2} α] [_inst_4 : LowerTopology.{u2} α _inst_3 (PartialOrder.toPreorder.{u2} α (CompleteSemilatticeInf.toPartialOrder.{u2} α (CompleteLattice.toCompleteSemilatticeInf.{u2} α _inst_1)))] [_inst_5 : TopologicalSpace.{u1} β] [_inst_6 : LowerTopology.{u1} β _inst_5 (PartialOrder.toPreorder.{u1} β (CompleteSemilatticeInf.toPartialOrder.{u1} β (CompleteLattice.toCompleteSemilatticeInf.{u1} β _inst_2)))] (f : sInfHom.{u2, u1} α β (ConditionallyCompleteLattice.toInfSet.{u2} α (CompleteLattice.toConditionallyCompleteLattice.{u2} α _inst_1)) (ConditionallyCompleteLattice.toInfSet.{u1} β (CompleteLattice.toConditionallyCompleteLattice.{u1} β _inst_2))), Continuous.{u2, u1} α β _inst_3 _inst_5 (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (sInfHom.{u2, u1} α β (ConditionallyCompleteLattice.toInfSet.{u2} α (CompleteLattice.toConditionallyCompleteLattice.{u2} α _inst_1)) (ConditionallyCompleteLattice.toInfSet.{u1} β (CompleteLattice.toConditionallyCompleteLattice.{u1} β _inst_2))) α (fun (_x : α) => (fun (x._@.Mathlib.Order.Hom.CompleteLattice._hyg.374 : α) => β) _x) (sInfHomClass.toFunLike.{max u2 u1, u2, u1} (sInfHom.{u2, u1} α β (ConditionallyCompleteLattice.toInfSet.{u2} α (CompleteLattice.toConditionallyCompleteLattice.{u2} α _inst_1)) (ConditionallyCompleteLattice.toInfSet.{u1} β (CompleteLattice.toConditionallyCompleteLattice.{u1} β _inst_2))) α β (ConditionallyCompleteLattice.toInfSet.{u2} α (CompleteLattice.toConditionallyCompleteLattice.{u2} α _inst_1)) (ConditionallyCompleteLattice.toInfSet.{u1} β (CompleteLattice.toConditionallyCompleteLattice.{u1} β _inst_2)) (sInfHom.instSInfHomClassSInfHom.{u2, u1} α β (ConditionallyCompleteLattice.toInfSet.{u2} α (CompleteLattice.toConditionallyCompleteLattice.{u2} α _inst_1)) (ConditionallyCompleteLattice.toInfSet.{u1} β (CompleteLattice.toConditionallyCompleteLattice.{u1} β _inst_2)))) f)
-Case conversion may be inaccurate. Consider using '#align Inf_hom.continuous sInfHom.continuousₓ'. -/
 theorem sInfHom.continuous (f : sInfHom α β) : Continuous f :=
   by
   convert continuous_generateFrom _
@@ -353,12 +317,6 @@ theorem sInfHom.continuous (f : sInfHom α β) : Continuous f :=
   simp [map_Inf]
 #align Inf_hom.continuous sInfHom.continuous
 
-/- warning: lower_topology.to_has_continuous_inf -> LowerTopology.continuousInf is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : CompleteLattice.{u1} α] [_inst_3 : TopologicalSpace.{u1} α] [_inst_4 : LowerTopology.{u1} α _inst_3 (PartialOrder.toPreorder.{u1} α (CompleteSemilatticeInf.toPartialOrder.{u1} α (CompleteLattice.toCompleteSemilatticeInf.{u1} α _inst_1)))], ContinuousInf.{u1} α _inst_3 (SemilatticeInf.toHasInf.{u1} α (Lattice.toSemilatticeInf.{u1} α (ConditionallyCompleteLattice.toLattice.{u1} α (CompleteLattice.toConditionallyCompleteLattice.{u1} α _inst_1))))
-but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : CompleteLattice.{u1} α] [_inst_3 : TopologicalSpace.{u1} α] [_inst_4 : LowerTopology.{u1} α _inst_3 (PartialOrder.toPreorder.{u1} α (CompleteSemilatticeInf.toPartialOrder.{u1} α (CompleteLattice.toCompleteSemilatticeInf.{u1} α _inst_1)))], ContinuousInf.{u1} α _inst_3 (Lattice.toInf.{u1} α (ConditionallyCompleteLattice.toLattice.{u1} α (CompleteLattice.toConditionallyCompleteLattice.{u1} α _inst_1)))
-Case conversion may be inaccurate. Consider using '#align lower_topology.to_has_continuous_inf LowerTopology.continuousInfₓ'. -/
 -- see Note [lower instance priority]
 instance (priority := 90) LowerTopology.continuousInf : ContinuousInf α :=
   ⟨(infsInfHom : sInfHom (α × α) α).Continuous⟩
Diff
@@ -209,12 +209,8 @@ Case conversion may be inaccurate. Consider using '#align lower_topology.with_lo
 def withLowerTopologyHomeomorph : WithLowerTopology α ≃ₜ α :=
   {
     WithLowerTopology.ofLower with
-    continuous_toFun := by
-      convert continuous_id
-      apply topology_eq_lower_topology
-    continuous_invFun := by
-      convert← continuous_id
-      apply topology_eq_lower_topology }
+    continuous_toFun := by convert continuous_id; apply topology_eq_lower_topology
+    continuous_invFun := by convert← continuous_id; apply topology_eq_lower_topology }
 #align lower_topology.with_lower_topology_homeomorph LowerTopology.withLowerTopologyHomeomorph
 
 /- warning: lower_topology.is_open_iff_generate_Ici_compl -> LowerTopology.isOpen_iff_generate_Ici_compl is a dubious translation:
Diff
@@ -161,7 +161,7 @@ theorem isOpen_preimage_ofLower (S : Set α) :
 lean 3 declaration is
   forall {α : Type.{u1}} [_inst_1 : Preorder.{u1} α] (T : Set.{u1} (WithLowerTopology.{u1} α)), Iff (IsOpen.{u1} (WithLowerTopology.{u1} α) (WithLowerTopology.topologicalSpace.{u1} α _inst_1) T) (TopologicalSpace.IsOpen.{u1} α (TopologicalSpace.generateFrom.{u1} α (setOf.{u1} (Set.{u1} α) (fun (s : Set.{u1} α) => Exists.{succ u1} α (fun (a : α) => Eq.{succ u1} (Set.{u1} α) (HasCompl.compl.{u1} (Set.{u1} α) (BooleanAlgebra.toHasCompl.{u1} (Set.{u1} α) (Set.booleanAlgebra.{u1} α)) (Set.Ici.{u1} α _inst_1 a)) s)))) (Set.preimage.{u1, u1} α (WithLowerTopology.{u1} α) (coeFn.{succ u1, succ u1} (Equiv.{succ u1, succ u1} α (WithLowerTopology.{u1} α)) (fun (_x : Equiv.{succ u1, succ u1} α (WithLowerTopology.{u1} α)) => α -> (WithLowerTopology.{u1} α)) (Equiv.hasCoeToFun.{succ u1, succ u1} α (WithLowerTopology.{u1} α)) (WithLowerTopology.toLower.{u1} α)) T))
 but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : Preorder.{u1} α] (T : Set.{u1} (WithLowerTopology.{u1} α)), Iff (IsOpen.{u1} (WithLowerTopology.{u1} α) (WithLowerTopology.instTopologicalSpaceWithLowerTopology.{u1} α _inst_1) T) (TopologicalSpace.IsOpen.{u1} α (TopologicalSpace.generateFrom.{u1} α (setOf.{u1} (Set.{u1} α) (fun (s : Set.{u1} α) => Exists.{succ u1} α (fun (a : α) => Eq.{succ u1} (Set.{u1} α) (HasCompl.compl.{u1} (Set.{u1} α) (BooleanAlgebra.toHasCompl.{u1} (Set.{u1} α) (Set.instBooleanAlgebraSet.{u1} α)) (Set.Ici.{u1} α _inst_1 a)) s)))) (Set.preimage.{u1, u1} α (WithLowerTopology.{u1} α) (FunLike.coe.{succ u1, succ u1, succ u1} (Equiv.{succ u1, succ u1} α (WithLowerTopology.{u1} α)) α (fun (_x : α) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : α) => WithLowerTopology.{u1} α) _x) (Equiv.instFunLikeEquiv.{succ u1, succ u1} α (WithLowerTopology.{u1} α)) (WithLowerTopology.toLower.{u1} α)) T))
+  forall {α : Type.{u1}} [_inst_1 : Preorder.{u1} α] (T : Set.{u1} (WithLowerTopology.{u1} α)), Iff (IsOpen.{u1} (WithLowerTopology.{u1} α) (WithLowerTopology.instTopologicalSpaceWithLowerTopology.{u1} α _inst_1) T) (TopologicalSpace.IsOpen.{u1} α (TopologicalSpace.generateFrom.{u1} α (setOf.{u1} (Set.{u1} α) (fun (s : Set.{u1} α) => Exists.{succ u1} α (fun (a : α) => Eq.{succ u1} (Set.{u1} α) (HasCompl.compl.{u1} (Set.{u1} α) (BooleanAlgebra.toHasCompl.{u1} (Set.{u1} α) (Set.instBooleanAlgebraSet.{u1} α)) (Set.Ici.{u1} α _inst_1 a)) s)))) (Set.preimage.{u1, u1} α (WithLowerTopology.{u1} α) (FunLike.coe.{succ u1, succ u1, succ u1} (Equiv.{succ u1, succ u1} α (WithLowerTopology.{u1} α)) α (fun (_x : α) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : α) => WithLowerTopology.{u1} α) _x) (Equiv.instFunLikeEquiv.{succ u1, succ u1} α (WithLowerTopology.{u1} α)) (WithLowerTopology.toLower.{u1} α)) T))
 Case conversion may be inaccurate. Consider using '#align with_lower_topology.is_open_def WithLowerTopology.isOpen_defₓ'. -/
 theorem isOpen_def (T : Set (WithLowerTopology α)) :
     IsOpen T ↔
Diff
@@ -243,7 +243,12 @@ theorem isClosed_upperClosure (h : s.Finite) : IsClosed (upperClosure s : Set α
 #align lower_topology.is_closed_upper_closure LowerTopology.isClosed_upperClosure
 -/
 
-#print LowerTopology.isLowerSet_of_isOpen /-
+/- warning: lower_topology.is_lower_set_of_is_open -> LowerTopology.isLowerSet_of_isOpen is a dubious translation:
+lean 3 declaration is
+  forall {α : Type.{u1}} [_inst_1 : Preorder.{u1} α] [_inst_2 : TopologicalSpace.{u1} α] [_inst_3 : LowerTopology.{u1} α _inst_2 _inst_1] {s : Set.{u1} α}, (IsOpen.{u1} α _inst_2 s) -> (IsLowerSet.{u1} α (Preorder.toHasLe.{u1} α _inst_1) s)
+but is expected to have type
+  forall {α : Type.{u1}} [_inst_1 : Preorder.{u1} α] [_inst_2 : TopologicalSpace.{u1} α] [_inst_3 : LowerTopology.{u1} α _inst_2 _inst_1] {s : Set.{u1} α}, (IsOpen.{u1} α _inst_2 s) -> (IsLowerSet.{u1} α (Preorder.toLE.{u1} α _inst_1) s)
+Case conversion may be inaccurate. Consider using '#align lower_topology.is_lower_set_of_is_open LowerTopology.isLowerSet_of_isOpenₓ'. -/
 /-- Every set open in the lower topology is a lower set. -/
 theorem isLowerSet_of_isOpen (h : IsOpen s) : IsLowerSet s :=
   by
@@ -254,13 +259,16 @@ theorem isLowerSet_of_isOpen (h : IsOpen s) : IsLowerSet s :=
   case inter u v hu1 hv1 hu2 hv2 => exact hu2.inter hv2
   case sUnion _ _ ih => exact isLowerSet_sUnion ih
 #align lower_topology.is_lower_set_of_is_open LowerTopology.isLowerSet_of_isOpen
--/
 
-#print LowerTopology.isUpperSet_of_isClosed /-
+/- warning: lower_topology.is_upper_set_of_is_closed -> LowerTopology.isUpperSet_of_isClosed is a dubious translation:
+lean 3 declaration is
+  forall {α : Type.{u1}} [_inst_1 : Preorder.{u1} α] [_inst_2 : TopologicalSpace.{u1} α] [_inst_3 : LowerTopology.{u1} α _inst_2 _inst_1] {s : Set.{u1} α}, (IsClosed.{u1} α _inst_2 s) -> (IsUpperSet.{u1} α (Preorder.toHasLe.{u1} α _inst_1) s)
+but is expected to have type
+  forall {α : Type.{u1}} [_inst_1 : Preorder.{u1} α] [_inst_2 : TopologicalSpace.{u1} α] [_inst_3 : LowerTopology.{u1} α _inst_2 _inst_1] {s : Set.{u1} α}, (IsClosed.{u1} α _inst_2 s) -> (IsUpperSet.{u1} α (Preorder.toLE.{u1} α _inst_1) s)
+Case conversion may be inaccurate. Consider using '#align lower_topology.is_upper_set_of_is_closed LowerTopology.isUpperSet_of_isClosedₓ'. -/
 theorem isUpperSet_of_isClosed (h : IsClosed s) : IsUpperSet s :=
   isLowerSet_compl.1 <| isLowerSet_of_isOpen h.isOpen_compl
 #align lower_topology.is_upper_set_of_is_closed LowerTopology.isUpperSet_of_isClosed
--/
 
 #print LowerTopology.closure_singleton /-
 /--
Diff
@@ -238,8 +238,8 @@ theorem isClosed_Ici (a : α) : IsClosed (Ici a) :=
 /-- The upper closure of a finite set is closed in the lower topology. -/
 theorem isClosed_upperClosure (h : s.Finite) : IsClosed (upperClosure s : Set α) :=
   by
-  simp only [← UpperSet.infᵢ_Ici, UpperSet.coe_infᵢ]
-  exact isClosed_bunionᵢ h fun a h₁ => isClosed_Ici a
+  simp only [← UpperSet.iInf_Ici, UpperSet.coe_iInf]
+  exact isClosed_biUnion h fun a h₁ => isClosed_Ici a
 #align lower_topology.is_closed_upper_closure LowerTopology.isClosed_upperClosure
 -/
 
@@ -252,7 +252,7 @@ theorem isLowerSet_of_isOpen (h : IsOpen s) : IsLowerSet s :=
   case basic u h => obtain ⟨a, rfl⟩ := h; exact (isUpperSet_Ici a).compl
   case univ => exact isLowerSet_univ
   case inter u v hu1 hv1 hu2 hv2 => exact hu2.inter hv2
-  case sUnion _ _ ih => exact isLowerSet_unionₛ ih
+  case sUnion _ _ ih => exact isLowerSet_sUnion ih
 #align lower_topology.is_lower_set_of_is_open LowerTopology.isLowerSet_of_isOpen
 -/
 
@@ -322,7 +322,7 @@ instance [Preorder α] [TopologicalSpace α] [LowerTopology α] [OrderBot α] [P
     dsimp
     simp_rw [coe_upperClosure, compl_Union, prod_eq, preimage_Inter, preimage_compl]
     -- Note: `refine` doesn't work here because it tries using `prod.topological_space`.
-    apply (isOpen_binterᵢ hs fun a _ => _).inter (isOpen_binterᵢ ht fun b _ => _)
+    apply (isOpen_biInter hs fun a _ => _).inter (isOpen_biInter ht fun b _ => _)
     · exact generate_open.basic _ ⟨(a, ⊥), by simp [Ici_prod_eq, prod_univ]⟩
     · exact generate_open.basic _ ⟨(⊥, b), by simp [Ici_prod_eq, univ_prod]⟩
     all_goals infer_instance
@@ -332,22 +332,22 @@ section CompleteLattice
 variable [CompleteLattice α] [CompleteLattice β] [TopologicalSpace α] [LowerTopology α]
   [TopologicalSpace β] [LowerTopology β]
 
-/- warning: Inf_hom.continuous -> InfₛHom.continuous is a dubious translation:
+/- warning: Inf_hom.continuous -> sInfHom.continuous is a dubious translation:
 lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : CompleteLattice.{u1} α] [_inst_2 : CompleteLattice.{u2} β] [_inst_3 : TopologicalSpace.{u1} α] [_inst_4 : LowerTopology.{u1} α _inst_3 (PartialOrder.toPreorder.{u1} α (CompleteSemilatticeInf.toPartialOrder.{u1} α (CompleteLattice.toCompleteSemilatticeInf.{u1} α _inst_1)))] [_inst_5 : TopologicalSpace.{u2} β] [_inst_6 : LowerTopology.{u2} β _inst_5 (PartialOrder.toPreorder.{u2} β (CompleteSemilatticeInf.toPartialOrder.{u2} β (CompleteLattice.toCompleteSemilatticeInf.{u2} β _inst_2)))] (f : InfₛHom.{u1, u2} α β (ConditionallyCompleteLattice.toHasInf.{u1} α (CompleteLattice.toConditionallyCompleteLattice.{u1} α _inst_1)) (ConditionallyCompleteLattice.toHasInf.{u2} β (CompleteLattice.toConditionallyCompleteLattice.{u2} β _inst_2))), Continuous.{u1, u2} α β _inst_3 _inst_5 (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (InfₛHom.{u1, u2} α β (ConditionallyCompleteLattice.toHasInf.{u1} α (CompleteLattice.toConditionallyCompleteLattice.{u1} α _inst_1)) (ConditionallyCompleteLattice.toHasInf.{u2} β (CompleteLattice.toConditionallyCompleteLattice.{u2} β _inst_2))) (fun (_x : InfₛHom.{u1, u2} α β (ConditionallyCompleteLattice.toHasInf.{u1} α (CompleteLattice.toConditionallyCompleteLattice.{u1} α _inst_1)) (ConditionallyCompleteLattice.toHasInf.{u2} β (CompleteLattice.toConditionallyCompleteLattice.{u2} β _inst_2))) => α -> β) (InfₛHom.hasCoeToFun.{u1, u2} α β (ConditionallyCompleteLattice.toHasInf.{u1} α (CompleteLattice.toConditionallyCompleteLattice.{u1} α _inst_1)) (ConditionallyCompleteLattice.toHasInf.{u2} β (CompleteLattice.toConditionallyCompleteLattice.{u2} β _inst_2))) f)
+  forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : CompleteLattice.{u1} α] [_inst_2 : CompleteLattice.{u2} β] [_inst_3 : TopologicalSpace.{u1} α] [_inst_4 : LowerTopology.{u1} α _inst_3 (PartialOrder.toPreorder.{u1} α (CompleteSemilatticeInf.toPartialOrder.{u1} α (CompleteLattice.toCompleteSemilatticeInf.{u1} α _inst_1)))] [_inst_5 : TopologicalSpace.{u2} β] [_inst_6 : LowerTopology.{u2} β _inst_5 (PartialOrder.toPreorder.{u2} β (CompleteSemilatticeInf.toPartialOrder.{u2} β (CompleteLattice.toCompleteSemilatticeInf.{u2} β _inst_2)))] (f : sInfHom.{u1, u2} α β (ConditionallyCompleteLattice.toHasInf.{u1} α (CompleteLattice.toConditionallyCompleteLattice.{u1} α _inst_1)) (ConditionallyCompleteLattice.toHasInf.{u2} β (CompleteLattice.toConditionallyCompleteLattice.{u2} β _inst_2))), Continuous.{u1, u2} α β _inst_3 _inst_5 (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (sInfHom.{u1, u2} α β (ConditionallyCompleteLattice.toHasInf.{u1} α (CompleteLattice.toConditionallyCompleteLattice.{u1} α _inst_1)) (ConditionallyCompleteLattice.toHasInf.{u2} β (CompleteLattice.toConditionallyCompleteLattice.{u2} β _inst_2))) (fun (_x : sInfHom.{u1, u2} α β (ConditionallyCompleteLattice.toHasInf.{u1} α (CompleteLattice.toConditionallyCompleteLattice.{u1} α _inst_1)) (ConditionallyCompleteLattice.toHasInf.{u2} β (CompleteLattice.toConditionallyCompleteLattice.{u2} β _inst_2))) => α -> β) (sInfHom.hasCoeToFun.{u1, u2} α β (ConditionallyCompleteLattice.toHasInf.{u1} α (CompleteLattice.toConditionallyCompleteLattice.{u1} α _inst_1)) (ConditionallyCompleteLattice.toHasInf.{u2} β (CompleteLattice.toConditionallyCompleteLattice.{u2} β _inst_2))) f)
 but is expected to have type
-  forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : CompleteLattice.{u2} α] [_inst_2 : CompleteLattice.{u1} β] [_inst_3 : TopologicalSpace.{u2} α] [_inst_4 : LowerTopology.{u2} α _inst_3 (PartialOrder.toPreorder.{u2} α (CompleteSemilatticeInf.toPartialOrder.{u2} α (CompleteLattice.toCompleteSemilatticeInf.{u2} α _inst_1)))] [_inst_5 : TopologicalSpace.{u1} β] [_inst_6 : LowerTopology.{u1} β _inst_5 (PartialOrder.toPreorder.{u1} β (CompleteSemilatticeInf.toPartialOrder.{u1} β (CompleteLattice.toCompleteSemilatticeInf.{u1} β _inst_2)))] (f : InfₛHom.{u2, u1} α β (ConditionallyCompleteLattice.toInfSet.{u2} α (CompleteLattice.toConditionallyCompleteLattice.{u2} α _inst_1)) (ConditionallyCompleteLattice.toInfSet.{u1} β (CompleteLattice.toConditionallyCompleteLattice.{u1} β _inst_2))), Continuous.{u2, u1} α β _inst_3 _inst_5 (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (InfₛHom.{u2, u1} α β (ConditionallyCompleteLattice.toInfSet.{u2} α (CompleteLattice.toConditionallyCompleteLattice.{u2} α _inst_1)) (ConditionallyCompleteLattice.toInfSet.{u1} β (CompleteLattice.toConditionallyCompleteLattice.{u1} β _inst_2))) α (fun (_x : α) => (fun (x._@.Mathlib.Order.Hom.CompleteLattice._hyg.374 : α) => β) _x) (InfₛHomClass.toFunLike.{max u2 u1, u2, u1} (InfₛHom.{u2, u1} α β (ConditionallyCompleteLattice.toInfSet.{u2} α (CompleteLattice.toConditionallyCompleteLattice.{u2} α _inst_1)) (ConditionallyCompleteLattice.toInfSet.{u1} β (CompleteLattice.toConditionallyCompleteLattice.{u1} β _inst_2))) α β (ConditionallyCompleteLattice.toInfSet.{u2} α (CompleteLattice.toConditionallyCompleteLattice.{u2} α _inst_1)) (ConditionallyCompleteLattice.toInfSet.{u1} β (CompleteLattice.toConditionallyCompleteLattice.{u1} β _inst_2)) (InfₛHom.instInfₛHomClassInfₛHom.{u2, u1} α β (ConditionallyCompleteLattice.toInfSet.{u2} α (CompleteLattice.toConditionallyCompleteLattice.{u2} α _inst_1)) (ConditionallyCompleteLattice.toInfSet.{u1} β (CompleteLattice.toConditionallyCompleteLattice.{u1} β _inst_2)))) f)
-Case conversion may be inaccurate. Consider using '#align Inf_hom.continuous InfₛHom.continuousₓ'. -/
-theorem InfₛHom.continuous (f : InfₛHom α β) : Continuous f :=
+  forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : CompleteLattice.{u2} α] [_inst_2 : CompleteLattice.{u1} β] [_inst_3 : TopologicalSpace.{u2} α] [_inst_4 : LowerTopology.{u2} α _inst_3 (PartialOrder.toPreorder.{u2} α (CompleteSemilatticeInf.toPartialOrder.{u2} α (CompleteLattice.toCompleteSemilatticeInf.{u2} α _inst_1)))] [_inst_5 : TopologicalSpace.{u1} β] [_inst_6 : LowerTopology.{u1} β _inst_5 (PartialOrder.toPreorder.{u1} β (CompleteSemilatticeInf.toPartialOrder.{u1} β (CompleteLattice.toCompleteSemilatticeInf.{u1} β _inst_2)))] (f : sInfHom.{u2, u1} α β (ConditionallyCompleteLattice.toInfSet.{u2} α (CompleteLattice.toConditionallyCompleteLattice.{u2} α _inst_1)) (ConditionallyCompleteLattice.toInfSet.{u1} β (CompleteLattice.toConditionallyCompleteLattice.{u1} β _inst_2))), Continuous.{u2, u1} α β _inst_3 _inst_5 (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (sInfHom.{u2, u1} α β (ConditionallyCompleteLattice.toInfSet.{u2} α (CompleteLattice.toConditionallyCompleteLattice.{u2} α _inst_1)) (ConditionallyCompleteLattice.toInfSet.{u1} β (CompleteLattice.toConditionallyCompleteLattice.{u1} β _inst_2))) α (fun (_x : α) => (fun (x._@.Mathlib.Order.Hom.CompleteLattice._hyg.374 : α) => β) _x) (sInfHomClass.toFunLike.{max u2 u1, u2, u1} (sInfHom.{u2, u1} α β (ConditionallyCompleteLattice.toInfSet.{u2} α (CompleteLattice.toConditionallyCompleteLattice.{u2} α _inst_1)) (ConditionallyCompleteLattice.toInfSet.{u1} β (CompleteLattice.toConditionallyCompleteLattice.{u1} β _inst_2))) α β (ConditionallyCompleteLattice.toInfSet.{u2} α (CompleteLattice.toConditionallyCompleteLattice.{u2} α _inst_1)) (ConditionallyCompleteLattice.toInfSet.{u1} β (CompleteLattice.toConditionallyCompleteLattice.{u1} β _inst_2)) (sInfHom.instSInfHomClassSInfHom.{u2, u1} α β (ConditionallyCompleteLattice.toInfSet.{u2} α (CompleteLattice.toConditionallyCompleteLattice.{u2} α _inst_1)) (ConditionallyCompleteLattice.toInfSet.{u1} β (CompleteLattice.toConditionallyCompleteLattice.{u1} β _inst_2)))) f)
+Case conversion may be inaccurate. Consider using '#align Inf_hom.continuous sInfHom.continuousₓ'. -/
+theorem sInfHom.continuous (f : sInfHom α β) : Continuous f :=
   by
   convert continuous_generateFrom _
   · exact LowerTopology.topology_eq_lowerTopology β
   rintro _ ⟨b, rfl⟩
   rw [preimage_compl, isOpen_compl_iff]
   convert LowerTopology.isClosed_Ici (Inf <| f ⁻¹' Ici b)
-  refine' subset_antisymm (fun a => infₛ_le) fun a ha => le_trans _ <| OrderHomClass.mono f ha
+  refine' subset_antisymm (fun a => sInf_le) fun a ha => le_trans _ <| OrderHomClass.mono f ha
   simp [map_Inf]
-#align Inf_hom.continuous InfₛHom.continuous
+#align Inf_hom.continuous sInfHom.continuous
 
 /- warning: lower_topology.to_has_continuous_inf -> LowerTopology.continuousInf is a dubious translation:
 lean 3 declaration is
@@ -357,7 +357,7 @@ but is expected to have type
 Case conversion may be inaccurate. Consider using '#align lower_topology.to_has_continuous_inf LowerTopology.continuousInfₓ'. -/
 -- see Note [lower instance priority]
 instance (priority := 90) LowerTopology.continuousInf : ContinuousInf α :=
-  ⟨(infInfₛHom : InfₛHom (α × α) α).Continuous⟩
+  ⟨(infsInfHom : sInfHom (α × α) α).Continuous⟩
 #align lower_topology.to_has_continuous_inf LowerTopology.continuousInf
 
 end CompleteLattice
Diff
@@ -172,7 +172,7 @@ theorem isOpen_def (T : Set (WithLowerTopology α)) :
 end WithLowerTopology
 
 #print LowerTopology /-
-/- ./././Mathport/Syntax/Translate/Command.lean:388:30: infer kinds are unsupported in Lean 4: #[`topology_eq_lowerTopology] [] -/
+/- ./././Mathport/Syntax/Translate/Command.lean:393:30: infer kinds are unsupported in Lean 4: #[`topology_eq_lowerTopology] [] -/
 /--
 The lower topology is the topology generated by the complements of the closed intervals to infinity.
 -/
Diff
@@ -213,7 +213,7 @@ def withLowerTopologyHomeomorph : WithLowerTopology α ≃ₜ α :=
       convert continuous_id
       apply topology_eq_lower_topology
     continuous_invFun := by
-      convert ← continuous_id
+      convert← continuous_id
       apply topology_eq_lower_topology }
 #align lower_topology.with_lower_topology_homeomorph LowerTopology.withLowerTopologyHomeomorph
 
Diff
@@ -161,7 +161,7 @@ theorem isOpen_preimage_ofLower (S : Set α) :
 lean 3 declaration is
   forall {α : Type.{u1}} [_inst_1 : Preorder.{u1} α] (T : Set.{u1} (WithLowerTopology.{u1} α)), Iff (IsOpen.{u1} (WithLowerTopology.{u1} α) (WithLowerTopology.topologicalSpace.{u1} α _inst_1) T) (TopologicalSpace.IsOpen.{u1} α (TopologicalSpace.generateFrom.{u1} α (setOf.{u1} (Set.{u1} α) (fun (s : Set.{u1} α) => Exists.{succ u1} α (fun (a : α) => Eq.{succ u1} (Set.{u1} α) (HasCompl.compl.{u1} (Set.{u1} α) (BooleanAlgebra.toHasCompl.{u1} (Set.{u1} α) (Set.booleanAlgebra.{u1} α)) (Set.Ici.{u1} α _inst_1 a)) s)))) (Set.preimage.{u1, u1} α (WithLowerTopology.{u1} α) (coeFn.{succ u1, succ u1} (Equiv.{succ u1, succ u1} α (WithLowerTopology.{u1} α)) (fun (_x : Equiv.{succ u1, succ u1} α (WithLowerTopology.{u1} α)) => α -> (WithLowerTopology.{u1} α)) (Equiv.hasCoeToFun.{succ u1, succ u1} α (WithLowerTopology.{u1} α)) (WithLowerTopology.toLower.{u1} α)) T))
 but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : Preorder.{u1} α] (T : Set.{u1} (WithLowerTopology.{u1} α)), Iff (IsOpen.{u1} (WithLowerTopology.{u1} α) (WithLowerTopology.instTopologicalSpaceWithLowerTopology.{u1} α _inst_1) T) (TopologicalSpace.IsOpen.{u1} α (TopologicalSpace.generateFrom.{u1} α (setOf.{u1} (Set.{u1} α) (fun (s : Set.{u1} α) => Exists.{succ u1} α (fun (a : α) => Eq.{succ u1} (Set.{u1} α) (HasCompl.compl.{u1} (Set.{u1} α) (BooleanAlgebra.toHasCompl.{u1} (Set.{u1} α) (Set.instBooleanAlgebraSet.{u1} α)) (Set.Ici.{u1} α _inst_1 a)) s)))) (Set.preimage.{u1, u1} α (WithLowerTopology.{u1} α) (FunLike.coe.{succ u1, succ u1, succ u1} (Equiv.{succ u1, succ u1} α (WithLowerTopology.{u1} α)) α (fun (_x : α) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.805 : α) => WithLowerTopology.{u1} α) _x) (Equiv.instFunLikeEquiv.{succ u1, succ u1} α (WithLowerTopology.{u1} α)) (WithLowerTopology.toLower.{u1} α)) T))
+  forall {α : Type.{u1}} [_inst_1 : Preorder.{u1} α] (T : Set.{u1} (WithLowerTopology.{u1} α)), Iff (IsOpen.{u1} (WithLowerTopology.{u1} α) (WithLowerTopology.instTopologicalSpaceWithLowerTopology.{u1} α _inst_1) T) (TopologicalSpace.IsOpen.{u1} α (TopologicalSpace.generateFrom.{u1} α (setOf.{u1} (Set.{u1} α) (fun (s : Set.{u1} α) => Exists.{succ u1} α (fun (a : α) => Eq.{succ u1} (Set.{u1} α) (HasCompl.compl.{u1} (Set.{u1} α) (BooleanAlgebra.toHasCompl.{u1} (Set.{u1} α) (Set.instBooleanAlgebraSet.{u1} α)) (Set.Ici.{u1} α _inst_1 a)) s)))) (Set.preimage.{u1, u1} α (WithLowerTopology.{u1} α) (FunLike.coe.{succ u1, succ u1, succ u1} (Equiv.{succ u1, succ u1} α (WithLowerTopology.{u1} α)) α (fun (_x : α) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : α) => WithLowerTopology.{u1} α) _x) (Equiv.instFunLikeEquiv.{succ u1, succ u1} α (WithLowerTopology.{u1} α)) (WithLowerTopology.toLower.{u1} α)) T))
 Case conversion may be inaccurate. Consider using '#align with_lower_topology.is_open_def WithLowerTopology.isOpen_defₓ'. -/
 theorem isOpen_def (T : Set (WithLowerTopology α)) :
     IsOpen T ↔
@@ -336,7 +336,7 @@ variable [CompleteLattice α] [CompleteLattice β] [TopologicalSpace α] [LowerT
 lean 3 declaration is
   forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : CompleteLattice.{u1} α] [_inst_2 : CompleteLattice.{u2} β] [_inst_3 : TopologicalSpace.{u1} α] [_inst_4 : LowerTopology.{u1} α _inst_3 (PartialOrder.toPreorder.{u1} α (CompleteSemilatticeInf.toPartialOrder.{u1} α (CompleteLattice.toCompleteSemilatticeInf.{u1} α _inst_1)))] [_inst_5 : TopologicalSpace.{u2} β] [_inst_6 : LowerTopology.{u2} β _inst_5 (PartialOrder.toPreorder.{u2} β (CompleteSemilatticeInf.toPartialOrder.{u2} β (CompleteLattice.toCompleteSemilatticeInf.{u2} β _inst_2)))] (f : InfₛHom.{u1, u2} α β (ConditionallyCompleteLattice.toHasInf.{u1} α (CompleteLattice.toConditionallyCompleteLattice.{u1} α _inst_1)) (ConditionallyCompleteLattice.toHasInf.{u2} β (CompleteLattice.toConditionallyCompleteLattice.{u2} β _inst_2))), Continuous.{u1, u2} α β _inst_3 _inst_5 (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (InfₛHom.{u1, u2} α β (ConditionallyCompleteLattice.toHasInf.{u1} α (CompleteLattice.toConditionallyCompleteLattice.{u1} α _inst_1)) (ConditionallyCompleteLattice.toHasInf.{u2} β (CompleteLattice.toConditionallyCompleteLattice.{u2} β _inst_2))) (fun (_x : InfₛHom.{u1, u2} α β (ConditionallyCompleteLattice.toHasInf.{u1} α (CompleteLattice.toConditionallyCompleteLattice.{u1} α _inst_1)) (ConditionallyCompleteLattice.toHasInf.{u2} β (CompleteLattice.toConditionallyCompleteLattice.{u2} β _inst_2))) => α -> β) (InfₛHom.hasCoeToFun.{u1, u2} α β (ConditionallyCompleteLattice.toHasInf.{u1} α (CompleteLattice.toConditionallyCompleteLattice.{u1} α _inst_1)) (ConditionallyCompleteLattice.toHasInf.{u2} β (CompleteLattice.toConditionallyCompleteLattice.{u2} β _inst_2))) f)
 but is expected to have type
-  forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : CompleteLattice.{u2} α] [_inst_2 : CompleteLattice.{u1} β] [_inst_3 : TopologicalSpace.{u2} α] [_inst_4 : LowerTopology.{u2} α _inst_3 (PartialOrder.toPreorder.{u2} α (CompleteSemilatticeInf.toPartialOrder.{u2} α (CompleteLattice.toCompleteSemilatticeInf.{u2} α _inst_1)))] [_inst_5 : TopologicalSpace.{u1} β] [_inst_6 : LowerTopology.{u1} β _inst_5 (PartialOrder.toPreorder.{u1} β (CompleteSemilatticeInf.toPartialOrder.{u1} β (CompleteLattice.toCompleteSemilatticeInf.{u1} β _inst_2)))] (f : InfₛHom.{u2, u1} α β (ConditionallyCompleteLattice.toInfSet.{u2} α (CompleteLattice.toConditionallyCompleteLattice.{u2} α _inst_1)) (ConditionallyCompleteLattice.toInfSet.{u1} β (CompleteLattice.toConditionallyCompleteLattice.{u1} β _inst_2))), Continuous.{u2, u1} α β _inst_3 _inst_5 (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (InfₛHom.{u2, u1} α β (ConditionallyCompleteLattice.toInfSet.{u2} α (CompleteLattice.toConditionallyCompleteLattice.{u2} α _inst_1)) (ConditionallyCompleteLattice.toInfSet.{u1} β (CompleteLattice.toConditionallyCompleteLattice.{u1} β _inst_2))) α (fun (_x : α) => (fun (x._@.Mathlib.Order.Hom.CompleteLattice._hyg.372 : α) => β) _x) (InfₛHomClass.toFunLike.{max u2 u1, u2, u1} (InfₛHom.{u2, u1} α β (ConditionallyCompleteLattice.toInfSet.{u2} α (CompleteLattice.toConditionallyCompleteLattice.{u2} α _inst_1)) (ConditionallyCompleteLattice.toInfSet.{u1} β (CompleteLattice.toConditionallyCompleteLattice.{u1} β _inst_2))) α β (ConditionallyCompleteLattice.toInfSet.{u2} α (CompleteLattice.toConditionallyCompleteLattice.{u2} α _inst_1)) (ConditionallyCompleteLattice.toInfSet.{u1} β (CompleteLattice.toConditionallyCompleteLattice.{u1} β _inst_2)) (InfₛHom.instInfₛHomClassInfₛHom.{u2, u1} α β (ConditionallyCompleteLattice.toInfSet.{u2} α (CompleteLattice.toConditionallyCompleteLattice.{u2} α _inst_1)) (ConditionallyCompleteLattice.toInfSet.{u1} β (CompleteLattice.toConditionallyCompleteLattice.{u1} β _inst_2)))) f)
+  forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : CompleteLattice.{u2} α] [_inst_2 : CompleteLattice.{u1} β] [_inst_3 : TopologicalSpace.{u2} α] [_inst_4 : LowerTopology.{u2} α _inst_3 (PartialOrder.toPreorder.{u2} α (CompleteSemilatticeInf.toPartialOrder.{u2} α (CompleteLattice.toCompleteSemilatticeInf.{u2} α _inst_1)))] [_inst_5 : TopologicalSpace.{u1} β] [_inst_6 : LowerTopology.{u1} β _inst_5 (PartialOrder.toPreorder.{u1} β (CompleteSemilatticeInf.toPartialOrder.{u1} β (CompleteLattice.toCompleteSemilatticeInf.{u1} β _inst_2)))] (f : InfₛHom.{u2, u1} α β (ConditionallyCompleteLattice.toInfSet.{u2} α (CompleteLattice.toConditionallyCompleteLattice.{u2} α _inst_1)) (ConditionallyCompleteLattice.toInfSet.{u1} β (CompleteLattice.toConditionallyCompleteLattice.{u1} β _inst_2))), Continuous.{u2, u1} α β _inst_3 _inst_5 (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (InfₛHom.{u2, u1} α β (ConditionallyCompleteLattice.toInfSet.{u2} α (CompleteLattice.toConditionallyCompleteLattice.{u2} α _inst_1)) (ConditionallyCompleteLattice.toInfSet.{u1} β (CompleteLattice.toConditionallyCompleteLattice.{u1} β _inst_2))) α (fun (_x : α) => (fun (x._@.Mathlib.Order.Hom.CompleteLattice._hyg.374 : α) => β) _x) (InfₛHomClass.toFunLike.{max u2 u1, u2, u1} (InfₛHom.{u2, u1} α β (ConditionallyCompleteLattice.toInfSet.{u2} α (CompleteLattice.toConditionallyCompleteLattice.{u2} α _inst_1)) (ConditionallyCompleteLattice.toInfSet.{u1} β (CompleteLattice.toConditionallyCompleteLattice.{u1} β _inst_2))) α β (ConditionallyCompleteLattice.toInfSet.{u2} α (CompleteLattice.toConditionallyCompleteLattice.{u2} α _inst_1)) (ConditionallyCompleteLattice.toInfSet.{u1} β (CompleteLattice.toConditionallyCompleteLattice.{u1} β _inst_2)) (InfₛHom.instInfₛHomClassInfₛHom.{u2, u1} α β (ConditionallyCompleteLattice.toInfSet.{u2} α (CompleteLattice.toConditionallyCompleteLattice.{u2} α _inst_1)) (ConditionallyCompleteLattice.toInfSet.{u1} β (CompleteLattice.toConditionallyCompleteLattice.{u1} β _inst_2)))) f)
 Case conversion may be inaccurate. Consider using '#align Inf_hom.continuous InfₛHom.continuousₓ'. -/
 theorem InfₛHom.continuous (f : InfₛHom α β) : Continuous f :=
   by
Diff
@@ -349,12 +349,16 @@ theorem InfₛHom.continuous (f : InfₛHom α β) : Continuous f :=
   simp [map_Inf]
 #align Inf_hom.continuous InfₛHom.continuous
 
-#print LowerTopology.continuousInf /-
+/- warning: lower_topology.to_has_continuous_inf -> LowerTopology.continuousInf is a dubious translation:
+lean 3 declaration is
+  forall {α : Type.{u1}} [_inst_1 : CompleteLattice.{u1} α] [_inst_3 : TopologicalSpace.{u1} α] [_inst_4 : LowerTopology.{u1} α _inst_3 (PartialOrder.toPreorder.{u1} α (CompleteSemilatticeInf.toPartialOrder.{u1} α (CompleteLattice.toCompleteSemilatticeInf.{u1} α _inst_1)))], ContinuousInf.{u1} α _inst_3 (SemilatticeInf.toHasInf.{u1} α (Lattice.toSemilatticeInf.{u1} α (ConditionallyCompleteLattice.toLattice.{u1} α (CompleteLattice.toConditionallyCompleteLattice.{u1} α _inst_1))))
+but is expected to have type
+  forall {α : Type.{u1}} [_inst_1 : CompleteLattice.{u1} α] [_inst_3 : TopologicalSpace.{u1} α] [_inst_4 : LowerTopology.{u1} α _inst_3 (PartialOrder.toPreorder.{u1} α (CompleteSemilatticeInf.toPartialOrder.{u1} α (CompleteLattice.toCompleteSemilatticeInf.{u1} α _inst_1)))], ContinuousInf.{u1} α _inst_3 (Lattice.toInf.{u1} α (ConditionallyCompleteLattice.toLattice.{u1} α (CompleteLattice.toConditionallyCompleteLattice.{u1} α _inst_1)))
+Case conversion may be inaccurate. Consider using '#align lower_topology.to_has_continuous_inf LowerTopology.continuousInfₓ'. -/
 -- see Note [lower instance priority]
 instance (priority := 90) LowerTopology.continuousInf : ContinuousInf α :=
   ⟨(infInfₛHom : InfₛHom (α × α) α).Continuous⟩
 #align lower_topology.to_has_continuous_inf LowerTopology.continuousInf
--/
 
 end CompleteLattice
 

Changes in mathlib4

mathlib3
mathlib4
style: homogenise porting notes (#11145)

Homogenises porting notes via capitalisation and addition of whitespace.

It makes the following changes:

  • converts "--porting note" into "-- Porting note";
  • converts "porting note" into "Porting note".
Diff
@@ -98,7 +98,7 @@ namespace WithLower
 lemma toLower_inj {a b : α} : toLower a = toLower b ↔ a = b := Iff.rfl
 #align with_lower_topology.to_lower_inj Topology.WithLower.toLower_inj
 
--- porting note: removed @[simp] to make linter happy
+-- Porting note: removed @[simp] to make linter happy
 theorem ofLower_inj {a b : WithLower α} : ofLower a = ofLower b ↔ a = b :=
   Iff.rfl
 #align with_lower_topology.of_lower_inj Topology.WithLower.ofLower_inj
@@ -239,7 +239,7 @@ theorem isClosed_upperClosure (h : s.Finite) : IsClosed (upperClosure s : Set α
 
 /-- Every set open in the lower topology is a lower set. -/
 theorem isLowerSet_of_isOpen (h : IsOpen s) : IsLowerSet s := by
-  -- porting note: `rw` leaves a shadowed assumption
+  -- Porting note: `rw` leaves a shadowed assumption
   replace h := isOpen_iff_generate_Ici_compl.1 h
   induction h with
   | basic u h' => obtain ⟨a, rfl⟩ := h'; exact (isUpperSet_Ici a).compl
chore: remove stream-of-consciousness uses of have, replace and suffices (#10640)

No changes to tactic file, it's just boring fixes throughout the library.

This follows on from #6964.

Co-authored-by: sgouezel <sebastien.gouezel@univ-rennes1.fr> Co-authored-by: Eric Wieser <wieser.eric@gmail.com>

Diff
@@ -412,8 +412,7 @@ instance instIsUpperProd [Preorder α] [TopologicalSpace α] [IsUpper α]
     [OrderTop α] [Preorder β] [TopologicalSpace β] [IsUpper β] [OrderTop β] :
     IsUpper (α × β) where
   topology_eq_upperTopology := by
-    suffices : IsLower (α × β)ᵒᵈ
-    · exact IsLower.topology_eq_lowerTopology (α := (α × β)ᵒᵈ)
+    suffices IsLower (α × β)ᵒᵈ from IsLower.topology_eq_lowerTopology (α := (α × β)ᵒᵈ)
     exact instIsLowerProd (α := αᵒᵈ) (β := βᵒᵈ)
 
 section CompleteLattice_IsLower
refactor(Topology/Order) : Fix inconsistencies between Lower/Upper and Scott topologies (#10346)
  • Make type explicit in def of Scott-Hausdorff and Scott topologies
  • Move With{Lower|Upper}Homeomorph into the correct namespace

Co-authored-by: Christopher Hoskin <mans0954@users.noreply.github.com>

Diff
@@ -211,9 +211,9 @@ variable {α}
 
 /-- If `α` is equipped with the lower topology, then it is homeomorphic to `WithLower α`.
 -/
-def WithLowerHomeomorph : WithLower α ≃ₜ α :=
+def withLowerHomeomorph : WithLower α ≃ₜ α :=
   WithLower.ofLower.toHomeomorphOfInducing ⟨by erw [topology_eq α, induced_id]; rfl⟩
-#align lower_topology.with_lower_topology_homeomorph Topology.IsLower.WithLowerHomeomorph
+#align lower_topology.with_lower_topology_homeomorph Topology.IsLower.withLowerHomeomorph
 
 theorem isOpen_iff_generate_Ici_compl : IsOpen s ↔ GenerateOpen { t | ∃ a, (Ici a)ᶜ = t } s := by
   rw [topology_eq α]; rfl
@@ -324,7 +324,7 @@ variable {α}
 
 /-- If `α` is equipped with the upper topology, then it is homeomorphic to `WithUpper α`.
 -/
-def WithUpperHomeomorph : WithUpper α ≃ₜ α :=
+def withUpperHomeomorph : WithUpper α ≃ₜ α :=
   WithUpper.ofUpper.toHomeomorphOfInducing ⟨by erw [topology_eq α, induced_id]; rfl⟩
 
 theorem isOpen_iff_generate_Iic_compl : IsOpen s ↔ GenerateOpen { t | ∃ a, (Iic a)ᶜ = t } s := by
style: use cases x with | ... instead of cases x; case => ... (#9321)

This converts usages of the pattern

cases h
case inl h' => ...
case inr h' => ...

which derive from mathported code, to the "structured cases" syntax:

cases h with
| inl h' => ...
| inr h' => ...

The case where the subgoals are handled with · instead of case is more contentious (and much more numerous) so I left those alone. This pattern also appears with cases', induction, induction', and rcases. Furthermore, there is a similar transformation for by_cases:

by_cases h : cond
case pos => ...
case neg => ...

is replaced by:

if h : cond then
  ...
else
  ...

Co-authored-by: Mario Carneiro <di.gama@gmail.com>

Diff
@@ -241,11 +241,11 @@ theorem isClosed_upperClosure (h : s.Finite) : IsClosed (upperClosure s : Set α
 theorem isLowerSet_of_isOpen (h : IsOpen s) : IsLowerSet s := by
   -- porting note: `rw` leaves a shadowed assumption
   replace h := isOpen_iff_generate_Ici_compl.1 h
-  induction h
-  case basic u h' => obtain ⟨a, rfl⟩ := h'; exact (isUpperSet_Ici a).compl
-  case univ => exact isLowerSet_univ
-  case inter u v _ _ hu2 hv2 => exact hu2.inter hv2
-  case sUnion _ _ ih => exact isLowerSet_sUnion ih
+  induction h with
+  | basic u h' => obtain ⟨a, rfl⟩ := h'; exact (isUpperSet_Ici a).compl
+  | univ => exact isLowerSet_univ
+  | inter u v _ _ hu2 hv2 => exact hu2.inter hv2
+  | sUnion _ _ ih => exact isLowerSet_sUnion ih
 #align lower_topology.is_lower_set_of_is_open Topology.IsLower.isLowerSet_of_isOpen
 
 theorem isUpperSet_of_isClosed (h : IsClosed s) : IsUpperSet s :=
feat(Topology/Order): upgrade continuous_generateFrom to an iff (#9259)

Similarly, upgrade tendsto_nhds_generateFrom, IsTopologicalBasis.continuous, Topology.IsLower.continuous_of_Ici, and Topology.IsUpper.continuous_iff_Iic.

The old lemmas are now deprecated, and the new ones have _iff in their names. Once we remove the old lemmas, we can drop the _iff suffixes.

Diff
@@ -277,16 +277,17 @@ protected theorem isTopologicalBasis : IsTopologicalBasis (lowerBasis α) := by
     exact ⟨_, finite_range f, by simp_rw [biInter_range, hf, sInter_eq_iInter]⟩
 #align lower_topology.is_topological_basis Topology.IsLower.isTopologicalBasis
 
-/-- A function `f : β → α` with lower topology in the codomain is continuous provided that the
-preimage of every interval `Set.Ici a` is a closed set.
-
-TODO: upgrade to an `iff`. -/
-lemma continuous_of_Ici [TopologicalSpace β] {f : β → α} (h : ∀ a, IsClosed (f ⁻¹' (Ici a))) :
-    Continuous f := by
+/-- A function `f : β → α` with lower topology in the codomain is continuous
+if and only if the preimage of every interval `Set.Ici a` is a closed set.
+-/
+lemma continuous_iff_Ici [TopologicalSpace β] {f : β → α} :
+    Continuous f ↔ ∀ a, IsClosed (f ⁻¹' (Ici a)) := by
   obtain rfl := IsLower.topology_eq α
-  refine continuous_generateFrom ?_
-  rintro _ ⟨a, rfl⟩
-  exact (h a).isOpen_compl
+  simp [continuous_generateFrom_iff]
+
+/-- A function `f : β → α` with lower topology in the codomain is continuous provided that the
+preimage of every interval `Set.Ici a` is a closed set. -/
+@[deprecated] alias ⟨_, continuous_of_Ici⟩ := continuous_iff_Ici
 
 end Preorder
 
@@ -359,13 +360,18 @@ theorem closure_singleton (a : α) : closure {a} = Iic a :=
 protected theorem isTopologicalBasis : IsTopologicalBasis (upperBasis α) :=
   IsLower.isTopologicalBasis (α := αᵒᵈ)
 
-/-- A function `f : β → α` with upper topology in the codomain is continuous provided that the
-preimage of every interval `Set.Iic a` is a closed set.
+/-- A function `f : β → α` with upper topology in the codomain is continuous
+if and only if the preimage of every interval `Set.Iic a` is a closed set. -/
+lemma continuous_iff_Iic [TopologicalSpace β] {f : β → α} :
+    Continuous f ↔ ∀ a, IsClosed (f ⁻¹' (Iic a)) :=
+  IsLower.continuous_iff_Ici (α := αᵒᵈ)
 
-TODO: upgrade to an `iff`. -/
+/-- A function `f : β → α` with upper topology in the codomain is continuous
+provided that the preimage of every interval `Set.Iic a` is a closed set. -/
+@[deprecated]
 lemma continuous_of_Iic [TopologicalSpace β] {f : β → α} (h : ∀ a, IsClosed (f ⁻¹' (Iic a))) :
     Continuous f :=
-  IsLower.continuous_of_Ici (α := αᵒᵈ) h
+  continuous_iff_Iic.2 h
 
 end Preorder
 
@@ -416,7 +422,7 @@ variable [CompleteLattice α] [CompleteLattice β] [TopologicalSpace α] [IsLowe
   [TopologicalSpace β] [IsLower β]
 
 protected lemma _root_.sInfHom.continuous (f : sInfHom α β) : Continuous f := by
-  refine IsLower.continuous_of_Ici fun b => ?_
+  refine IsLower.continuous_iff_Ici.2 fun b => ?_
   convert isClosed_Ici (a := sInf <| f ⁻¹' Ici b)
   refine' Subset.antisymm (fun a => sInf_le) fun a ha => le_trans _ <|
     OrderHomClass.mono (f : α →o β) ha
refactor(Topology/Order): Rename order topologies (#7310)

Rename the Upper/Lower UpperSet/LowerSet topologies to the conventions suggested by @YaelDillies in https://github.com/leanprover-community/mathlib4/pull/2508#discussion_r1306711450

Co-authored-by: Yaël Dillies <yael.dillies@gmail.com>

Diff
@@ -3,9 +3,9 @@ Copyright (c) 2023 Christopher Hoskin. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Christopher Hoskin
 -/
+import Mathlib.Order.Hom.CompleteLattice
 import Mathlib.Topology.Homeomorph
 import Mathlib.Topology.Order.Lattice
-import Mathlib.Order.Hom.CompleteLattice
 
 #align_import topology.order.lower_topology from "leanprover-community/mathlib"@"98e83c3d541c77cdb7da20d79611a780ff8e7d90"
 
@@ -20,20 +20,20 @@ right-closed left-infinite intervals.
 
 ## Main statements
 
-- `LowerTopology.t0Space` - the lower topology on a partial order is T₀
-- `LowerTopology.isTopologicalBasis` - the complements of the upper closures of finite
+- `IsLower.t0Space` - the lower topology on a partial order is T₀
+- `IsLower.isTopologicalBasis` - the complements of the upper closures of finite
   subsets form a basis for the lower topology
-- `LowerTopology.continuousInf` - the inf map is continuous with respect to the lower topology
+- `IsLower.continuousInf` - the inf map is continuous with respect to the lower topology
 
 ## Implementation notes
 
-A type synonym `WithLowerTopology` is introduced and for a preorder `α`, `WithLowerTopology α`
+A type synonym `WithLower` is introduced and for a preorder `α`, `WithLower α`
 is made an instance of `TopologicalSpace` by the topology generated by the complements of the
 closed intervals to infinity.
 
-We define a mixin class `LowerTopology` for the class of types which are both a preorder and a
+We define a mixin class `IsLower` for the class of types which are both a preorder and a
 topology and where the topology is generated by the complements of the closed intervals to infinity.
-It is shown that `WithLowerTopology α` is an instance of `LowerTopology`.
+It is shown that `WithLower α` is an instance of `IsLower`.
 
 Similarly for the upper topology.
 
@@ -51,196 +51,140 @@ of the lower topology to the spectrum of a complete lattice coincides with the h
 lower topology, upper topology, preorder
 -/
 
-set_option autoImplicit true
+open Set TopologicalSpace Topology
 
-open Set TopologicalSpace
+namespace Topology
 
-section WithLowerTopology
+/--
+The lower topology is the topology generated by the complements of the left-closed right-infinite
+intervals.
+-/
+def lower (α : Type*) [Preorder α] : TopologicalSpace α := generateFrom {s | ∃ a, (Ici a)ᶜ = s}
 
-variable (α β : Type*)
+/--
+The upper topology is the topology generated by the complements of the right-closed left-infinite
+intervals.
+-/
+def upper (α : Type*) [Preorder α] : TopologicalSpace α := generateFrom {s | ∃ a, (Iic a)ᶜ = s}
 
-/-- Type synonym for a preorder equipped with the lower topology. -/
-def WithLowerTopology := α
-#align with_lower_topology WithLowerTopology
+/-- Type synonym for a preorder equipped with the lower set topology. -/
+def WithLower (α : Type*) := α
+#align with_lower_topology Topology.WithLower
 
 variable {α β}
 
-namespace WithLowerTopology
+namespace WithLower
 
-/-- `toLower` is the identity function to the `WithLowerTopology` of a type.  -/
-@[match_pattern]
-def toLower : α ≃ WithLowerTopology α := Equiv.refl _
-#align with_lower_topology.to_lower WithLowerTopology.toLower
+/-- `toLower` is the identity function to the `WithLower` of a type.  -/
+@[match_pattern] def toLower : α ≃ WithLower α := Equiv.refl _
+#align with_lower_topology.to_lower Topology.WithLower.toLower
 
-/-- `ofLower` is the identity function from the `WithLowerTopology` of a type.  -/
-@[match_pattern]
-def ofLower : WithLowerTopology α ≃ α := Equiv.refl _
-#align with_lower_topology.of_lower WithLowerTopology.ofLower
+/-- `ofLower` is the identity function from the `WithLower` of a type.  -/
+@[match_pattern] def ofLower : WithLower α ≃ α := Equiv.refl _
+#align with_lower_topology.of_lower Topology.WithLower.ofLower
 
-@[simp]
-theorem to_withLowerTopology_symm_eq : (@toLower α).symm = ofLower :=
-  rfl
-#align with_lower_topology.to_with_lower_topology_symm_eq WithLowerTopology.to_withLowerTopology_symm_eq
+@[simp] lemma to_WithLower_symm_eq : (@toLower α).symm = ofLower := rfl
+#align with_lower_topology.to_with_lower_topology_symm_eq Topology.WithLower.to_WithLower_symm_eq
 
-@[simp]
-theorem of_withLowerTopology_symm_eq : (@ofLower α).symm = toLower :=
-  rfl
-#align with_lower_topology.of_with_lower_topology_symm_eq WithLowerTopology.of_withLowerTopology_symm_eq
+@[simp] lemma of_WithLower_symm_eq : (@ofLower α).symm = toLower := rfl
+#align with_lower_topology.of_with_lower_topology_symm_eq Topology.WithLower.of_WithLower_symm_eq
 
-@[simp]
-theorem toLower_ofLower (a : WithLowerTopology α) : toLower (ofLower a) = a :=
-  rfl
-#align with_lower_topology.to_lower_of_lower WithLowerTopology.toLower_ofLower
+@[simp] lemma toLower_ofLower (a : WithLower α) : toLower (ofLower a) = a := rfl
+#align with_lower_topology.to_lower_of_lower Topology.WithLower.toLower_ofLower
 
-@[simp]
-theorem ofLower_toLower (a : α) : ofLower (toLower a) = a :=
-  rfl
-#align with_lower_topology.of_lower_to_lower WithLowerTopology.ofLower_toLower
+@[simp] lemma ofLower_toLower (a : α) : ofLower (toLower a) = a := rfl
+#align with_lower_topology.of_lower_to_lower Topology.WithLower.ofLower_toLower
 
--- porting note: removed @[simp] to make linter happy
-theorem toLower_inj {a b : α} : toLower a = toLower b ↔ a = b :=
-  Iff.rfl
-#align with_lower_topology.to_lower_inj WithLowerTopology.toLower_inj
+lemma toLower_inj {a b : α} : toLower a = toLower b ↔ a = b := Iff.rfl
+#align with_lower_topology.to_lower_inj Topology.WithLower.toLower_inj
 
 -- porting note: removed @[simp] to make linter happy
-theorem ofLower_inj {a b : WithLowerTopology α} : ofLower a = ofLower b ↔ a = b :=
+theorem ofLower_inj {a b : WithLower α} : ofLower a = ofLower b ↔ a = b :=
   Iff.rfl
-#align with_lower_topology.of_lower_inj WithLowerTopology.ofLower_inj
+#align with_lower_topology.of_lower_inj Topology.WithLower.ofLower_inj
 
-/-- A recursor for `WithLowerTopology`. Use as `induction x using WithLowerTopology.rec`. -/
-protected def rec {β : WithLowerTopology α → Sort*} (h : ∀ a, β (toLower a)) : ∀ a, β a := fun a =>
+/-- A recursor for `WithLower`. Use as `induction x using WithLower.rec`. -/
+protected def rec {β : WithLower α → Sort*} (h : ∀ a, β (toLower a)) : ∀ a, β a := fun a =>
   h (ofLower a)
-#align with_lower_topology.rec WithLowerTopology.rec
-
-instance [Nonempty α] : Nonempty (WithLowerTopology α) :=
-  ‹Nonempty α›
+#align with_lower_topology.rec Topology.WithLower.rec
 
-instance [Inhabited α] : Inhabited (WithLowerTopology α) :=
-  ‹Inhabited α›
+instance [Nonempty α] : Nonempty (WithLower α) := ‹Nonempty α›
+instance [Inhabited α] : Inhabited (WithLower α) := ‹Inhabited α›
 
-variable [Preorder α]
+variable [Preorder α] {s : Set α}
 
-instance : Preorder (WithLowerTopology α) :=
-  ‹Preorder α›
+instance : Preorder (WithLower α) := ‹Preorder α›
+instance : TopologicalSpace (WithLower α) := lower α
 
-instance : TopologicalSpace (WithLowerTopology α) :=
-  generateFrom { s | ∃ a, (Ici a)ᶜ = s }
+lemma isOpen_preimage_ofLower : IsOpen (ofLower ⁻¹' s) ↔ (lower α).IsOpen s := Iff.rfl
+#align with_lower_topology.is_open_preimage_of_lower Topology.WithLower.isOpen_preimage_ofLower
 
-theorem isOpen_preimage_ofLower (S : Set α) :
-    IsOpen (WithLowerTopology.ofLower ⁻¹' S) ↔
-      (generateFrom { s : Set α | ∃ a : α, (Ici a)ᶜ = s }).IsOpen S :=
+lemma isOpen_def (T : Set (WithLower α)) : IsOpen T ↔ (lower α).IsOpen (WithLower.toLower ⁻¹' T) :=
   Iff.rfl
-#align with_lower_topology.is_open_preimage_of_lower WithLowerTopology.isOpen_preimage_ofLower
+#align with_lower_topology.is_open_def Topology.WithLower.isOpen_def
 
-theorem isOpen_def (T : Set (WithLowerTopology α)) :
-    IsOpen T ↔ (generateFrom { s : Set α | ∃ a : α, (Ici a)ᶜ = s }).IsOpen
-    (WithLowerTopology.toLower ⁻¹' T) :=
-  Iff.rfl
-#align with_lower_topology.is_open_def WithLowerTopology.isOpen_def
-
-end WithLowerTopology
-
-end WithLowerTopology
-
-section WithUpperTopology
-
-variable (α β : Type*)
+end WithLower
 
 /-- Type synonym for a preorder equipped with the upper topology. -/
-def WithUpperTopology := α
+def WithUpper (α : Type*) := α
+namespace WithUpper
 
-variable {α β}
+/-- `toUpper` is the identity function to the `WithUpper` of a type.  -/
+@[match_pattern] def toUpper : α ≃ WithUpper α := Equiv.refl _
 
-namespace WithUpperTopology
+/-- `ofUpper` is the identity function from the `WithUpper` of a type.  -/
+@[match_pattern] def ofUpper : WithUpper α ≃ α := Equiv.refl _
 
-/-- `toUpper` is the identity function to the `WithUpperTopology` of a type.  -/
-@[match_pattern]
-def toUpper : α ≃ WithUpperTopology α := Equiv.refl _
+@[simp] lemma to_WithUpper_symm_eq {α} : (@toUpper α).symm = ofUpper := rfl
+@[simp] lemma of_WithUpper_symm_eq : (@ofUpper α).symm = toUpper := rfl
+@[simp] lemma toUpper_ofUpper (a : WithUpper α) : toUpper (ofUpper a) = a := rfl
+@[simp] lemma ofUpper_toUpper (a : α) : ofUpper (toUpper a) = a := rfl
+lemma toUpper_inj {a b : α} : toUpper a = toUpper b ↔ a = b := Iff.rfl
+lemma ofUpper_inj {a b : WithUpper α} : ofUpper a = ofUpper b ↔ a = b := Iff.rfl
 
-/-- `ofUpper` is the identity function from the `WithUpperTopology` of a type.  -/
-@[match_pattern]
-def ofUpper : WithUpperTopology α ≃ α := Equiv.refl _
-
-@[simp]
-theorem to_withUpperTopology_symm_eq {α} : (@toUpper α).symm = ofUpper :=
-  rfl
-
-@[simp]
-theorem of_withUpperTopology_symm_eq : (@ofUpper α).symm = toUpper :=
-  rfl
-
-@[simp]
-theorem toUpper_ofUpper (a : WithUpperTopology α) : toUpper (ofUpper a) = a :=
-  rfl
-
-@[simp]
-theorem ofUpper_toUpper (a : α) : ofUpper (toUpper a) = a :=
-  rfl
-
-theorem toUpper_inj {a b : α} : toUpper a = toUpper b ↔ a = b :=
-  Iff.rfl
-
-theorem ofUpper_inj {a b : WithUpperTopology α} : ofUpper a = ofUpper b ↔ a = b :=
-  Iff.rfl
-
-/-- A recursor for `WithUpperTopology`. Use as `induction x using WithUpperTopology.rec`. -/
-protected def rec {β : WithUpperTopology α → Sort*} (h : ∀ a, β (toUpper a)) : ∀ a, β a := fun a =>
+/-- A recursor for `WithUpper`. Use as `induction x using WithUpper.rec`. -/
+protected def rec {β : WithUpper α → Sort*} (h : ∀ a, β (toUpper a)) : ∀ a, β a := fun a =>
   h (ofUpper a)
 
-instance [Nonempty α] : Nonempty (WithUpperTopology α) :=
-  ‹Nonempty α›
-
-instance [Inhabited α] : Inhabited (WithUpperTopology α) :=
-  ‹Inhabited α›
+instance [Nonempty α] : Nonempty (WithUpper α) := ‹Nonempty α›
+instance [Inhabited α] : Inhabited (WithUpper α) := ‹Inhabited α›
 
-variable [Preorder α]
+variable [Preorder α] {s : Set α}
 
-instance : Preorder (WithUpperTopology α) :=
-  ‹Preorder α›
+instance : Preorder (WithUpper α) := ‹Preorder α›
+instance : TopologicalSpace (WithUpper α) := upper α
 
-instance : TopologicalSpace (WithUpperTopology α) :=
-  generateFrom { s | ∃ a, (Iic a)ᶜ = s }
+lemma isOpen_preimage_ofUpper : IsOpen (ofUpper ⁻¹' s) ↔ (upper α).IsOpen s := Iff.rfl
 
-theorem isOpen_preimage_ofUpper (S : Set α) :
-    IsOpen (WithUpperTopology.ofUpper ⁻¹' S) ↔
-      (generateFrom { s : Set α | ∃ a : α, (Iic a)ᶜ = s }).IsOpen S :=
-  Iff.rfl
-
-theorem isOpen_def (T : Set (WithUpperTopology α)) :
-    IsOpen T ↔ (generateFrom { s : Set α | ∃ a : α, (Iic a)ᶜ = s }).IsOpen
-    (WithUpperTopology.toUpper ⁻¹' T) :=
-  Iff.rfl
+lemma isOpen_def {s : Set (WithUpper α)} : IsOpen s ↔ (upper α).IsOpen (toUpper ⁻¹' s) := Iff.rfl
 
-end WithUpperTopology
-
-end WithUpperTopology
+end WithUpper
 
 /--
 The lower topology is the topology generated by the complements of the left-closed right-infinite
 intervals.
 -/
-class LowerTopology (α : Type*) [t : TopologicalSpace α] [Preorder α] : Prop where
-  topology_eq_lowerTopology : t = generateFrom { s | ∃ a, (Ici a)ᶜ = s }
-#align lower_topology LowerTopology
+class IsLower (α : Type*) [t : TopologicalSpace α] [Preorder α] : Prop where
+  topology_eq_lowerTopology : t = lower α
+#align lower_topology Topology.IsLower
+
+attribute [nolint docBlame] IsLower.topology_eq_lowerTopology
 
 /--
 The upper topology is the topology generated by the complements of the right-closed left-infinite
 intervals.
 -/
-class UpperTopology (α : Type*) [t : TopologicalSpace α] [Preorder α] : Prop where
-  topology_eq_upperTopology : t = generateFrom { s | ∃ a, (Iic a)ᶜ = s }
-
-instance [Preorder α] : LowerTopology (WithLowerTopology α) :=
-  ⟨rfl⟩
+class IsUpper (α : Type*) [t : TopologicalSpace α] [Preorder α] : Prop where
+  topology_eq_upperTopology : t = upper α
+attribute [nolint docBlame] IsUpper.topology_eq_upperTopology
 
-instance [Preorder α] : UpperTopology (WithUpperTopology α) :=
-  ⟨rfl⟩
+instance [Preorder α] : IsLower (WithLower α) := ⟨rfl⟩
+instance [Preorder α] : IsUpper (WithUpper α) := ⟨rfl⟩
 
 /--
 The lower topology is homeomorphic to the upper topology on the dual order
 -/
-def WithLowerTopology.toDualHomeomorph [Preorder α] : WithLowerTopology α ≃ₜ WithUpperTopology αᵒᵈ
-    where
+def WithLower.toDualHomeomorph [Preorder α] : WithLower α ≃ₜ WithUpper αᵒᵈ where
   toFun := OrderDual.toDual
   invFun := OrderDual.ofDual
   left_inv := OrderDual.toDual_ofDual
@@ -248,42 +192,42 @@ def WithLowerTopology.toDualHomeomorph [Preorder α] : WithLowerTopology α ≃
   continuous_toFun := continuous_coinduced_rng
   continuous_invFun := continuous_coinduced_rng
 
-namespace LowerTopology
+namespace IsLower
 
 /-- The complements of the upper closures of finite sets are a collection of lower sets
 which form a basis for the lower topology. -/
 def lowerBasis (α : Type*) [Preorder α] :=
   { s : Set α | ∃ t : Set α, t.Finite ∧ (upperClosure t : Set α)ᶜ = s }
-#align lower_topology.lower_basis LowerTopology.lowerBasis
+#align lower_topology.lower_basis Topology.IsLower.lowerBasis
 
 section Preorder
 
 variable (α)
-variable [Preorder α] [TopologicalSpace α] [LowerTopology α] {s : Set α}
+variable [Preorder α] [TopologicalSpace α] [IsLower α] {s : Set α}
 
-lemma topology_eq : ‹_› = generateFrom { s | ∃ a : α, (Ici a)ᶜ = s } := topology_eq_lowerTopology
+lemma topology_eq : ‹_› = lower α := topology_eq_lowerTopology
 
 variable {α}
 
-/-- If `α` is equipped with the lower topology, then it is homeomorphic to `WithLowerTopology α`.
+/-- If `α` is equipped with the lower topology, then it is homeomorphic to `WithLower α`.
 -/
-def withLowerTopologyHomeomorph : WithLowerTopology α ≃ₜ α :=
-  WithLowerTopology.ofLower.toHomeomorphOfInducing ⟨by erw [topology_eq α, induced_id]; rfl⟩
-#align lower_topology.with_lower_topology_homeomorph LowerTopology.withLowerTopologyHomeomorph
+def WithLowerHomeomorph : WithLower α ≃ₜ α :=
+  WithLower.ofLower.toHomeomorphOfInducing ⟨by erw [topology_eq α, induced_id]; rfl⟩
+#align lower_topology.with_lower_topology_homeomorph Topology.IsLower.WithLowerHomeomorph
 
 theorem isOpen_iff_generate_Ici_compl : IsOpen s ↔ GenerateOpen { t | ∃ a, (Ici a)ᶜ = t } s := by
   rw [topology_eq α]; rfl
-#align lower_topology.is_open_iff_generate_Ici_compl LowerTopology.isOpen_iff_generate_Ici_compl
+#align lower_topology.is_open_iff_generate_Ici_compl Topology.IsLower.isOpen_iff_generate_Ici_compl
 
-instance instUpperTopologyDual [Preorder α] [TopologicalSpace α] [LowerTopology α] :
-    UpperTopology (αᵒᵈ) where
+instance _root_.OrderDual.instIsUpper [Preorder α] [TopologicalSpace α] [IsLower α] :
+    IsUpper αᵒᵈ where
   topology_eq_upperTopology := topology_eq_lowerTopology (α := α)
 
 /-- Left-closed right-infinite intervals [a, ∞) are closed in the lower topology. -/
 instance : ClosedIciTopology α :=
   ⟨fun a ↦ isOpen_compl_iff.1 <| isOpen_iff_generate_Ici_compl.2 <| GenerateOpen.basic _ ⟨a, rfl⟩⟩
 
--- Porting note: The old `LowerTopology.isClosed_Ici` was removed, since one can now use
+-- Porting note: The old `IsLower.isClosed_Ici` was removed, since one can now use
 -- the general `isClosed_Ici` lemma thanks to the instance above.
 #align lower_topology.is_closed_Ici isClosed_Ici
 
@@ -291,7 +235,7 @@ instance : ClosedIciTopology α :=
 theorem isClosed_upperClosure (h : s.Finite) : IsClosed (upperClosure s : Set α) := by
   simp only [← UpperSet.iInf_Ici, UpperSet.coe_iInf]
   exact h.isClosed_biUnion fun _ _ => isClosed_Ici
-#align lower_topology.is_closed_upper_closure LowerTopology.isClosed_upperClosure
+#align lower_topology.is_closed_upper_closure Topology.IsLower.isClosed_upperClosure
 
 /-- Every set open in the lower topology is a lower set. -/
 theorem isLowerSet_of_isOpen (h : IsOpen s) : IsLowerSet s := by
@@ -302,11 +246,11 @@ theorem isLowerSet_of_isOpen (h : IsOpen s) : IsLowerSet s := by
   case univ => exact isLowerSet_univ
   case inter u v _ _ hu2 hv2 => exact hu2.inter hv2
   case sUnion _ _ ih => exact isLowerSet_sUnion ih
-#align lower_topology.is_lower_set_of_is_open LowerTopology.isLowerSet_of_isOpen
+#align lower_topology.is_lower_set_of_is_open Topology.IsLower.isLowerSet_of_isOpen
 
 theorem isUpperSet_of_isClosed (h : IsClosed s) : IsUpperSet s :=
   isLowerSet_compl.1 <| isLowerSet_of_isOpen h.isOpen_compl
-#align lower_topology.is_upper_set_of_is_closed LowerTopology.isUpperSet_of_isClosed
+#align lower_topology.is_upper_set_of_is_closed Topology.IsLower.isUpperSet_of_isClosed
 
 /--
 The closure of a singleton `{a}` in the lower topology is the left-closed right-infinite interval
@@ -316,7 +260,7 @@ The closure of a singleton `{a}` in the lower topology is the left-closed right-
 theorem closure_singleton (a : α) : closure {a} = Ici a :=
   Subset.antisymm ((closure_minimal fun _ h => h.ge) <| isClosed_Ici) <|
     (isUpperSet_of_isClosed isClosed_closure).Ici_subset <| subset_closure rfl
-#align lower_topology.closure_singleton LowerTopology.closure_singleton
+#align lower_topology.closure_singleton Topology.IsLower.closure_singleton
 
 protected theorem isTopologicalBasis : IsTopologicalBasis (lowerBasis α) := by
   convert isTopologicalBasis_of_subbasis (topology_eq α)
@@ -331,7 +275,7 @@ protected theorem isTopologicalBasis : IsTopologicalBasis (lowerBasis α) := by
     rw [subset_def, Subtype.forall'] at hs
     choose f hf using hs
     exact ⟨_, finite_range f, by simp_rw [biInter_range, hf, sInter_eq_iInter]⟩
-#align lower_topology.is_topological_basis LowerTopology.isTopologicalBasis
+#align lower_topology.is_topological_basis Topology.IsLower.isTopologicalBasis
 
 /-- A function `f : β → α` with lower topology in the codomain is continuous provided that the
 preimage of every interval `Set.Ici a` is a closed set.
@@ -339,7 +283,7 @@ preimage of every interval `Set.Ici a` is a closed set.
 TODO: upgrade to an `iff`. -/
 lemma continuous_of_Ici [TopologicalSpace β] {f : β → α} (h : ∀ a, IsClosed (f ⁻¹' (Ici a))) :
     Continuous f := by
-  obtain rfl := LowerTopology.topology_eq α
+  obtain rfl := IsLower.topology_eq α
   refine continuous_generateFrom ?_
   rintro _ ⟨a, rfl⟩
   exact (h a).isOpen_compl
@@ -348,7 +292,7 @@ end Preorder
 
 section PartialOrder
 
-variable [PartialOrder α] [TopologicalSpace α] [LowerTopology α]
+variable [PartialOrder α] [TopologicalSpace α] [IsLower α]
 
 -- see Note [lower instance priority]
 /-- The lower topology on a partial order is T₀. -/
@@ -358,10 +302,10 @@ instance (priority := 90) t0Space : T0Space α :=
 
 end PartialOrder
 
-end LowerTopology
+end IsLower
 
 
-namespace UpperTopology
+namespace IsUpper
 
 /-- The complements of the lower closures of finite sets are a collection of upper sets
 which form a basis for the upper topology. -/
@@ -371,22 +315,22 @@ def upperBasis (α : Type*) [Preorder α] :=
 section Preorder
 
 variable (α)
-variable [Preorder α] [TopologicalSpace α] [UpperTopology α] {s : Set α}
+variable [Preorder α] [TopologicalSpace α] [IsUpper α] {s : Set α}
 
-lemma topology_eq : ‹_› = generateFrom { s | ∃ a : α, (Iic a)ᶜ = s } := topology_eq_upperTopology
+lemma topology_eq : ‹_› = upper α := topology_eq_upperTopology
 
 variable {α}
 
-/-- If `α` is equipped with the upper topology, then it is homeomorphic to `WithUpperTopology α`.
+/-- If `α` is equipped with the upper topology, then it is homeomorphic to `WithUpper α`.
 -/
-def withUpperTopologyHomeomorph : WithUpperTopology α ≃ₜ α :=
-  WithUpperTopology.ofUpper.toHomeomorphOfInducing ⟨by erw [topology_eq α, induced_id]; rfl⟩
+def WithUpperHomeomorph : WithUpper α ≃ₜ α :=
+  WithUpper.ofUpper.toHomeomorphOfInducing ⟨by erw [topology_eq α, induced_id]; rfl⟩
 
 theorem isOpen_iff_generate_Iic_compl : IsOpen s ↔ GenerateOpen { t | ∃ a, (Iic a)ᶜ = t } s := by
   rw [topology_eq α]; rfl
 
-instance instLowerTopologyDual [Preorder α] [TopologicalSpace α] [UpperTopology α] :
-    LowerTopology (αᵒᵈ) where
+instance _root_.OrderDual.instIsLower [Preorder α] [TopologicalSpace α] [IsUpper α] :
+    IsLower αᵒᵈ where
   topology_eq_lowerTopology := topology_eq_upperTopology (α := α)
 
 /-- Left-infinite right-closed intervals (-∞,a] are closed in the upper topology. -/
@@ -395,11 +339,11 @@ instance : ClosedIicTopology α :=
 
 /-- The lower closure of a finite set is closed in the upper topology. -/
 theorem isClosed_lowerClosure (h : s.Finite) : IsClosed (lowerClosure s : Set α) :=
-  LowerTopology.isClosed_upperClosure (α := αᵒᵈ) h
+  IsLower.isClosed_upperClosure (α := αᵒᵈ) h
 
 /-- Every set open in the upper topology is a upper set. -/
 theorem isUpperSet_of_isOpen (h : IsOpen s) : IsUpperSet s :=
-  LowerTopology.isLowerSet_of_isOpen (α := αᵒᵈ) h
+  IsLower.isLowerSet_of_isOpen (α := αᵒᵈ) h
 
 theorem isLowerSet_of_isClosed (h : IsClosed s) : IsLowerSet s :=
   isUpperSet_compl.1 <| isUpperSet_of_isOpen h.isOpen_compl
@@ -410,10 +354,10 @@ The closure of a singleton `{a}` in the upper topology is the left-infinite righ
 -/
 @[simp]
 theorem closure_singleton (a : α) : closure {a} = Iic a :=
-  LowerTopology.closure_singleton (α := αᵒᵈ) _
+  IsLower.closure_singleton (α := αᵒᵈ) _
 
 protected theorem isTopologicalBasis : IsTopologicalBasis (upperBasis α) :=
-  LowerTopology.isTopologicalBasis (α := αᵒᵈ)
+  IsLower.isTopologicalBasis (α := αᵒᵈ)
 
 /-- A function `f : β → α` with upper topology in the codomain is continuous provided that the
 preimage of every interval `Set.Iic a` is a closed set.
@@ -421,55 +365,58 @@ preimage of every interval `Set.Iic a` is a closed set.
 TODO: upgrade to an `iff`. -/
 lemma continuous_of_Iic [TopologicalSpace β] {f : β → α} (h : ∀ a, IsClosed (f ⁻¹' (Iic a))) :
     Continuous f :=
-  LowerTopology.continuous_of_Ici (α := αᵒᵈ) h
+  IsLower.continuous_of_Ici (α := αᵒᵈ) h
 
 end Preorder
 
 
 section PartialOrder
 
-variable [PartialOrder α] [TopologicalSpace α] [UpperTopology α]
+variable [PartialOrder α] [TopologicalSpace α] [IsUpper α]
 
 -- see Note [lower instance priority]
 /-- The upper topology on a partial order is T₀. -/
 instance (priority := 90) t0Space : T0Space α :=
-  LowerTopology.t0Space (α := αᵒᵈ)
+  IsLower.t0Space (α := αᵒᵈ)
 
 end PartialOrder
 
-end UpperTopology
+end IsUpper
 
-instance instLowerTopologyProd [Preorder α] [TopologicalSpace α] [LowerTopology α] [OrderBot α]
-    [Preorder β] [TopologicalSpace β] [LowerTopology β] [OrderBot β] : LowerTopology (α × β) where
+instance instIsLowerProd [Preorder α] [TopologicalSpace α] [IsLower α]
+    [OrderBot α] [Preorder β] [TopologicalSpace β] [IsLower β] [OrderBot β] :
+    IsLower (α × β) where
   topology_eq_lowerTopology := by
     refine' le_antisymm (le_generateFrom _) _
     · rintro _ ⟨x, rfl⟩
       exact (isClosed_Ici.prod isClosed_Ici).isOpen_compl
-    rw [(LowerTopology.isTopologicalBasis.prod LowerTopology.isTopologicalBasis).eq_generateFrom,
-      le_generateFrom_iff_subset_isOpen, image2_subset_iff]
+    rw [(IsLower.isTopologicalBasis.prod
+      IsLower.isTopologicalBasis).eq_generateFrom, le_generateFrom_iff_subset_isOpen,
+      image2_subset_iff]
     rintro _ ⟨s, hs, rfl⟩ _ ⟨t, ht, rfl⟩
     dsimp
     simp_rw [coe_upperClosure, compl_iUnion, prod_eq, preimage_iInter, preimage_compl]
     -- without `let`, `refine` tries to use the product topology and fails
-    let _ : TopologicalSpace (α × β) := generateFrom { s | ∃ a, (Ici a)ᶜ = s }
+    let _ : TopologicalSpace (α × β) := lower (α × β)
     refine (hs.isOpen_biInter fun a _ => ?_).inter (ht.isOpen_biInter fun b _ => ?_)
     · exact GenerateOpen.basic _ ⟨(a, ⊥), by simp [Ici_prod_eq, prod_univ]⟩
     · exact GenerateOpen.basic _ ⟨(⊥, b), by simp [Ici_prod_eq, univ_prod]⟩
 
-instance instUpperTopologyProd [Preorder α] [TopologicalSpace α] [UpperTopology α] [OrderTop α]
-    [Preorder β] [TopologicalSpace β] [UpperTopology β] [OrderTop β] : UpperTopology (α × β) where
+instance instIsUpperProd [Preorder α] [TopologicalSpace α] [IsUpper α]
+    [OrderTop α] [Preorder β] [TopologicalSpace β] [IsUpper β] [OrderTop β] :
+    IsUpper (α × β) where
   topology_eq_upperTopology := by
-    suffices : LowerTopology (α × β)ᵒᵈ
-    · exact LowerTopology.topology_eq_lowerTopology (α := (α × β)ᵒᵈ)
-    exact instLowerTopologyProd (α := αᵒᵈ) (β := βᵒᵈ)
+    suffices : IsLower (α × β)ᵒᵈ
+    · exact IsLower.topology_eq_lowerTopology (α := (α × β)ᵒᵈ)
+    exact instIsLowerProd (α := αᵒᵈ) (β := βᵒᵈ)
 
-section CompleteLattice_LowerTopology
+section CompleteLattice_IsLower
 
-variable [CompleteLattice α] [CompleteLattice β] [TopologicalSpace α] [LowerTopology α]
-  [TopologicalSpace β] [LowerTopology β]
+variable [CompleteLattice α] [CompleteLattice β] [TopologicalSpace α] [IsLower α]
+  [TopologicalSpace β] [IsLower β]
 
-protected theorem sInfHom.continuous (f : sInfHom α β) : Continuous f := by
-  refine LowerTopology.continuous_of_Ici fun b => ?_
+protected lemma _root_.sInfHom.continuous (f : sInfHom α β) : Continuous f := by
+  refine IsLower.continuous_of_Ici fun b => ?_
   convert isClosed_Ici (a := sInf <| f ⁻¹' Ici b)
   refine' Subset.antisymm (fun a => sInf_le) fun a ha => le_trans _ <|
     OrderHomClass.mono (f : α →o β) ha
@@ -478,34 +425,32 @@ protected theorem sInfHom.continuous (f : sInfHom α β) : Continuous f := by
 #align Inf_hom.continuous sInfHom.continuous
 
 -- see Note [lower instance priority]
-instance (priority := 90) LowerTopology.continuousInf : ContinuousInf α :=
+instance (priority := 90) IsLower.toContinuousInf : ContinuousInf α :=
   ⟨(infsInfHom : sInfHom (α × α) α).continuous⟩
-#align lower_topology.to_has_continuous_inf LowerTopology.continuousInf
+#align lower_topology.to_has_continuous_inf Topology.IsLower.toContinuousInf
 
-end CompleteLattice_LowerTopology
+end CompleteLattice_IsLower
 
-section CompleteLattice_UpperTopology
+section CompleteLattice_IsUpper
 
-variable [CompleteLattice α] [CompleteLattice β] [TopologicalSpace α] [UpperTopology α]
-  [TopologicalSpace β] [UpperTopology β]
+variable [CompleteLattice α] [CompleteLattice β] [TopologicalSpace α] [IsUpper α]
+  [TopologicalSpace β] [IsUpper β]
 
-protected theorem sSupHom.continuous (f : sSupHom α β) : Continuous f :=
+protected lemma _root_.sSupHom.continuous (f : sSupHom α β) : Continuous f :=
   sInfHom.continuous (α := αᵒᵈ) (β := βᵒᵈ) (sSupHom.dual.toFun f)
 
 -- see Note [lower instance priority]
-instance (priority := 90) UpperTopology.continuousInf : ContinuousSup α :=
+instance (priority := 90) IsUpper.toContinuousInf : ContinuousSup α :=
   ⟨(supsSupHom : sSupHom (α × α) α).continuous⟩
 
-end CompleteLattice_UpperTopology
+end CompleteLattice_IsUpper
 
-lemma upper_dual_iff_lower [Preorder α] [TopologicalSpace α] :
-    UpperTopology αᵒᵈ ↔ LowerTopology α := by
+lemma isUpper_orderDual [Preorder α] [TopologicalSpace α] : IsUpper αᵒᵈ ↔ IsLower α := by
   constructor
-  · apply UpperTopology.instLowerTopologyDual
-  · apply LowerTopology.instUpperTopologyDual
+  · apply OrderDual.instIsLower
+  · apply OrderDual.instIsUpper
 
-lemma lower_dual_iff_upper [Preorder α] [TopologicalSpace α] :
-    LowerTopology αᵒᵈ ↔ UpperTopology α := by
-  constructor
-  · apply LowerTopology.instUpperTopologyDual
-  · apply UpperTopology.instLowerTopologyDual
+lemma isLower_orderDual [Preorder α] [TopologicalSpace α] : IsLower αᵒᵈ ↔ IsUpper α :=
+  isUpper_orderDual.symm
+
+end Topology
fix(Topology/Order/UpperLowerSetTopology): Fix theorem names in UpperLowerSetTopology to match mathlib4 conventions (#6557)

Modify lemma names in UpperLowerSetTopology to meet Mathlib4 conventions.

Co-authored-by: Christopher Hoskin <mans0954@users.noreply.github.com>

Diff
@@ -236,7 +236,11 @@ instance [Preorder α] : LowerTopology (WithLowerTopology α) :=
 instance [Preorder α] : UpperTopology (WithUpperTopology α) :=
   ⟨rfl⟩
 
-def toOrderDualHomeomorph [Preorder α] : WithLowerTopology α ≃ₜ WithUpperTopology αᵒᵈ where
+/--
+The lower topology is homeomorphic to the upper topology on the dual order
+-/
+def WithLowerTopology.toDualHomeomorph [Preorder α] : WithLowerTopology α ≃ₜ WithUpperTopology αᵒᵈ
+    where
   toFun := OrderDual.toDual
   invFun := OrderDual.ofDual
   left_inv := OrderDual.toDual_ofDual
feat: Alexandrov-discrete spaces (#6962)

We define Alexandrov-discrete spaces as topological spaces where the intersection of a family of open sets is open.

This PR only gives a minimal API because the goal is to ensure that lemma names like isOpen_sInter are free to use for AlexandrovDiscrete. The existing lemmas are getting prefixed by Set.Finite or suffixed by _of_finite.

Diff
@@ -286,7 +286,7 @@ instance : ClosedIciTopology α :=
 /-- The upper closure of a finite set is closed in the lower topology. -/
 theorem isClosed_upperClosure (h : s.Finite) : IsClosed (upperClosure s : Set α) := by
   simp only [← UpperSet.iInf_Ici, UpperSet.coe_iInf]
-  exact isClosed_biUnion h fun _ _ => isClosed_Ici
+  exact h.isClosed_biUnion fun _ _ => isClosed_Ici
 #align lower_topology.is_closed_upper_closure LowerTopology.isClosed_upperClosure
 
 /-- Every set open in the lower topology is a lower set. -/
@@ -448,7 +448,7 @@ instance instLowerTopologyProd [Preorder α] [TopologicalSpace α] [LowerTopolog
     simp_rw [coe_upperClosure, compl_iUnion, prod_eq, preimage_iInter, preimage_compl]
     -- without `let`, `refine` tries to use the product topology and fails
     let _ : TopologicalSpace (α × β) := generateFrom { s | ∃ a, (Ici a)ᶜ = s }
-    refine (isOpen_biInter hs fun a _ => ?_).inter (isOpen_biInter ht fun b _ => ?_)
+    refine (hs.isOpen_biInter fun a _ => ?_).inter (ht.isOpen_biInter fun b _ => ?_)
     · exact GenerateOpen.basic _ ⟨(a, ⊥), by simp [Ici_prod_eq, prod_univ]⟩
     · exact GenerateOpen.basic _ ⟨(⊥, b), by simp [Ici_prod_eq, univ_prod]⟩
 
chore: tidy various files (#6838)
Diff
@@ -494,13 +494,13 @@ instance (priority := 90) UpperTopology.continuousInf : ContinuousSup α :=
 
 end CompleteLattice_UpperTopology
 
-lemma UpperDual_iff_Lower [Preorder α] [TopologicalSpace α] :
+lemma upper_dual_iff_lower [Preorder α] [TopologicalSpace α] :
     UpperTopology αᵒᵈ ↔ LowerTopology α := by
   constructor
   · apply UpperTopology.instLowerTopologyDual
   · apply LowerTopology.instUpperTopologyDual
 
-lemma LowerDual_iff_Upper [Preorder α] [TopologicalSpace α] :
+lemma lower_dual_iff_upper [Preorder α] [TopologicalSpace α] :
     LowerTopology αᵒᵈ ↔ UpperTopology α := by
   constructor
   · apply LowerTopology.instUpperTopologyDual
feat: weaken assumptions for IsCompact.existsIsLeast and all of its variations (#6345)

As discussed a while ago on Zulip, we introduce classes expressing that a certain topology has closed Icis/Iics, which is sufficient to get boundedness of compacts on the desired side. The main application is that these now apply to types satisfying UpperTopology/LowerTopology, which will allow us to apply these compactness results to semicontinuous functions.

The naming was discussed here

Diff
@@ -276,14 +276,17 @@ instance instUpperTopologyDual [Preorder α] [TopologicalSpace α] [LowerTopolog
   topology_eq_upperTopology := topology_eq_lowerTopology (α := α)
 
 /-- Left-closed right-infinite intervals [a, ∞) are closed in the lower topology. -/
-theorem isClosed_Ici (a : α) : IsClosed (Ici a) :=
-  isOpen_compl_iff.1 <| isOpen_iff_generate_Ici_compl.2 <| GenerateOpen.basic _ ⟨a, rfl⟩
-#align lower_topology.is_closed_Ici LowerTopology.isClosed_Ici
+instance : ClosedIciTopology α :=
+  ⟨fun a ↦ isOpen_compl_iff.1 <| isOpen_iff_generate_Ici_compl.2 <| GenerateOpen.basic _ ⟨a, rfl⟩⟩
+
+-- Porting note: The old `LowerTopology.isClosed_Ici` was removed, since one can now use
+-- the general `isClosed_Ici` lemma thanks to the instance above.
+#align lower_topology.is_closed_Ici isClosed_Ici
 
 /-- The upper closure of a finite set is closed in the lower topology. -/
 theorem isClosed_upperClosure (h : s.Finite) : IsClosed (upperClosure s : Set α) := by
   simp only [← UpperSet.iInf_Ici, UpperSet.coe_iInf]
-  exact isClosed_biUnion h fun a _ => isClosed_Ici a
+  exact isClosed_biUnion h fun _ _ => isClosed_Ici
 #align lower_topology.is_closed_upper_closure LowerTopology.isClosed_upperClosure
 
 /-- Every set open in the lower topology is a lower set. -/
@@ -307,7 +310,7 @@ The closure of a singleton `{a}` in the lower topology is the left-closed right-
 -/
 @[simp]
 theorem closure_singleton (a : α) : closure {a} = Ici a :=
-  Subset.antisymm ((closure_minimal fun _ h => h.ge) <| isClosed_Ici a) <|
+  Subset.antisymm ((closure_minimal fun _ h => h.ge) <| isClosed_Ici) <|
     (isUpperSet_of_isClosed isClosed_closure).Ici_subset <| subset_closure rfl
 #align lower_topology.closure_singleton LowerTopology.closure_singleton
 
@@ -383,8 +386,8 @@ instance instLowerTopologyDual [Preorder α] [TopologicalSpace α] [UpperTopolog
   topology_eq_lowerTopology := topology_eq_upperTopology (α := α)
 
 /-- Left-infinite right-closed intervals (-∞,a] are closed in the upper topology. -/
-theorem isClosed_Iic (a : α) : IsClosed (Iic a) :=
-  isOpen_compl_iff.1 <| isOpen_iff_generate_Iic_compl.2 <| GenerateOpen.basic _ ⟨a, rfl⟩
+instance : ClosedIicTopology α :=
+  ⟨fun a ↦ isOpen_compl_iff.1 <| isOpen_iff_generate_Iic_compl.2 <| GenerateOpen.basic _ ⟨a, rfl⟩⟩
 
 /-- The lower closure of a finite set is closed in the upper topology. -/
 theorem isClosed_lowerClosure (h : s.Finite) : IsClosed (lowerClosure s : Set α) :=
@@ -437,7 +440,7 @@ instance instLowerTopologyProd [Preorder α] [TopologicalSpace α] [LowerTopolog
   topology_eq_lowerTopology := by
     refine' le_antisymm (le_generateFrom _) _
     · rintro _ ⟨x, rfl⟩
-      exact ((LowerTopology.isClosed_Ici _).prod <| LowerTopology.isClosed_Ici _).isOpen_compl
+      exact (isClosed_Ici.prod isClosed_Ici).isOpen_compl
     rw [(LowerTopology.isTopologicalBasis.prod LowerTopology.isTopologicalBasis).eq_generateFrom,
       le_generateFrom_iff_subset_isOpen, image2_subset_iff]
     rintro _ ⟨s, hs, rfl⟩ _ ⟨t, ht, rfl⟩
@@ -463,7 +466,7 @@ variable [CompleteLattice α] [CompleteLattice β] [TopologicalSpace α] [LowerT
 
 protected theorem sInfHom.continuous (f : sInfHom α β) : Continuous f := by
   refine LowerTopology.continuous_of_Ici fun b => ?_
-  convert LowerTopology.isClosed_Ici (sInf <| f ⁻¹' Ici b)
+  convert isClosed_Ici (a := sInf <| f ⁻¹' Ici b)
   refine' Subset.antisymm (fun a => sInf_le) fun a ha => le_trans _ <|
     OrderHomClass.mono (f : α →o β) ha
   refine' LE.le.trans _ (map_sInf f _).ge
fix: disable autoImplicit globally (#6528)

Autoimplicits are highly controversial and also defeat the performance-improving work in #6474.

The intent of this PR is to make autoImplicit opt-in on a per-file basis, by disabling it in the lakefile and enabling it again with set_option autoImplicit true in the few files that rely on it.

That also keeps this PR small, as opposed to attempting to "fix" files to not need it any more.

I claim that many of the uses of autoImplicit in these files are accidental; situations such as:

  • Assuming variables are in scope, but pasting the lemma in the wrong section
  • Pasting in a lemma from a scratch file without checking to see if the variable names are consistent with the rest of the file
  • Making a copy-paste error between lemmas and forgetting to add an explicit arguments.

Having set_option autoImplicit false as the default prevents these types of mistake being made in the 90% of files where autoImplicits are not used at all, and causes them to be caught by CI during review.

I think there were various points during the port where we encouraged porters to delete the universes u v lines; I think having autoparams for universe variables only would cover a lot of the cases we actually use them, while avoiding any real shortcomings.

A Zulip poll (after combining overlapping votes accordingly) was in favor of this change with 5:5:18 as the no:dontcare:yes vote ratio.

While this PR was being reviewed, a handful of files gained some more likely-accidental autoImplicits. In these places, set_option autoImplicit true has been placed locally within a section, rather than at the top of the file.

Diff
@@ -51,6 +51,8 @@ of the lower topology to the spectrum of a complete lattice coincides with the h
 lower topology, upper topology, preorder
 -/
 
+set_option autoImplicit true
+
 open Set TopologicalSpace
 
 section WithLowerTopology
chore: banish Type _ and Sort _ (#6499)

We remove all possible occurences of Type _ and Sort _ in favor of Type* and Sort*.

This has nice performance benefits.

Diff
@@ -55,7 +55,7 @@ open Set TopologicalSpace
 
 section WithLowerTopology
 
-variable (α β : Type _)
+variable (α β : Type*)
 
 /-- Type synonym for a preorder equipped with the lower topology. -/
 def WithLowerTopology := α
@@ -106,7 +106,7 @@ theorem ofLower_inj {a b : WithLowerTopology α} : ofLower a = ofLower b ↔ a =
 #align with_lower_topology.of_lower_inj WithLowerTopology.ofLower_inj
 
 /-- A recursor for `WithLowerTopology`. Use as `induction x using WithLowerTopology.rec`. -/
-protected def rec {β : WithLowerTopology α → Sort _} (h : ∀ a, β (toLower a)) : ∀ a, β a := fun a =>
+protected def rec {β : WithLowerTopology α → Sort*} (h : ∀ a, β (toLower a)) : ∀ a, β a := fun a =>
   h (ofLower a)
 #align with_lower_topology.rec WithLowerTopology.rec
 
@@ -142,7 +142,7 @@ end WithLowerTopology
 
 section WithUpperTopology
 
-variable (α β : Type _)
+variable (α β : Type*)
 
 /-- Type synonym for a preorder equipped with the upper topology. -/
 def WithUpperTopology := α
@@ -182,7 +182,7 @@ theorem ofUpper_inj {a b : WithUpperTopology α} : ofUpper a = ofUpper b ↔ a =
   Iff.rfl
 
 /-- A recursor for `WithUpperTopology`. Use as `induction x using WithUpperTopology.rec`. -/
-protected def rec {β : WithUpperTopology α → Sort _} (h : ∀ a, β (toUpper a)) : ∀ a, β a := fun a =>
+protected def rec {β : WithUpperTopology α → Sort*} (h : ∀ a, β (toUpper a)) : ∀ a, β a := fun a =>
   h (ofUpper a)
 
 instance [Nonempty α] : Nonempty (WithUpperTopology α) :=
@@ -217,7 +217,7 @@ end WithUpperTopology
 The lower topology is the topology generated by the complements of the left-closed right-infinite
 intervals.
 -/
-class LowerTopology (α : Type _) [t : TopologicalSpace α] [Preorder α] : Prop where
+class LowerTopology (α : Type*) [t : TopologicalSpace α] [Preorder α] : Prop where
   topology_eq_lowerTopology : t = generateFrom { s | ∃ a, (Ici a)ᶜ = s }
 #align lower_topology LowerTopology
 
@@ -225,7 +225,7 @@ class LowerTopology (α : Type _) [t : TopologicalSpace α] [Preorder α] : Prop
 The upper topology is the topology generated by the complements of the right-closed left-infinite
 intervals.
 -/
-class UpperTopology (α : Type _) [t : TopologicalSpace α] [Preorder α] : Prop where
+class UpperTopology (α : Type*) [t : TopologicalSpace α] [Preorder α] : Prop where
   topology_eq_upperTopology : t = generateFrom { s | ∃ a, (Iic a)ᶜ = s }
 
 instance [Preorder α] : LowerTopology (WithLowerTopology α) :=
@@ -246,7 +246,7 @@ namespace LowerTopology
 
 /-- The complements of the upper closures of finite sets are a collection of lower sets
 which form a basis for the lower topology. -/
-def lowerBasis (α : Type _) [Preorder α] :=
+def lowerBasis (α : Type*) [Preorder α] :=
   { s : Set α | ∃ t : Set α, t.Finite ∧ (upperClosure t : Set α)ᶜ = s }
 #align lower_topology.lower_basis LowerTopology.lowerBasis
 
@@ -356,7 +356,7 @@ namespace UpperTopology
 
 /-- The complements of the lower closures of finite sets are a collection of upper sets
 which form a basis for the upper topology. -/
-def upperBasis (α : Type _) [Preorder α] :=
+def upperBasis (α : Type*) [Preorder α] :=
   { s : Set α | ∃ t : Set α, t.Finite ∧ (lowerClosure t : Set α)ᶜ = s }
 
 section Preorder
feat(Topology/Order/LowerUpperTopology): Dual the lower topology (#5873)

Defines the upper topology, which is the dual of the lower topology on a preorder.

Co-authored-by: Christopher Hoskin <christopher.hoskin@overleaf.com> Co-authored-by: Christopher Hoskin <mans0954@users.noreply.github.com>

Diff
@@ -10,10 +10,13 @@ import Mathlib.Order.Hom.CompleteLattice
 #align_import topology.order.lower_topology from "leanprover-community/mathlib"@"98e83c3d541c77cdb7da20d79611a780ff8e7d90"
 
 /-!
-# Lower topology
+# Lower and Upper topology
 
 This file introduces the lower topology on a preorder as the topology generated by the complements
-of the closed intervals to infinity.
+of the left-closed right-infinite intervals.
+
+For completeness we also introduce the dual upper topology, generated by the complements of the
+right-closed left-infinite intervals.
 
 ## Main statements
 
@@ -32,6 +35,8 @@ We define a mixin class `LowerTopology` for the class of types which are both a
 topology and where the topology is generated by the complements of the closed intervals to infinity.
 It is shown that `WithLowerTopology α` is an instance of `LowerTopology`.
 
+Similarly for the upper topology.
+
 ## Motivation
 
 The lower topology is used with the `Scott` topology to define the Lawson topology. The restriction
@@ -43,13 +48,14 @@ of the lower topology to the spectrum of a complete lattice coincides with the h
 
 ## Tags
 
-lower topology, preorder
+lower topology, upper topology, preorder
 -/
 
+open Set TopologicalSpace
 
-variable (α β : Type _)
+section WithLowerTopology
 
-open Set TopologicalSpace
+variable (α β : Type _)
 
 /-- Type synonym for a preorder equipped with the lower topology. -/
 def WithLowerTopology := α
@@ -132,16 +138,110 @@ theorem isOpen_def (T : Set (WithLowerTopology α)) :
 
 end WithLowerTopology
 
+end WithLowerTopology
+
+section WithUpperTopology
+
+variable (α β : Type _)
+
+/-- Type synonym for a preorder equipped with the upper topology. -/
+def WithUpperTopology := α
+
+variable {α β}
+
+namespace WithUpperTopology
+
+/-- `toUpper` is the identity function to the `WithUpperTopology` of a type.  -/
+@[match_pattern]
+def toUpper : α ≃ WithUpperTopology α := Equiv.refl _
+
+/-- `ofUpper` is the identity function from the `WithUpperTopology` of a type.  -/
+@[match_pattern]
+def ofUpper : WithUpperTopology α ≃ α := Equiv.refl _
+
+@[simp]
+theorem to_withUpperTopology_symm_eq {α} : (@toUpper α).symm = ofUpper :=
+  rfl
+
+@[simp]
+theorem of_withUpperTopology_symm_eq : (@ofUpper α).symm = toUpper :=
+  rfl
+
+@[simp]
+theorem toUpper_ofUpper (a : WithUpperTopology α) : toUpper (ofUpper a) = a :=
+  rfl
+
+@[simp]
+theorem ofUpper_toUpper (a : α) : ofUpper (toUpper a) = a :=
+  rfl
+
+theorem toUpper_inj {a b : α} : toUpper a = toUpper b ↔ a = b :=
+  Iff.rfl
+
+theorem ofUpper_inj {a b : WithUpperTopology α} : ofUpper a = ofUpper b ↔ a = b :=
+  Iff.rfl
+
+/-- A recursor for `WithUpperTopology`. Use as `induction x using WithUpperTopology.rec`. -/
+protected def rec {β : WithUpperTopology α → Sort _} (h : ∀ a, β (toUpper a)) : ∀ a, β a := fun a =>
+  h (ofUpper a)
+
+instance [Nonempty α] : Nonempty (WithUpperTopology α) :=
+  ‹Nonempty α›
+
+instance [Inhabited α] : Inhabited (WithUpperTopology α) :=
+  ‹Inhabited α›
+
+variable [Preorder α]
+
+instance : Preorder (WithUpperTopology α) :=
+  ‹Preorder α›
+
+instance : TopologicalSpace (WithUpperTopology α) :=
+  generateFrom { s | ∃ a, (Iic a)ᶜ = s }
+
+theorem isOpen_preimage_ofUpper (S : Set α) :
+    IsOpen (WithUpperTopology.ofUpper ⁻¹' S) ↔
+      (generateFrom { s : Set α | ∃ a : α, (Iic a)ᶜ = s }).IsOpen S :=
+  Iff.rfl
+
+theorem isOpen_def (T : Set (WithUpperTopology α)) :
+    IsOpen T ↔ (generateFrom { s : Set α | ∃ a : α, (Iic a)ᶜ = s }).IsOpen
+    (WithUpperTopology.toUpper ⁻¹' T) :=
+  Iff.rfl
+
+end WithUpperTopology
+
+end WithUpperTopology
+
 /--
-The lower topology is the topology generated by the complements of the closed intervals to infinity.
+The lower topology is the topology generated by the complements of the left-closed right-infinite
+intervals.
 -/
 class LowerTopology (α : Type _) [t : TopologicalSpace α] [Preorder α] : Prop where
   topology_eq_lowerTopology : t = generateFrom { s | ∃ a, (Ici a)ᶜ = s }
 #align lower_topology LowerTopology
 
+/--
+The upper topology is the topology generated by the complements of the right-closed left-infinite
+intervals.
+-/
+class UpperTopology (α : Type _) [t : TopologicalSpace α] [Preorder α] : Prop where
+  topology_eq_upperTopology : t = generateFrom { s | ∃ a, (Iic a)ᶜ = s }
+
 instance [Preorder α] : LowerTopology (WithLowerTopology α) :=
   ⟨rfl⟩
 
+instance [Preorder α] : UpperTopology (WithUpperTopology α) :=
+  ⟨rfl⟩
+
+def toOrderDualHomeomorph [Preorder α] : WithLowerTopology α ≃ₜ WithUpperTopology αᵒᵈ where
+  toFun := OrderDual.toDual
+  invFun := OrderDual.ofDual
+  left_inv := OrderDual.toDual_ofDual
+  right_inv := OrderDual.ofDual_toDual
+  continuous_toFun := continuous_coinduced_rng
+  continuous_invFun := continuous_coinduced_rng
+
 namespace LowerTopology
 
 /-- The complements of the upper closures of finite sets are a collection of lower sets
@@ -169,6 +269,10 @@ theorem isOpen_iff_generate_Ici_compl : IsOpen s ↔ GenerateOpen { t | ∃ a, (
   rw [topology_eq α]; rfl
 #align lower_topology.is_open_iff_generate_Ici_compl LowerTopology.isOpen_iff_generate_Ici_compl
 
+instance instUpperTopologyDual [Preorder α] [TopologicalSpace α] [LowerTopology α] :
+    UpperTopology (αᵒᵈ) where
+  topology_eq_upperTopology := topology_eq_lowerTopology (α := α)
+
 /-- Left-closed right-infinite intervals [a, ∞) are closed in the lower topology. -/
 theorem isClosed_Ici (a : α) : IsClosed (Ici a) :=
   isOpen_compl_iff.1 <| isOpen_iff_generate_Ici_compl.2 <| GenerateOpen.basic _ ⟨a, rfl⟩
@@ -247,8 +351,87 @@ end PartialOrder
 
 end LowerTopology
 
-instance [Preorder α] [TopologicalSpace α] [LowerTopology α] [OrderBot α] [Preorder β]
-    [TopologicalSpace β] [LowerTopology β] [OrderBot β] : LowerTopology (α × β) where
+
+namespace UpperTopology
+
+/-- The complements of the lower closures of finite sets are a collection of upper sets
+which form a basis for the upper topology. -/
+def upperBasis (α : Type _) [Preorder α] :=
+  { s : Set α | ∃ t : Set α, t.Finite ∧ (lowerClosure t : Set α)ᶜ = s }
+
+section Preorder
+
+variable (α)
+variable [Preorder α] [TopologicalSpace α] [UpperTopology α] {s : Set α}
+
+lemma topology_eq : ‹_› = generateFrom { s | ∃ a : α, (Iic a)ᶜ = s } := topology_eq_upperTopology
+
+variable {α}
+
+/-- If `α` is equipped with the upper topology, then it is homeomorphic to `WithUpperTopology α`.
+-/
+def withUpperTopologyHomeomorph : WithUpperTopology α ≃ₜ α :=
+  WithUpperTopology.ofUpper.toHomeomorphOfInducing ⟨by erw [topology_eq α, induced_id]; rfl⟩
+
+theorem isOpen_iff_generate_Iic_compl : IsOpen s ↔ GenerateOpen { t | ∃ a, (Iic a)ᶜ = t } s := by
+  rw [topology_eq α]; rfl
+
+instance instLowerTopologyDual [Preorder α] [TopologicalSpace α] [UpperTopology α] :
+    LowerTopology (αᵒᵈ) where
+  topology_eq_lowerTopology := topology_eq_upperTopology (α := α)
+
+/-- Left-infinite right-closed intervals (-∞,a] are closed in the upper topology. -/
+theorem isClosed_Iic (a : α) : IsClosed (Iic a) :=
+  isOpen_compl_iff.1 <| isOpen_iff_generate_Iic_compl.2 <| GenerateOpen.basic _ ⟨a, rfl⟩
+
+/-- The lower closure of a finite set is closed in the upper topology. -/
+theorem isClosed_lowerClosure (h : s.Finite) : IsClosed (lowerClosure s : Set α) :=
+  LowerTopology.isClosed_upperClosure (α := αᵒᵈ) h
+
+/-- Every set open in the upper topology is a upper set. -/
+theorem isUpperSet_of_isOpen (h : IsOpen s) : IsUpperSet s :=
+  LowerTopology.isLowerSet_of_isOpen (α := αᵒᵈ) h
+
+theorem isLowerSet_of_isClosed (h : IsClosed s) : IsLowerSet s :=
+  isUpperSet_compl.1 <| isUpperSet_of_isOpen h.isOpen_compl
+
+/--
+The closure of a singleton `{a}` in the upper topology is the left-infinite right-closed interval
+(-∞,a].
+-/
+@[simp]
+theorem closure_singleton (a : α) : closure {a} = Iic a :=
+  LowerTopology.closure_singleton (α := αᵒᵈ) _
+
+protected theorem isTopologicalBasis : IsTopologicalBasis (upperBasis α) :=
+  LowerTopology.isTopologicalBasis (α := αᵒᵈ)
+
+/-- A function `f : β → α` with upper topology in the codomain is continuous provided that the
+preimage of every interval `Set.Iic a` is a closed set.
+
+TODO: upgrade to an `iff`. -/
+lemma continuous_of_Iic [TopologicalSpace β] {f : β → α} (h : ∀ a, IsClosed (f ⁻¹' (Iic a))) :
+    Continuous f :=
+  LowerTopology.continuous_of_Ici (α := αᵒᵈ) h
+
+end Preorder
+
+
+section PartialOrder
+
+variable [PartialOrder α] [TopologicalSpace α] [UpperTopology α]
+
+-- see Note [lower instance priority]
+/-- The upper topology on a partial order is T₀. -/
+instance (priority := 90) t0Space : T0Space α :=
+  LowerTopology.t0Space (α := αᵒᵈ)
+
+end PartialOrder
+
+end UpperTopology
+
+instance instLowerTopologyProd [Preorder α] [TopologicalSpace α] [LowerTopology α] [OrderBot α]
+    [Preorder β] [TopologicalSpace β] [LowerTopology β] [OrderBot β] : LowerTopology (α × β) where
   topology_eq_lowerTopology := by
     refine' le_antisymm (le_generateFrom _) _
     · rintro _ ⟨x, rfl⟩
@@ -264,7 +447,14 @@ instance [Preorder α] [TopologicalSpace α] [LowerTopology α] [OrderBot α] [P
     · exact GenerateOpen.basic _ ⟨(a, ⊥), by simp [Ici_prod_eq, prod_univ]⟩
     · exact GenerateOpen.basic _ ⟨(⊥, b), by simp [Ici_prod_eq, univ_prod]⟩
 
-section CompleteLattice
+instance instUpperTopologyProd [Preorder α] [TopologicalSpace α] [UpperTopology α] [OrderTop α]
+    [Preorder β] [TopologicalSpace β] [UpperTopology β] [OrderTop β] : UpperTopology (α × β) where
+  topology_eq_upperTopology := by
+    suffices : LowerTopology (α × β)ᵒᵈ
+    · exact LowerTopology.topology_eq_lowerTopology (α := (α × β)ᵒᵈ)
+    exact instLowerTopologyProd (α := αᵒᵈ) (β := βᵒᵈ)
+
+section CompleteLattice_LowerTopology
 
 variable [CompleteLattice α] [CompleteLattice β] [TopologicalSpace α] [LowerTopology α]
   [TopologicalSpace β] [LowerTopology β]
@@ -283,4 +473,30 @@ instance (priority := 90) LowerTopology.continuousInf : ContinuousInf α :=
   ⟨(infsInfHom : sInfHom (α × α) α).continuous⟩
 #align lower_topology.to_has_continuous_inf LowerTopology.continuousInf
 
-end CompleteLattice
+end CompleteLattice_LowerTopology
+
+section CompleteLattice_UpperTopology
+
+variable [CompleteLattice α] [CompleteLattice β] [TopologicalSpace α] [UpperTopology α]
+  [TopologicalSpace β] [UpperTopology β]
+
+protected theorem sSupHom.continuous (f : sSupHom α β) : Continuous f :=
+  sInfHom.continuous (α := αᵒᵈ) (β := βᵒᵈ) (sSupHom.dual.toFun f)
+
+-- see Note [lower instance priority]
+instance (priority := 90) UpperTopology.continuousInf : ContinuousSup α :=
+  ⟨(supsSupHom : sSupHom (α × α) α).continuous⟩
+
+end CompleteLattice_UpperTopology
+
+lemma UpperDual_iff_Lower [Preorder α] [TopologicalSpace α] :
+    UpperTopology αᵒᵈ ↔ LowerTopology α := by
+  constructor
+  · apply UpperTopology.instLowerTopologyDual
+  · apply LowerTopology.instUpperTopologyDual
+
+lemma LowerDual_iff_Upper [Preorder α] [TopologicalSpace α] :
+    LowerTopology αᵒᵈ ↔ UpperTopology α := by
+  constructor
+  · apply LowerTopology.instUpperTopologyDual
+  · apply UpperTopology.instLowerTopologyDual
chore: script to replace headers with #align_import statements (#5979)

Open in Gitpod

Co-authored-by: Eric Wieser <wieser.eric@gmail.com> Co-authored-by: Scott Morrison <scott.morrison@gmail.com>

Diff
@@ -2,16 +2,13 @@
 Copyright (c) 2023 Christopher Hoskin. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Christopher Hoskin
-
-! This file was ported from Lean 3 source module topology.order.lower_topology
-! leanprover-community/mathlib commit 98e83c3d541c77cdb7da20d79611a780ff8e7d90
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
 -/
 import Mathlib.Topology.Homeomorph
 import Mathlib.Topology.Order.Lattice
 import Mathlib.Order.Hom.CompleteLattice
 
+#align_import topology.order.lower_topology from "leanprover-community/mathlib"@"98e83c3d541c77cdb7da20d79611a780ff8e7d90"
+
 /-!
 # Lower topology
 
fix: change compl precedence (#5586)

Co-authored-by: Yury G. Kudryashov <urkud@urkud.name>

Diff
@@ -119,17 +119,17 @@ instance : Preorder (WithLowerTopology α) :=
   ‹Preorder α›
 
 instance : TopologicalSpace (WithLowerTopology α) :=
-  generateFrom { s | ∃ a, Ici aᶜ = s }
+  generateFrom { s | ∃ a, (Ici a)ᶜ = s }
 
 theorem isOpen_preimage_ofLower (S : Set α) :
     IsOpen (WithLowerTopology.ofLower ⁻¹' S) ↔
-      (generateFrom { s : Set α | ∃ a : α, Ici aᶜ = s }).IsOpen S :=
+      (generateFrom { s : Set α | ∃ a : α, (Ici a)ᶜ = s }).IsOpen S :=
   Iff.rfl
 #align with_lower_topology.is_open_preimage_of_lower WithLowerTopology.isOpen_preimage_ofLower
 
 theorem isOpen_def (T : Set (WithLowerTopology α)) :
-    IsOpen T ↔
-      (generateFrom { s : Set α | ∃ a : α, Ici aᶜ = s }).IsOpen (WithLowerTopology.toLower ⁻¹' T) :=
+    IsOpen T ↔ (generateFrom { s : Set α | ∃ a : α, (Ici a)ᶜ = s }).IsOpen
+    (WithLowerTopology.toLower ⁻¹' T) :=
   Iff.rfl
 #align with_lower_topology.is_open_def WithLowerTopology.isOpen_def
 
@@ -139,7 +139,7 @@ end WithLowerTopology
 The lower topology is the topology generated by the complements of the closed intervals to infinity.
 -/
 class LowerTopology (α : Type _) [t : TopologicalSpace α] [Preorder α] : Prop where
-  topology_eq_lowerTopology : t = generateFrom { s | ∃ a, Ici aᶜ = s }
+  topology_eq_lowerTopology : t = generateFrom { s | ∃ a, (Ici a)ᶜ = s }
 #align lower_topology LowerTopology
 
 instance [Preorder α] : LowerTopology (WithLowerTopology α) :=
@@ -168,7 +168,7 @@ def withLowerTopologyHomeomorph : WithLowerTopology α ≃ₜ α :=
   WithLowerTopology.ofLower.toHomeomorphOfInducing ⟨by erw [topology_eq α, induced_id]; rfl⟩
 #align lower_topology.with_lower_topology_homeomorph LowerTopology.withLowerTopologyHomeomorph
 
-theorem isOpen_iff_generate_Ici_compl : IsOpen s ↔ GenerateOpen { t | ∃ a, Ici aᶜ = t } s := by
+theorem isOpen_iff_generate_Ici_compl : IsOpen s ↔ GenerateOpen { t | ∃ a, (Ici a)ᶜ = t } s := by
   rw [topology_eq α]; rfl
 #align lower_topology.is_open_iff_generate_Ici_compl LowerTopology.isOpen_iff_generate_Ici_compl
 
@@ -214,7 +214,7 @@ protected theorem isTopologicalBasis : IsTopologicalBasis (lowerBasis α) := by
   ext s
   constructor
   · rintro ⟨F, hF, rfl⟩
-    refine' ⟨(fun a => Ici aᶜ) '' F, ⟨hF.image _, image_subset_iff.2 fun _ _ => ⟨_, rfl⟩⟩, _⟩
+    refine' ⟨(fun a => (Ici a)ᶜ) '' F, ⟨hF.image _, image_subset_iff.2 fun _ _ => ⟨_, rfl⟩⟩, _⟩
     simp only [sInter_image]
   · rintro ⟨F, ⟨hF, hs⟩, rfl⟩
     haveI := hF.to_subtype
@@ -262,7 +262,7 @@ instance [Preorder α] [TopologicalSpace α] [LowerTopology α] [OrderBot α] [P
     dsimp
     simp_rw [coe_upperClosure, compl_iUnion, prod_eq, preimage_iInter, preimage_compl]
     -- without `let`, `refine` tries to use the product topology and fails
-    let _ : TopologicalSpace (α × β) := generateFrom { s | ∃ a, Ici aᶜ = s }
+    let _ : TopologicalSpace (α × β) := generateFrom { s | ∃ a, (Ici a)ᶜ = s }
     refine (isOpen_biInter hs fun a _ => ?_).inter (isOpen_biInter ht fun b _ => ?_)
     · exact GenerateOpen.basic _ ⟨(a, ⊥), by simp [Ici_prod_eq, prod_univ]⟩
     · exact GenerateOpen.basic _ ⟨(⊥, b), by simp [Ici_prod_eq, univ_prod]⟩
chore: Rename to sSup/iSup (#3938)

As discussed on Zulip

Renames

  • supₛsSup
  • infₛsInf
  • supᵢiSup
  • infᵢiInf
  • bsupₛbsSup
  • binfₛbsInf
  • bsupᵢbiSup
  • binfᵢbiInf
  • csupₛcsSup
  • cinfₛcsInf
  • csupᵢciSup
  • cinfᵢciInf
  • unionₛsUnion
  • interₛsInter
  • unionᵢiUnion
  • interᵢiInter
  • bunionₛbsUnion
  • binterₛbsInter
  • bunionᵢbiUnion
  • binterᵢbiInter

Co-authored-by: Parcly Taxel <reddeloostw@gmail.com>

Diff
@@ -179,8 +179,8 @@ theorem isClosed_Ici (a : α) : IsClosed (Ici a) :=
 
 /-- The upper closure of a finite set is closed in the lower topology. -/
 theorem isClosed_upperClosure (h : s.Finite) : IsClosed (upperClosure s : Set α) := by
-  simp only [← UpperSet.infᵢ_Ici, UpperSet.coe_infᵢ]
-  exact isClosed_bunionᵢ h fun a _ => isClosed_Ici a
+  simp only [← UpperSet.iInf_Ici, UpperSet.coe_iInf]
+  exact isClosed_biUnion h fun a _ => isClosed_Ici a
 #align lower_topology.is_closed_upper_closure LowerTopology.isClosed_upperClosure
 
 /-- Every set open in the lower topology is a lower set. -/
@@ -191,7 +191,7 @@ theorem isLowerSet_of_isOpen (h : IsOpen s) : IsLowerSet s := by
   case basic u h' => obtain ⟨a, rfl⟩ := h'; exact (isUpperSet_Ici a).compl
   case univ => exact isLowerSet_univ
   case inter u v _ _ hu2 hv2 => exact hu2.inter hv2
-  case unionₛ _ _ ih => exact isLowerSet_unionₛ ih
+  case sUnion _ _ ih => exact isLowerSet_sUnion ih
 #align lower_topology.is_lower_set_of_is_open LowerTopology.isLowerSet_of_isOpen
 
 theorem isUpperSet_of_isClosed (h : IsClosed s) : IsUpperSet s :=
@@ -210,17 +210,17 @@ theorem closure_singleton (a : α) : closure {a} = Ici a :=
 
 protected theorem isTopologicalBasis : IsTopologicalBasis (lowerBasis α) := by
   convert isTopologicalBasis_of_subbasis (topology_eq α)
-  simp_rw [lowerBasis, coe_upperClosure, compl_unionᵢ]
+  simp_rw [lowerBasis, coe_upperClosure, compl_iUnion]
   ext s
   constructor
   · rintro ⟨F, hF, rfl⟩
     refine' ⟨(fun a => Ici aᶜ) '' F, ⟨hF.image _, image_subset_iff.2 fun _ _ => ⟨_, rfl⟩⟩, _⟩
-    simp only [interₛ_image]
+    simp only [sInter_image]
   · rintro ⟨F, ⟨hF, hs⟩, rfl⟩
     haveI := hF.to_subtype
     rw [subset_def, Subtype.forall'] at hs
     choose f hf using hs
-    exact ⟨_, finite_range f, by simp_rw [binterᵢ_range, hf, interₛ_eq_interᵢ]⟩
+    exact ⟨_, finite_range f, by simp_rw [biInter_range, hf, sInter_eq_iInter]⟩
 #align lower_topology.is_topological_basis LowerTopology.isTopologicalBasis
 
 /-- A function `f : β → α` with lower topology in the codomain is continuous provided that the
@@ -260,10 +260,10 @@ instance [Preorder α] [TopologicalSpace α] [LowerTopology α] [OrderBot α] [P
       le_generateFrom_iff_subset_isOpen, image2_subset_iff]
     rintro _ ⟨s, hs, rfl⟩ _ ⟨t, ht, rfl⟩
     dsimp
-    simp_rw [coe_upperClosure, compl_unionᵢ, prod_eq, preimage_interᵢ, preimage_compl]
+    simp_rw [coe_upperClosure, compl_iUnion, prod_eq, preimage_iInter, preimage_compl]
     -- without `let`, `refine` tries to use the product topology and fails
     let _ : TopologicalSpace (α × β) := generateFrom { s | ∃ a, Ici aᶜ = s }
-    refine (isOpen_binterᵢ hs fun a _ => ?_).inter (isOpen_binterᵢ ht fun b _ => ?_)
+    refine (isOpen_biInter hs fun a _ => ?_).inter (isOpen_biInter ht fun b _ => ?_)
     · exact GenerateOpen.basic _ ⟨(a, ⊥), by simp [Ici_prod_eq, prod_univ]⟩
     · exact GenerateOpen.basic _ ⟨(⊥, b), by simp [Ici_prod_eq, univ_prod]⟩
 
@@ -272,19 +272,18 @@ section CompleteLattice
 variable [CompleteLattice α] [CompleteLattice β] [TopologicalSpace α] [LowerTopology α]
   [TopologicalSpace β] [LowerTopology β]
 
-protected theorem InfₛHom.continuous (f : InfₛHom α β) : Continuous f := by
+protected theorem sInfHom.continuous (f : sInfHom α β) : Continuous f := by
   refine LowerTopology.continuous_of_Ici fun b => ?_
-  convert LowerTopology.isClosed_Ici (infₛ <| f ⁻¹' Ici b)
-  refine' Subset.antisymm (fun a => infₛ_le) fun a ha => le_trans _ <|
+  convert LowerTopology.isClosed_Ici (sInf <| f ⁻¹' Ici b)
+  refine' Subset.antisymm (fun a => sInf_le) fun a ha => le_trans _ <|
     OrderHomClass.mono (f : α →o β) ha
-  refine' LE.le.trans _ (map_infₛ f _).ge
+  refine' LE.le.trans _ (map_sInf f _).ge
   simp
-#align Inf_hom.continuous InfₛHom.continuous
+#align Inf_hom.continuous sInfHom.continuous
 
 -- see Note [lower instance priority]
 instance (priority := 90) LowerTopology.continuousInf : ContinuousInf α :=
-  ⟨(infInfₛHom : InfₛHom (α × α) α).continuous⟩
+  ⟨(infsInfHom : sInfHom (α × α) α).continuous⟩
 #align lower_topology.to_has_continuous_inf LowerTopology.continuousInf
 
 end CompleteLattice
-
feat: port Topology.Order.LowerTopology (#2163)

Co-authored-by: Johan Commelin <johan@commelin.net>

Dependencies 8 + 321

322 files ported (97.6%)
141461 lines ported (96.6%)
Show graph

The unported dependencies are