topology.discrete_quotientMathlib.Topology.DiscreteQuotient

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)

(last sync)

Changes in mathlib3port

mathlib3
mathlib3port
Diff
@@ -493,7 +493,7 @@ theorem exists_of_compat [CompactSpace X] (Qs : ∀ Q : DiscreteQuotient X, Q)
 instance [CompactSpace X] : Finite S :=
   by
   have : CompactSpace S := Quotient.compactSpace
-  rwa [← isCompact_univ_iff, isCompact_iff_finite, finite_univ_iff] at this 
+  rwa [← isCompact_univ_iff, isCompact_iff_finite, finite_univ_iff] at this
 
 end DiscreteQuotient
 
Diff
@@ -479,7 +479,7 @@ theorem exists_of_compat [CompactSpace X] (Qs : ∀ Q : DiscreteQuotient X, Q)
     ∃ x : X, ∀ Q : DiscreteQuotient X, Q.proj x = Qs _ :=
   by
   obtain ⟨x, hx⟩ : (⋂ Q, proj Q ⁻¹' {Qs Q}).Nonempty :=
-    IsCompact.nonempty_iInter_of_directed_nonempty_compact_closed
+    IsCompact.nonempty_iInter_of_directed_nonempty_isCompact_isClosed
       (fun Q : DiscreteQuotient X => Q.proj ⁻¹' {Qs _}) (directed_of_isDirected_ge fun A B h => _)
       (fun Q => (singleton_nonempty _).Preimage Q.proj_surjective)
       (fun i => (is_closed_preimage _ _).IsCompact) fun i => is_closed_preimage _ _
Diff
@@ -82,14 +82,14 @@ namespace DiscreteQuotient
 
 variable (S : DiscreteQuotient X)
 
-#print DiscreteQuotient.ofClopen /-
+#print DiscreteQuotient.ofIsClopen /-
 /-- Construct a discrete quotient from a clopen set. -/
-def ofClopen {A : Set X} (h : IsClopen A) : DiscreteQuotient X
+def ofIsClopen {A : Set X} (h : IsClopen A) : DiscreteQuotient X
     where
   toSetoid :=
     ⟨fun x y => x ∈ A ↔ y ∈ A, fun _ => Iff.rfl, fun _ _ => Iff.symm, fun _ _ _ => Iff.trans⟩
   isOpen_setOf_rel x := by by_cases hx : x ∈ A <;> simp [Setoid.Rel, hx, h.1, h.2, ← compl_set_of]
-#align discrete_quotient.of_clopen DiscreteQuotient.ofClopen
+#align discrete_quotient.of_clopen DiscreteQuotient.ofIsClopen
 -/
 
 #print DiscreteQuotient.refl /-
@@ -456,7 +456,7 @@ end Map
 theorem eq_of_forall_proj_eq [T2Space X] [CompactSpace X] [disc : TotallyDisconnectedSpace X]
     {x y : X} (h : ∀ Q : DiscreteQuotient X, Q.proj x = Q.proj y) : x = y :=
   by
-  rw [← mem_singleton_iff, ← connectedComponent_eq_singleton, connectedComponent_eq_iInter_clopen,
+  rw [← mem_singleton_iff, ← connectedComponent_eq_singleton, connectedComponent_eq_iInter_isClopen,
     mem_Inter]
   rintro ⟨U, hU1, hU2⟩
   exact (Quotient.exact' (h (of_clopen hU1))).mpr hU2
Diff
@@ -480,7 +480,7 @@ theorem exists_of_compat [CompactSpace X] (Qs : ∀ Q : DiscreteQuotient X, Q)
   by
   obtain ⟨x, hx⟩ : (⋂ Q, proj Q ⁻¹' {Qs Q}).Nonempty :=
     IsCompact.nonempty_iInter_of_directed_nonempty_compact_closed
-      (fun Q : DiscreteQuotient X => Q.proj ⁻¹' {Qs _}) (directed_of_inf fun A B h => _)
+      (fun Q : DiscreteQuotient X => Q.proj ⁻¹' {Qs _}) (directed_of_isDirected_ge fun A B h => _)
       (fun Q => (singleton_nonempty _).Preimage Q.proj_surjective)
       (fun i => (is_closed_preimage _ _).IsCompact) fun i => is_closed_preimage _ _
   · refine' ⟨x, fun Q => _⟩
Diff
@@ -3,9 +3,9 @@ Copyright (c) 2021 Adam Topaz. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Calle Sönne, Adam Topaz
 -/
-import Mathbin.Topology.Separation
-import Mathbin.Topology.SubsetProperties
-import Mathbin.Topology.LocallyConstant.Basic
+import Topology.Separation
+import Topology.SubsetProperties
+import Topology.LocallyConstant.Basic
 
 #align_import topology.discrete_quotient from "leanprover-community/mathlib"@"34ee86e6a59d911a8e4f89b68793ee7577ae79c7"
 
Diff
@@ -2,16 +2,13 @@
 Copyright (c) 2021 Adam Topaz. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Calle Sönne, Adam Topaz
-
-! This file was ported from Lean 3 source module topology.discrete_quotient
-! 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.Separation
 import Mathbin.Topology.SubsetProperties
 import Mathbin.Topology.LocallyConstant.Basic
 
+#align_import topology.discrete_quotient from "leanprover-community/mathlib"@"34ee86e6a59d911a8e4f89b68793ee7577ae79c7"
+
 /-!
 
 # Discrete quotients of a topological space.
Diff
@@ -230,14 +230,18 @@ theorem comap_id : S.comap (ContinuousMap.id X) = S := by ext; rfl
 #align discrete_quotient.comap_id DiscreteQuotient.comap_id
 -/
 
+#print DiscreteQuotient.comap_comp /-
 @[simp]
 theorem comap_comp (S : DiscreteQuotient Z) : S.comap (g.comp f) = (S.comap g).comap f :=
   rfl
 #align discrete_quotient.comap_comp DiscreteQuotient.comap_comp
+-/
 
+#print DiscreteQuotient.comap_mono /-
 @[mono]
 theorem comap_mono {A B : DiscreteQuotient Y} (h : A ≤ B) : A.comap f ≤ B.comap f := by tauto
 #align discrete_quotient.comap_mono DiscreteQuotient.comap_mono
+-/
 
 end Comap
 
@@ -245,10 +249,12 @@ section OfLe
 
 variable {A B C : DiscreteQuotient X}
 
+#print DiscreteQuotient.ofLE /-
 /-- The map induced by a refinement of a discrete quotient. -/
 def ofLE (h : A ≤ B) : A → B :=
   Quotient.map' (fun x => x) h
 #align discrete_quotient.of_le DiscreteQuotient.ofLE
+-/
 
 #print DiscreteQuotient.ofLE_refl /-
 @[simp]
@@ -261,29 +267,39 @@ theorem ofLE_refl_apply (a : A) : ofLE (le_refl A) a = a := by simp
 #align discrete_quotient.of_le_refl_apply DiscreteQuotient.ofLE_refl_apply
 -/
 
+#print DiscreteQuotient.ofLE_ofLE /-
 @[simp]
 theorem ofLE_ofLE (h₁ : A ≤ B) (h₂ : B ≤ C) (x : A) : ofLE h₂ (ofLE h₁ x) = ofLE (h₁.trans h₂) x :=
   by rcases x with ⟨⟩; rfl
 #align discrete_quotient.of_le_of_le DiscreteQuotient.ofLE_ofLE
+-/
 
+#print DiscreteQuotient.ofLE_comp_ofLE /-
 @[simp]
 theorem ofLE_comp_ofLE (h₁ : A ≤ B) (h₂ : B ≤ C) : ofLE h₂ ∘ ofLE h₁ = ofLE (le_trans h₁ h₂) :=
   funext <| ofLE_ofLE _ _
 #align discrete_quotient.of_le_comp_of_le DiscreteQuotient.ofLE_comp_ofLE
+-/
 
+#print DiscreteQuotient.ofLE_continuous /-
 theorem ofLE_continuous (h : A ≤ B) : Continuous (ofLE h) :=
   continuous_of_discreteTopology
 #align discrete_quotient.of_le_continuous DiscreteQuotient.ofLE_continuous
+-/
 
+#print DiscreteQuotient.ofLE_proj /-
 @[simp]
 theorem ofLE_proj (h : A ≤ B) (x : X) : ofLE h (A.proj x) = B.proj x :=
   Quotient.sound' (B.refl _)
 #align discrete_quotient.of_le_proj DiscreteQuotient.ofLE_proj
+-/
 
+#print DiscreteQuotient.ofLE_comp_proj /-
 @[simp]
 theorem ofLE_comp_proj (h : A ≤ B) : ofLE h ∘ A.proj = B.proj :=
   funext <| ofLE_proj _
 #align discrete_quotient.of_le_comp_proj DiscreteQuotient.ofLE_comp_proj
+-/
 
 end OfLe
 
@@ -305,22 +321,30 @@ instance [LocallyConnectedSpace X] : OrderBot (DiscreteQuotient X)
   bot_le S x y (h : connectedComponent x = connectedComponent y) :=
     (S.isClopen_setOf_rel x).connectedComponent_subset (S.refl _) <| h.symm ▸ mem_connectedComponent
 
+#print DiscreteQuotient.proj_bot_eq /-
 @[simp]
 theorem proj_bot_eq [LocallyConnectedSpace X] {x y : X} :
     proj ⊥ x = proj ⊥ y ↔ connectedComponent x = connectedComponent y :=
   Quotient.eq''
 #align discrete_quotient.proj_bot_eq DiscreteQuotient.proj_bot_eq
+-/
 
+#print DiscreteQuotient.proj_bot_inj /-
 theorem proj_bot_inj [DiscreteTopology X] {x y : X} : proj ⊥ x = proj ⊥ y ↔ x = y := by simp
 #align discrete_quotient.proj_bot_inj DiscreteQuotient.proj_bot_inj
+-/
 
+#print DiscreteQuotient.proj_bot_injective /-
 theorem proj_bot_injective [DiscreteTopology X] : Injective (⊥ : DiscreteQuotient X).proj :=
   fun _ _ => proj_bot_inj.1
 #align discrete_quotient.proj_bot_injective DiscreteQuotient.proj_bot_injective
+-/
 
+#print DiscreteQuotient.proj_bot_bijective /-
 theorem proj_bot_bijective [DiscreteTopology X] : Bijective (⊥ : DiscreteQuotient X).proj :=
   ⟨proj_bot_injective, proj_surjective _⟩
 #align discrete_quotient.proj_bot_bijective DiscreteQuotient.proj_bot_bijective
+-/
 
 section Map
 
@@ -341,17 +365,23 @@ theorem leComap_id : LEComap (ContinuousMap.id X) A A := fun _ _ => id
 
 variable {A A' B B'} {f} {g : C(Y, Z)} {C : DiscreteQuotient Z}
 
+#print DiscreteQuotient.leComap_id_iff /-
 @[simp]
 theorem leComap_id_iff : LEComap (ContinuousMap.id X) A A' ↔ A ≤ A' :=
   Iff.rfl
 #align discrete_quotient.le_comap_id_iff DiscreteQuotient.leComap_id_iff
+-/
 
+#print DiscreteQuotient.LEComap.comp /-
 theorem LEComap.comp : LEComap g B C → LEComap f A B → LEComap (g.comp f) A C := by tauto
 #align discrete_quotient.le_comap.comp DiscreteQuotient.LEComap.comp
+-/
 
+#print DiscreteQuotient.LEComap.mono /-
 theorem LEComap.mono (h : LEComap f A B) (hA : A' ≤ A) (hB : B ≤ B') : LEComap f A' B' :=
   hA.trans <| le_trans h <| comap_mono _ hB
 #align discrete_quotient.le_comap.mono DiscreteQuotient.LEComap.mono
+-/
 
 #print DiscreteQuotient.map /-
 /-- Map a discrete quotient along a continuous map. -/
@@ -360,19 +390,25 @@ def map (f : C(X, Y)) (cond : LEComap f A B) : A → B :=
 #align discrete_quotient.map DiscreteQuotient.map
 -/
 
+#print DiscreteQuotient.map_continuous /-
 theorem map_continuous (cond : LEComap f A B) : Continuous (map f cond) :=
   continuous_of_discreteTopology
 #align discrete_quotient.map_continuous DiscreteQuotient.map_continuous
+-/
 
+#print DiscreteQuotient.map_comp_proj /-
 @[simp]
 theorem map_comp_proj (cond : LEComap f A B) : map f cond ∘ A.proj = B.proj ∘ f :=
   rfl
 #align discrete_quotient.map_comp_proj DiscreteQuotient.map_comp_proj
+-/
 
+#print DiscreteQuotient.map_proj /-
 @[simp]
 theorem map_proj (cond : LEComap f A B) (x : X) : map f cond (A.proj x) = B.proj (f x) :=
   rfl
 #align discrete_quotient.map_proj DiscreteQuotient.map_proj
+-/
 
 #print DiscreteQuotient.map_id /-
 @[simp]
@@ -380,32 +416,42 @@ theorem map_id : map _ (leComap_id A) = id := by ext ⟨⟩ <;> rfl
 #align discrete_quotient.map_id DiscreteQuotient.map_id
 -/
 
+#print DiscreteQuotient.map_comp /-
 @[simp]
 theorem map_comp (h1 : LEComap g B C) (h2 : LEComap f A B) :
     map (g.comp f) (h1.comp h2) = map g h1 ∘ map f h2 := by ext ⟨⟩; rfl
 #align discrete_quotient.map_comp DiscreteQuotient.map_comp
+-/
 
+#print DiscreteQuotient.ofLE_map /-
 @[simp]
 theorem ofLE_map (cond : LEComap f A B) (h : B ≤ B') (a : A) :
     ofLE h (map f cond a) = map f (cond.mono le_rfl h) a := by rcases a with ⟨⟩; rfl
 #align discrete_quotient.of_le_map DiscreteQuotient.ofLE_map
+-/
 
+#print DiscreteQuotient.ofLE_comp_map /-
 @[simp]
 theorem ofLE_comp_map (cond : LEComap f A B) (h : B ≤ B') :
     ofLE h ∘ map f cond = map f (cond.mono le_rfl h) :=
   funext <| ofLE_map cond h
 #align discrete_quotient.of_le_comp_map DiscreteQuotient.ofLE_comp_map
+-/
 
+#print DiscreteQuotient.map_ofLE /-
 @[simp]
 theorem map_ofLE (cond : LEComap f A B) (h : A' ≤ A) (c : A') :
     map f cond (ofLE h c) = map f (cond.mono h le_rfl) c := by rcases c with ⟨⟩; rfl
 #align discrete_quotient.map_of_le DiscreteQuotient.map_ofLE
+-/
 
+#print DiscreteQuotient.map_comp_ofLE /-
 @[simp]
 theorem map_comp_ofLE (cond : LEComap f A B) (h : A' ≤ A) :
     map f cond ∘ ofLE h = map f (cond.mono h le_rfl) :=
   funext <| map_ofLE cond h
 #align discrete_quotient.map_comp_of_le DiscreteQuotient.map_comp_ofLE
+-/
 
 end Map
 
@@ -420,6 +466,7 @@ theorem eq_of_forall_proj_eq [T2Space X] [CompactSpace X] [disc : TotallyDisconn
 #align discrete_quotient.eq_of_forall_proj_eq DiscreteQuotient.eq_of_forall_proj_eq
 -/
 
+#print DiscreteQuotient.fiber_subset_ofLE /-
 theorem fiber_subset_ofLE {A B : DiscreteQuotient X} (h : A ≤ B) (a : A) :
     A.proj ⁻¹' {a} ⊆ B.proj ⁻¹' {ofLE h a} :=
   by
@@ -427,7 +474,9 @@ theorem fiber_subset_ofLE {A B : DiscreteQuotient X} (h : A ≤ B) (a : A) :
   rw [fiber_eq, of_le_proj, fiber_eq]
   exact fun _ h' => h h'
 #align discrete_quotient.fiber_subset_of_le DiscreteQuotient.fiber_subset_ofLE
+-/
 
+#print DiscreteQuotient.exists_of_compat /-
 theorem exists_of_compat [CompactSpace X] (Qs : ∀ Q : DiscreteQuotient X, Q)
     (compat : ∀ (A B : DiscreteQuotient X) (h : A ≤ B), ofLE h (Qs _) = Qs _) :
     ∃ x : X, ∀ Q : DiscreteQuotient X, Q.proj x = Qs _ :=
@@ -442,6 +491,7 @@ theorem exists_of_compat [CompactSpace X] (Qs : ∀ Q : DiscreteQuotient X, Q)
   · rw [← compat _ _ h]
     exact fiber_subset_of_le _ _
 #align discrete_quotient.exists_of_compat DiscreteQuotient.exists_of_compat
+-/
 
 instance [CompactSpace X] : Finite S :=
   by
@@ -471,9 +521,11 @@ def lift : LocallyConstant f.DiscreteQuotient α :=
 #align locally_constant.lift LocallyConstant.lift
 -/
 
+#print LocallyConstant.lift_comp_proj /-
 @[simp]
 theorem lift_comp_proj : f.lift ∘ f.DiscreteQuotient.proj = f := by ext; rfl
 #align locally_constant.lift_comp_proj LocallyConstant.lift_comp_proj
+-/
 
 end LocallyConstant
 
Diff
@@ -296,7 +296,7 @@ instance [LocallyConnectedSpace X] : OrderBot (DiscreteQuotient X)
     { toSetoid := connectedComponentSetoid X
       isOpen_setOf_rel := fun x =>
         by
-        have : connectedComponent x = { y | (connectedComponentSetoid X).Rel x y } :=
+        have : connectedComponent x = {y | (connectedComponentSetoid X).Rel x y} :=
           by
           ext y
           simpa only [connectedComponentSetoid, ← connectedComponent_eq_iff_mem] using eq_comm
Diff
@@ -446,7 +446,7 @@ theorem exists_of_compat [CompactSpace X] (Qs : ∀ Q : DiscreteQuotient X, Q)
 instance [CompactSpace X] : Finite S :=
   by
   have : CompactSpace S := Quotient.compactSpace
-  rwa [← isCompact_univ_iff, isCompact_iff_finite, finite_univ_iff] at this
+  rwa [← isCompact_univ_iff, isCompact_iff_finite, finite_univ_iff] at this 
 
 end DiscreteQuotient
 
Diff
@@ -230,23 +230,11 @@ theorem comap_id : S.comap (ContinuousMap.id X) = S := by ext; rfl
 #align discrete_quotient.comap_id DiscreteQuotient.comap_id
 -/
 
-/- warning: discrete_quotient.comap_comp -> DiscreteQuotient.comap_comp is a dubious translation:
-lean 3 declaration is
-  forall {X : Type.{u1}} {Y : Type.{u2}} {Z : Type.{u3}} [_inst_1 : TopologicalSpace.{u1} X] [_inst_2 : TopologicalSpace.{u2} Y] [_inst_3 : TopologicalSpace.{u3} Z] (g : ContinuousMap.{u2, u3} Y Z _inst_2 _inst_3) (f : ContinuousMap.{u1, u2} X Y _inst_1 _inst_2) (S : DiscreteQuotient.{u3} Z _inst_3), Eq.{succ u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.comap.{u1, u3} X Z _inst_1 _inst_3 (ContinuousMap.comp.{u1, u2, u3} X Y Z _inst_1 _inst_2 _inst_3 g f) S) (DiscreteQuotient.comap.{u1, u2} X Y _inst_1 _inst_2 f (DiscreteQuotient.comap.{u2, u3} Y Z _inst_2 _inst_3 g S))
-but is expected to have type
-  forall {X : Type.{u2}} {Y : Type.{u1}} {Z : Type.{u3}} [_inst_1 : TopologicalSpace.{u2} X] [_inst_2 : TopologicalSpace.{u1} Y] [_inst_3 : TopologicalSpace.{u3} Z] (g : ContinuousMap.{u1, u3} Y Z _inst_2 _inst_3) (f : ContinuousMap.{u2, u1} X Y _inst_1 _inst_2) (S : DiscreteQuotient.{u3} Z _inst_3), Eq.{succ u2} (DiscreteQuotient.{u2} X _inst_1) (DiscreteQuotient.comap.{u2, u3} X Z _inst_1 _inst_3 (ContinuousMap.comp.{u2, u1, u3} X Y Z _inst_1 _inst_2 _inst_3 g f) S) (DiscreteQuotient.comap.{u2, u1} X Y _inst_1 _inst_2 f (DiscreteQuotient.comap.{u1, u3} Y Z _inst_2 _inst_3 g S))
-Case conversion may be inaccurate. Consider using '#align discrete_quotient.comap_comp DiscreteQuotient.comap_compₓ'. -/
 @[simp]
 theorem comap_comp (S : DiscreteQuotient Z) : S.comap (g.comp f) = (S.comap g).comap f :=
   rfl
 #align discrete_quotient.comap_comp DiscreteQuotient.comap_comp
 
-/- warning: discrete_quotient.comap_mono -> DiscreteQuotient.comap_mono is a dubious translation:
-lean 3 declaration is
-  forall {X : Type.{u1}} {Y : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} X] [_inst_2 : TopologicalSpace.{u2} Y] (f : ContinuousMap.{u1, u2} X Y _inst_1 _inst_2) {A : DiscreteQuotient.{u2} Y _inst_2} {B : DiscreteQuotient.{u2} Y _inst_2}, (LE.le.{u2} (DiscreteQuotient.{u2} Y _inst_2) (Preorder.toHasLe.{u2} (DiscreteQuotient.{u2} Y _inst_2) (PartialOrder.toPreorder.{u2} (DiscreteQuotient.{u2} Y _inst_2) (SemilatticeInf.toPartialOrder.{u2} (DiscreteQuotient.{u2} Y _inst_2) (DiscreteQuotient.semilatticeInf.{u2} Y _inst_2)))) A B) -> (LE.le.{u1} (DiscreteQuotient.{u1} X _inst_1) (Preorder.toHasLe.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.semilatticeInf.{u1} X _inst_1)))) (DiscreteQuotient.comap.{u1, u2} X Y _inst_1 _inst_2 f A) (DiscreteQuotient.comap.{u1, u2} X Y _inst_1 _inst_2 f B))
-but is expected to have type
-  forall {X : Type.{u1}} {Y : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} X] [_inst_2 : TopologicalSpace.{u2} Y] (f : ContinuousMap.{u1, u2} X Y _inst_1 _inst_2) {A : DiscreteQuotient.{u2} Y _inst_2} {B : DiscreteQuotient.{u2} Y _inst_2}, (LE.le.{u2} (DiscreteQuotient.{u2} Y _inst_2) (Preorder.toLE.{u2} (DiscreteQuotient.{u2} Y _inst_2) (PartialOrder.toPreorder.{u2} (DiscreteQuotient.{u2} Y _inst_2) (SemilatticeInf.toPartialOrder.{u2} (DiscreteQuotient.{u2} Y _inst_2) (DiscreteQuotient.instSemilatticeInfDiscreteQuotient.{u2} Y _inst_2)))) A B) -> (LE.le.{u1} (DiscreteQuotient.{u1} X _inst_1) (Preorder.toLE.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.instSemilatticeInfDiscreteQuotient.{u1} X _inst_1)))) (DiscreteQuotient.comap.{u1, u2} X Y _inst_1 _inst_2 f A) (DiscreteQuotient.comap.{u1, u2} X Y _inst_1 _inst_2 f B))
-Case conversion may be inaccurate. Consider using '#align discrete_quotient.comap_mono DiscreteQuotient.comap_monoₓ'. -/
 @[mono]
 theorem comap_mono {A B : DiscreteQuotient Y} (h : A ≤ B) : A.comap f ≤ B.comap f := by tauto
 #align discrete_quotient.comap_mono DiscreteQuotient.comap_mono
@@ -257,12 +245,6 @@ section OfLe
 
 variable {A B C : DiscreteQuotient X}
 
-/- warning: discrete_quotient.of_le -> DiscreteQuotient.ofLE is a dubious translation:
-lean 3 declaration is
-  forall {X : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} X] {A : DiscreteQuotient.{u1} X _inst_1} {B : DiscreteQuotient.{u1} X _inst_1}, (LE.le.{u1} (DiscreteQuotient.{u1} X _inst_1) (Preorder.toHasLe.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.semilatticeInf.{u1} X _inst_1)))) A B) -> (coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) A) -> (coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) B)
-but is expected to have type
-  forall {X : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} X] {A : DiscreteQuotient.{u1} X _inst_1} {B : DiscreteQuotient.{u1} X _inst_1}, (LE.le.{u1} (DiscreteQuotient.{u1} X _inst_1) (Preorder.toLE.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.instSemilatticeInfDiscreteQuotient.{u1} X _inst_1)))) A B) -> (Quotient.{succ u1} X (DiscreteQuotient.toSetoid.{u1} X _inst_1 A)) -> (Quotient.{succ u1} X (DiscreteQuotient.toSetoid.{u1} X _inst_1 B))
-Case conversion may be inaccurate. Consider using '#align discrete_quotient.of_le DiscreteQuotient.ofLEₓ'. -/
 /-- The map induced by a refinement of a discrete quotient. -/
 def ofLE (h : A ≤ B) : A → B :=
   Quotient.map' (fun x => x) h
@@ -279,55 +261,25 @@ theorem ofLE_refl_apply (a : A) : ofLE (le_refl A) a = a := by simp
 #align discrete_quotient.of_le_refl_apply DiscreteQuotient.ofLE_refl_apply
 -/
 
-/- warning: discrete_quotient.of_le_of_le -> DiscreteQuotient.ofLE_ofLE is a dubious translation:
-lean 3 declaration is
-  forall {X : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} X] {A : DiscreteQuotient.{u1} X _inst_1} {B : DiscreteQuotient.{u1} X _inst_1} {C : DiscreteQuotient.{u1} X _inst_1} (h₁ : LE.le.{u1} (DiscreteQuotient.{u1} X _inst_1) (Preorder.toHasLe.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.semilatticeInf.{u1} X _inst_1)))) A B) (h₂ : LE.le.{u1} (DiscreteQuotient.{u1} X _inst_1) (Preorder.toHasLe.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.semilatticeInf.{u1} X _inst_1)))) B C) (x : coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) A), Eq.{succ u1} (coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) C) (DiscreteQuotient.ofLE.{u1} X _inst_1 B C h₂ (DiscreteQuotient.ofLE.{u1} X _inst_1 A B h₁ x)) (DiscreteQuotient.ofLE.{u1} X _inst_1 A C (LE.le.trans.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.semilatticeInf.{u1} X _inst_1))) A B C h₁ h₂) x)
-but is expected to have type
-  forall {X : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} X] {A : DiscreteQuotient.{u1} X _inst_1} {B : DiscreteQuotient.{u1} X _inst_1} {C : DiscreteQuotient.{u1} X _inst_1} (h₁ : LE.le.{u1} (DiscreteQuotient.{u1} X _inst_1) (Preorder.toLE.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.instSemilatticeInfDiscreteQuotient.{u1} X _inst_1)))) A B) (h₂ : LE.le.{u1} (DiscreteQuotient.{u1} X _inst_1) (Preorder.toLE.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.instSemilatticeInfDiscreteQuotient.{u1} X _inst_1)))) B C) (x : Quotient.{succ u1} X (DiscreteQuotient.toSetoid.{u1} X _inst_1 A)), Eq.{succ u1} (Quotient.{succ u1} X (DiscreteQuotient.toSetoid.{u1} X _inst_1 C)) (DiscreteQuotient.ofLE.{u1} X _inst_1 B C h₂ (DiscreteQuotient.ofLE.{u1} X _inst_1 A B h₁ x)) (DiscreteQuotient.ofLE.{u1} X _inst_1 A C (LE.le.trans.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.instSemilatticeInfDiscreteQuotient.{u1} X _inst_1))) A B C h₁ h₂) x)
-Case conversion may be inaccurate. Consider using '#align discrete_quotient.of_le_of_le DiscreteQuotient.ofLE_ofLEₓ'. -/
 @[simp]
 theorem ofLE_ofLE (h₁ : A ≤ B) (h₂ : B ≤ C) (x : A) : ofLE h₂ (ofLE h₁ x) = ofLE (h₁.trans h₂) x :=
   by rcases x with ⟨⟩; rfl
 #align discrete_quotient.of_le_of_le DiscreteQuotient.ofLE_ofLE
 
-/- warning: discrete_quotient.of_le_comp_of_le -> DiscreteQuotient.ofLE_comp_ofLE is a dubious translation:
-lean 3 declaration is
-  forall {X : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} X] {A : DiscreteQuotient.{u1} X _inst_1} {B : DiscreteQuotient.{u1} X _inst_1} {C : DiscreteQuotient.{u1} X _inst_1} (h₁ : LE.le.{u1} (DiscreteQuotient.{u1} X _inst_1) (Preorder.toHasLe.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.semilatticeInf.{u1} X _inst_1)))) A B) (h₂ : LE.le.{u1} (DiscreteQuotient.{u1} X _inst_1) (Preorder.toHasLe.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.semilatticeInf.{u1} X _inst_1)))) B C), Eq.{succ u1} ((coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) A) -> (coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) C)) (Function.comp.{succ u1, succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) A) (coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) B) (coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) C) (DiscreteQuotient.ofLE.{u1} X _inst_1 B C h₂) (DiscreteQuotient.ofLE.{u1} X _inst_1 A B h₁)) (DiscreteQuotient.ofLE.{u1} X _inst_1 A C (le_trans.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.semilatticeInf.{u1} X _inst_1))) A B C h₁ h₂))
-but is expected to have type
-  forall {X : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} X] {A : DiscreteQuotient.{u1} X _inst_1} {B : DiscreteQuotient.{u1} X _inst_1} {C : DiscreteQuotient.{u1} X _inst_1} (h₁ : LE.le.{u1} (DiscreteQuotient.{u1} X _inst_1) (Preorder.toLE.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.instSemilatticeInfDiscreteQuotient.{u1} X _inst_1)))) A B) (h₂ : LE.le.{u1} (DiscreteQuotient.{u1} X _inst_1) (Preorder.toLE.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.instSemilatticeInfDiscreteQuotient.{u1} X _inst_1)))) B C), Eq.{succ u1} ((Quotient.{succ u1} X (DiscreteQuotient.toSetoid.{u1} X _inst_1 A)) -> (Quotient.{succ u1} X (DiscreteQuotient.toSetoid.{u1} X _inst_1 C))) (Function.comp.{succ u1, succ u1, succ u1} (Quotient.{succ u1} X (DiscreteQuotient.toSetoid.{u1} X _inst_1 A)) (Quotient.{succ u1} X (DiscreteQuotient.toSetoid.{u1} X _inst_1 B)) (Quotient.{succ u1} X (DiscreteQuotient.toSetoid.{u1} X _inst_1 C)) (DiscreteQuotient.ofLE.{u1} X _inst_1 B C h₂) (DiscreteQuotient.ofLE.{u1} X _inst_1 A B h₁)) (DiscreteQuotient.ofLE.{u1} X _inst_1 A C (le_trans.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.instSemilatticeInfDiscreteQuotient.{u1} X _inst_1))) A B C h₁ h₂))
-Case conversion may be inaccurate. Consider using '#align discrete_quotient.of_le_comp_of_le DiscreteQuotient.ofLE_comp_ofLEₓ'. -/
 @[simp]
 theorem ofLE_comp_ofLE (h₁ : A ≤ B) (h₂ : B ≤ C) : ofLE h₂ ∘ ofLE h₁ = ofLE (le_trans h₁ h₂) :=
   funext <| ofLE_ofLE _ _
 #align discrete_quotient.of_le_comp_of_le DiscreteQuotient.ofLE_comp_ofLE
 
-/- warning: discrete_quotient.of_le_continuous -> DiscreteQuotient.ofLE_continuous is a dubious translation:
-lean 3 declaration is
-  forall {X : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} X] {A : DiscreteQuotient.{u1} X _inst_1} {B : DiscreteQuotient.{u1} X _inst_1} (h : LE.le.{u1} (DiscreteQuotient.{u1} X _inst_1) (Preorder.toHasLe.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.semilatticeInf.{u1} X _inst_1)))) A B), Continuous.{u1, u1} (coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) A) (coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) B) (DiscreteQuotient.topologicalSpace.{u1} X _inst_1 A) (DiscreteQuotient.topologicalSpace.{u1} X _inst_1 B) (DiscreteQuotient.ofLE.{u1} X _inst_1 A B h)
-but is expected to have type
-  forall {X : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} X] {A : DiscreteQuotient.{u1} X _inst_1} {B : DiscreteQuotient.{u1} X _inst_1} (h : LE.le.{u1} (DiscreteQuotient.{u1} X _inst_1) (Preorder.toLE.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.instSemilatticeInfDiscreteQuotient.{u1} X _inst_1)))) A B), Continuous.{u1, u1} (Quotient.{succ u1} X (DiscreteQuotient.toSetoid.{u1} X _inst_1 A)) (Quotient.{succ u1} X (DiscreteQuotient.toSetoid.{u1} X _inst_1 B)) (DiscreteQuotient.instTopologicalSpaceQuotientToSetoid.{u1} X _inst_1 A) (DiscreteQuotient.instTopologicalSpaceQuotientToSetoid.{u1} X _inst_1 B) (DiscreteQuotient.ofLE.{u1} X _inst_1 A B h)
-Case conversion may be inaccurate. Consider using '#align discrete_quotient.of_le_continuous DiscreteQuotient.ofLE_continuousₓ'. -/
 theorem ofLE_continuous (h : A ≤ B) : Continuous (ofLE h) :=
   continuous_of_discreteTopology
 #align discrete_quotient.of_le_continuous DiscreteQuotient.ofLE_continuous
 
-/- warning: discrete_quotient.of_le_proj -> DiscreteQuotient.ofLE_proj is a dubious translation:
-lean 3 declaration is
-  forall {X : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} X] {A : DiscreteQuotient.{u1} X _inst_1} {B : DiscreteQuotient.{u1} X _inst_1} (h : LE.le.{u1} (DiscreteQuotient.{u1} X _inst_1) (Preorder.toHasLe.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.semilatticeInf.{u1} X _inst_1)))) A B) (x : X), Eq.{succ u1} (coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) B) (DiscreteQuotient.ofLE.{u1} X _inst_1 A B h (DiscreteQuotient.proj.{u1} X _inst_1 A x)) (DiscreteQuotient.proj.{u1} X _inst_1 B x)
-but is expected to have type
-  forall {X : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} X] {A : DiscreteQuotient.{u1} X _inst_1} {B : DiscreteQuotient.{u1} X _inst_1} (h : LE.le.{u1} (DiscreteQuotient.{u1} X _inst_1) (Preorder.toLE.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.instSemilatticeInfDiscreteQuotient.{u1} X _inst_1)))) A B) (x : X), Eq.{succ u1} (Quotient.{succ u1} X (DiscreteQuotient.toSetoid.{u1} X _inst_1 B)) (DiscreteQuotient.ofLE.{u1} X _inst_1 A B h (DiscreteQuotient.proj.{u1} X _inst_1 A x)) (DiscreteQuotient.proj.{u1} X _inst_1 B x)
-Case conversion may be inaccurate. Consider using '#align discrete_quotient.of_le_proj DiscreteQuotient.ofLE_projₓ'. -/
 @[simp]
 theorem ofLE_proj (h : A ≤ B) (x : X) : ofLE h (A.proj x) = B.proj x :=
   Quotient.sound' (B.refl _)
 #align discrete_quotient.of_le_proj DiscreteQuotient.ofLE_proj
 
-/- warning: discrete_quotient.of_le_comp_proj -> DiscreteQuotient.ofLE_comp_proj is a dubious translation:
-lean 3 declaration is
-  forall {X : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} X] {A : DiscreteQuotient.{u1} X _inst_1} {B : DiscreteQuotient.{u1} X _inst_1} (h : LE.le.{u1} (DiscreteQuotient.{u1} X _inst_1) (Preorder.toHasLe.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.semilatticeInf.{u1} X _inst_1)))) A B), Eq.{succ u1} (X -> (coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) B)) (Function.comp.{succ u1, succ u1, succ u1} X (coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) A) (coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) B) (DiscreteQuotient.ofLE.{u1} X _inst_1 A B h) (DiscreteQuotient.proj.{u1} X _inst_1 A)) (DiscreteQuotient.proj.{u1} X _inst_1 B)
-but is expected to have type
-  forall {X : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} X] {A : DiscreteQuotient.{u1} X _inst_1} {B : DiscreteQuotient.{u1} X _inst_1} (h : LE.le.{u1} (DiscreteQuotient.{u1} X _inst_1) (Preorder.toLE.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.instSemilatticeInfDiscreteQuotient.{u1} X _inst_1)))) A B), Eq.{succ u1} (X -> (Quotient.{succ u1} X (DiscreteQuotient.toSetoid.{u1} X _inst_1 B))) (Function.comp.{succ u1, succ u1, succ u1} X (Quotient.{succ u1} X (DiscreteQuotient.toSetoid.{u1} X _inst_1 A)) (Quotient.{succ u1} X (DiscreteQuotient.toSetoid.{u1} X _inst_1 B)) (DiscreteQuotient.ofLE.{u1} X _inst_1 A B h) (DiscreteQuotient.proj.{u1} X _inst_1 A)) (DiscreteQuotient.proj.{u1} X _inst_1 B)
-Case conversion may be inaccurate. Consider using '#align discrete_quotient.of_le_comp_proj DiscreteQuotient.ofLE_comp_projₓ'. -/
 @[simp]
 theorem ofLE_comp_proj (h : A ≤ B) : ofLE h ∘ A.proj = B.proj :=
   funext <| ofLE_proj _
@@ -353,43 +305,19 @@ instance [LocallyConnectedSpace X] : OrderBot (DiscreteQuotient X)
   bot_le S x y (h : connectedComponent x = connectedComponent y) :=
     (S.isClopen_setOf_rel x).connectedComponent_subset (S.refl _) <| h.symm ▸ mem_connectedComponent
 
-/- warning: discrete_quotient.proj_bot_eq -> DiscreteQuotient.proj_bot_eq is a dubious translation:
-lean 3 declaration is
-  forall {X : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} X] [_inst_4 : LocallyConnectedSpace.{u1} X _inst_1] {x : X} {y : X}, Iff (Eq.{succ u1} (coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) (Bot.bot.{u1} (DiscreteQuotient.{u1} X _inst_1) (OrderBot.toHasBot.{u1} (DiscreteQuotient.{u1} X _inst_1) (Preorder.toHasLe.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.semilatticeInf.{u1} X _inst_1)))) (DiscreteQuotient.orderBot.{u1} X _inst_1 _inst_4)))) (DiscreteQuotient.proj.{u1} X _inst_1 (Bot.bot.{u1} (DiscreteQuotient.{u1} X _inst_1) (OrderBot.toHasBot.{u1} (DiscreteQuotient.{u1} X _inst_1) (Preorder.toHasLe.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.semilatticeInf.{u1} X _inst_1)))) (DiscreteQuotient.orderBot.{u1} X _inst_1 _inst_4))) x) (DiscreteQuotient.proj.{u1} X _inst_1 (Bot.bot.{u1} (DiscreteQuotient.{u1} X _inst_1) (OrderBot.toHasBot.{u1} (DiscreteQuotient.{u1} X _inst_1) (Preorder.toHasLe.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.semilatticeInf.{u1} X _inst_1)))) (DiscreteQuotient.orderBot.{u1} X _inst_1 _inst_4))) y)) (Eq.{succ u1} (Set.{u1} X) (connectedComponent.{u1} X _inst_1 x) (connectedComponent.{u1} X _inst_1 y))
-but is expected to have type
-  forall {X : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} X] [_inst_4 : LocallyConnectedSpace.{u1} X _inst_1] {x : X} {y : X}, Iff (Eq.{succ u1} (Quotient.{succ u1} X (DiscreteQuotient.toSetoid.{u1} X _inst_1 (Bot.bot.{u1} (DiscreteQuotient.{u1} X _inst_1) (OrderBot.toBot.{u1} (DiscreteQuotient.{u1} X _inst_1) (Preorder.toLE.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.instSemilatticeInfDiscreteQuotient.{u1} X _inst_1)))) (DiscreteQuotient.instOrderBotDiscreteQuotientToLEToPreorderToPartialOrderInstSemilatticeInfDiscreteQuotient.{u1} X _inst_1 _inst_4))))) (DiscreteQuotient.proj.{u1} X _inst_1 (Bot.bot.{u1} (DiscreteQuotient.{u1} X _inst_1) (OrderBot.toBot.{u1} (DiscreteQuotient.{u1} X _inst_1) (Preorder.toLE.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.instSemilatticeInfDiscreteQuotient.{u1} X _inst_1)))) (DiscreteQuotient.instOrderBotDiscreteQuotientToLEToPreorderToPartialOrderInstSemilatticeInfDiscreteQuotient.{u1} X _inst_1 _inst_4))) x) (DiscreteQuotient.proj.{u1} X _inst_1 (Bot.bot.{u1} (DiscreteQuotient.{u1} X _inst_1) (OrderBot.toBot.{u1} (DiscreteQuotient.{u1} X _inst_1) (Preorder.toLE.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.instSemilatticeInfDiscreteQuotient.{u1} X _inst_1)))) (DiscreteQuotient.instOrderBotDiscreteQuotientToLEToPreorderToPartialOrderInstSemilatticeInfDiscreteQuotient.{u1} X _inst_1 _inst_4))) y)) (Eq.{succ u1} (Set.{u1} X) (connectedComponent.{u1} X _inst_1 x) (connectedComponent.{u1} X _inst_1 y))
-Case conversion may be inaccurate. Consider using '#align discrete_quotient.proj_bot_eq DiscreteQuotient.proj_bot_eqₓ'. -/
 @[simp]
 theorem proj_bot_eq [LocallyConnectedSpace X] {x y : X} :
     proj ⊥ x = proj ⊥ y ↔ connectedComponent x = connectedComponent y :=
   Quotient.eq''
 #align discrete_quotient.proj_bot_eq DiscreteQuotient.proj_bot_eq
 
-/- warning: discrete_quotient.proj_bot_inj -> DiscreteQuotient.proj_bot_inj is a dubious translation:
-lean 3 declaration is
-  forall {X : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} X] [_inst_4 : DiscreteTopology.{u1} X _inst_1] {x : X} {y : X}, Iff (Eq.{succ u1} (coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) (Bot.bot.{u1} (DiscreteQuotient.{u1} X _inst_1) (OrderBot.toHasBot.{u1} (DiscreteQuotient.{u1} X _inst_1) (Preorder.toHasLe.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.semilatticeInf.{u1} X _inst_1)))) (DiscreteQuotient.orderBot.{u1} X _inst_1 (DiscreteTopology.toLocallyConnectedSpace.{u1} X _inst_1 _inst_4))))) (DiscreteQuotient.proj.{u1} X _inst_1 (Bot.bot.{u1} (DiscreteQuotient.{u1} X _inst_1) (OrderBot.toHasBot.{u1} (DiscreteQuotient.{u1} X _inst_1) (Preorder.toHasLe.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.semilatticeInf.{u1} X _inst_1)))) (DiscreteQuotient.orderBot.{u1} X _inst_1 (DiscreteTopology.toLocallyConnectedSpace.{u1} X _inst_1 _inst_4)))) x) (DiscreteQuotient.proj.{u1} X _inst_1 (Bot.bot.{u1} (DiscreteQuotient.{u1} X _inst_1) (OrderBot.toHasBot.{u1} (DiscreteQuotient.{u1} X _inst_1) (Preorder.toHasLe.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.semilatticeInf.{u1} X _inst_1)))) (DiscreteQuotient.orderBot.{u1} X _inst_1 (DiscreteTopology.toLocallyConnectedSpace.{u1} X _inst_1 _inst_4)))) y)) (Eq.{succ u1} X x y)
-but is expected to have type
-  forall {X : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} X] [_inst_4 : DiscreteTopology.{u1} X _inst_1] {x : X} {y : X}, Iff (Eq.{succ u1} (Quotient.{succ u1} X (DiscreteQuotient.toSetoid.{u1} X _inst_1 (Bot.bot.{u1} (DiscreteQuotient.{u1} X _inst_1) (OrderBot.toBot.{u1} (DiscreteQuotient.{u1} X _inst_1) (Preorder.toLE.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.instSemilatticeInfDiscreteQuotient.{u1} X _inst_1)))) (DiscreteQuotient.instOrderBotDiscreteQuotientToLEToPreorderToPartialOrderInstSemilatticeInfDiscreteQuotient.{u1} X _inst_1 (DiscreteTopology.toLocallyConnectedSpace.{u1} X _inst_1 _inst_4)))))) (DiscreteQuotient.proj.{u1} X _inst_1 (Bot.bot.{u1} (DiscreteQuotient.{u1} X _inst_1) (OrderBot.toBot.{u1} (DiscreteQuotient.{u1} X _inst_1) (Preorder.toLE.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.instSemilatticeInfDiscreteQuotient.{u1} X _inst_1)))) (DiscreteQuotient.instOrderBotDiscreteQuotientToLEToPreorderToPartialOrderInstSemilatticeInfDiscreteQuotient.{u1} X _inst_1 (DiscreteTopology.toLocallyConnectedSpace.{u1} X _inst_1 _inst_4)))) x) (DiscreteQuotient.proj.{u1} X _inst_1 (Bot.bot.{u1} (DiscreteQuotient.{u1} X _inst_1) (OrderBot.toBot.{u1} (DiscreteQuotient.{u1} X _inst_1) (Preorder.toLE.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.instSemilatticeInfDiscreteQuotient.{u1} X _inst_1)))) (DiscreteQuotient.instOrderBotDiscreteQuotientToLEToPreorderToPartialOrderInstSemilatticeInfDiscreteQuotient.{u1} X _inst_1 (DiscreteTopology.toLocallyConnectedSpace.{u1} X _inst_1 _inst_4)))) y)) (Eq.{succ u1} X x y)
-Case conversion may be inaccurate. Consider using '#align discrete_quotient.proj_bot_inj DiscreteQuotient.proj_bot_injₓ'. -/
 theorem proj_bot_inj [DiscreteTopology X] {x y : X} : proj ⊥ x = proj ⊥ y ↔ x = y := by simp
 #align discrete_quotient.proj_bot_inj DiscreteQuotient.proj_bot_inj
 
-/- warning: discrete_quotient.proj_bot_injective -> DiscreteQuotient.proj_bot_injective is a dubious translation:
-lean 3 declaration is
-  forall {X : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} X] [_inst_4 : DiscreteTopology.{u1} X _inst_1], Function.Injective.{succ u1, succ u1} X (coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) (Bot.bot.{u1} (DiscreteQuotient.{u1} X _inst_1) (OrderBot.toHasBot.{u1} (DiscreteQuotient.{u1} X _inst_1) (Preorder.toHasLe.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.semilatticeInf.{u1} X _inst_1)))) (DiscreteQuotient.orderBot.{u1} X _inst_1 (DiscreteTopology.toLocallyConnectedSpace.{u1} X _inst_1 _inst_4))))) (DiscreteQuotient.proj.{u1} X _inst_1 (Bot.bot.{u1} (DiscreteQuotient.{u1} X _inst_1) (OrderBot.toHasBot.{u1} (DiscreteQuotient.{u1} X _inst_1) (Preorder.toHasLe.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.semilatticeInf.{u1} X _inst_1)))) (DiscreteQuotient.orderBot.{u1} X _inst_1 (DiscreteTopology.toLocallyConnectedSpace.{u1} X _inst_1 _inst_4)))))
-but is expected to have type
-  forall {X : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} X] [_inst_4 : DiscreteTopology.{u1} X _inst_1], Function.Injective.{succ u1, succ u1} X (Quotient.{succ u1} X (DiscreteQuotient.toSetoid.{u1} X _inst_1 (Bot.bot.{u1} (DiscreteQuotient.{u1} X _inst_1) (OrderBot.toBot.{u1} (DiscreteQuotient.{u1} X _inst_1) (Preorder.toLE.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.instSemilatticeInfDiscreteQuotient.{u1} X _inst_1)))) (DiscreteQuotient.instOrderBotDiscreteQuotientToLEToPreorderToPartialOrderInstSemilatticeInfDiscreteQuotient.{u1} X _inst_1 (DiscreteTopology.toLocallyConnectedSpace.{u1} X _inst_1 _inst_4)))))) (DiscreteQuotient.proj.{u1} X _inst_1 (Bot.bot.{u1} (DiscreteQuotient.{u1} X _inst_1) (OrderBot.toBot.{u1} (DiscreteQuotient.{u1} X _inst_1) (Preorder.toLE.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.instSemilatticeInfDiscreteQuotient.{u1} X _inst_1)))) (DiscreteQuotient.instOrderBotDiscreteQuotientToLEToPreorderToPartialOrderInstSemilatticeInfDiscreteQuotient.{u1} X _inst_1 (DiscreteTopology.toLocallyConnectedSpace.{u1} X _inst_1 _inst_4)))))
-Case conversion may be inaccurate. Consider using '#align discrete_quotient.proj_bot_injective DiscreteQuotient.proj_bot_injectiveₓ'. -/
 theorem proj_bot_injective [DiscreteTopology X] : Injective (⊥ : DiscreteQuotient X).proj :=
   fun _ _ => proj_bot_inj.1
 #align discrete_quotient.proj_bot_injective DiscreteQuotient.proj_bot_injective
 
-/- warning: discrete_quotient.proj_bot_bijective -> DiscreteQuotient.proj_bot_bijective is a dubious translation:
-lean 3 declaration is
-  forall {X : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} X] [_inst_4 : DiscreteTopology.{u1} X _inst_1], Function.Bijective.{succ u1, succ u1} X (coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) (Bot.bot.{u1} (DiscreteQuotient.{u1} X _inst_1) (OrderBot.toHasBot.{u1} (DiscreteQuotient.{u1} X _inst_1) (Preorder.toHasLe.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.semilatticeInf.{u1} X _inst_1)))) (DiscreteQuotient.orderBot.{u1} X _inst_1 (DiscreteTopology.toLocallyConnectedSpace.{u1} X _inst_1 _inst_4))))) (DiscreteQuotient.proj.{u1} X _inst_1 (Bot.bot.{u1} (DiscreteQuotient.{u1} X _inst_1) (OrderBot.toHasBot.{u1} (DiscreteQuotient.{u1} X _inst_1) (Preorder.toHasLe.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.semilatticeInf.{u1} X _inst_1)))) (DiscreteQuotient.orderBot.{u1} X _inst_1 (DiscreteTopology.toLocallyConnectedSpace.{u1} X _inst_1 _inst_4)))))
-but is expected to have type
-  forall {X : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} X] [_inst_4 : DiscreteTopology.{u1} X _inst_1], Function.Bijective.{succ u1, succ u1} X (Quotient.{succ u1} X (DiscreteQuotient.toSetoid.{u1} X _inst_1 (Bot.bot.{u1} (DiscreteQuotient.{u1} X _inst_1) (OrderBot.toBot.{u1} (DiscreteQuotient.{u1} X _inst_1) (Preorder.toLE.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.instSemilatticeInfDiscreteQuotient.{u1} X _inst_1)))) (DiscreteQuotient.instOrderBotDiscreteQuotientToLEToPreorderToPartialOrderInstSemilatticeInfDiscreteQuotient.{u1} X _inst_1 (DiscreteTopology.toLocallyConnectedSpace.{u1} X _inst_1 _inst_4)))))) (DiscreteQuotient.proj.{u1} X _inst_1 (Bot.bot.{u1} (DiscreteQuotient.{u1} X _inst_1) (OrderBot.toBot.{u1} (DiscreteQuotient.{u1} X _inst_1) (Preorder.toLE.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.instSemilatticeInfDiscreteQuotient.{u1} X _inst_1)))) (DiscreteQuotient.instOrderBotDiscreteQuotientToLEToPreorderToPartialOrderInstSemilatticeInfDiscreteQuotient.{u1} X _inst_1 (DiscreteTopology.toLocallyConnectedSpace.{u1} X _inst_1 _inst_4)))))
-Case conversion may be inaccurate. Consider using '#align discrete_quotient.proj_bot_bijective DiscreteQuotient.proj_bot_bijectiveₓ'. -/
 theorem proj_bot_bijective [DiscreteTopology X] : Bijective (⊥ : DiscreteQuotient X).proj :=
   ⟨proj_bot_injective, proj_surjective _⟩
 #align discrete_quotient.proj_bot_bijective DiscreteQuotient.proj_bot_bijective
@@ -413,32 +341,14 @@ theorem leComap_id : LEComap (ContinuousMap.id X) A A := fun _ _ => id
 
 variable {A A' B B'} {f} {g : C(Y, Z)} {C : DiscreteQuotient Z}
 
-/- warning: discrete_quotient.le_comap_id_iff -> DiscreteQuotient.leComap_id_iff is a dubious translation:
-lean 3 declaration is
-  forall {X : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} X] {A : DiscreteQuotient.{u1} X _inst_1} {A' : DiscreteQuotient.{u1} X _inst_1}, Iff (DiscreteQuotient.LEComap.{u1, u1} X X _inst_1 _inst_1 (ContinuousMap.id.{u1} X _inst_1) A A') (LE.le.{u1} (DiscreteQuotient.{u1} X _inst_1) (Preorder.toHasLe.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.semilatticeInf.{u1} X _inst_1)))) A A')
-but is expected to have type
-  forall {X : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} X] {A : DiscreteQuotient.{u1} X _inst_1} {A' : DiscreteQuotient.{u1} X _inst_1}, Iff (DiscreteQuotient.LEComap.{u1, u1} X X _inst_1 _inst_1 (ContinuousMap.id.{u1} X _inst_1) A A') (LE.le.{u1} (DiscreteQuotient.{u1} X _inst_1) (Preorder.toLE.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.instSemilatticeInfDiscreteQuotient.{u1} X _inst_1)))) A A')
-Case conversion may be inaccurate. Consider using '#align discrete_quotient.le_comap_id_iff DiscreteQuotient.leComap_id_iffₓ'. -/
 @[simp]
 theorem leComap_id_iff : LEComap (ContinuousMap.id X) A A' ↔ A ≤ A' :=
   Iff.rfl
 #align discrete_quotient.le_comap_id_iff DiscreteQuotient.leComap_id_iff
 
-/- warning: discrete_quotient.le_comap.comp -> DiscreteQuotient.LEComap.comp is a dubious translation:
-lean 3 declaration is
-  forall {X : Type.{u1}} {Y : Type.{u2}} {Z : Type.{u3}} [_inst_1 : TopologicalSpace.{u1} X] [_inst_2 : TopologicalSpace.{u2} Y] [_inst_3 : TopologicalSpace.{u3} Z] {f : ContinuousMap.{u1, u2} X Y _inst_1 _inst_2} {A : DiscreteQuotient.{u1} X _inst_1} {B : DiscreteQuotient.{u2} Y _inst_2} {g : ContinuousMap.{u2, u3} Y Z _inst_2 _inst_3} {C : DiscreteQuotient.{u3} Z _inst_3}, (DiscreteQuotient.LEComap.{u2, u3} Y Z _inst_2 _inst_3 g B C) -> (DiscreteQuotient.LEComap.{u1, u2} X Y _inst_1 _inst_2 f A B) -> (DiscreteQuotient.LEComap.{u1, u3} X Z _inst_1 _inst_3 (ContinuousMap.comp.{u1, u2, u3} X Y Z _inst_1 _inst_2 _inst_3 g f) A C)
-but is expected to have type
-  forall {X : Type.{u1}} {Y : Type.{u3}} {Z : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} X] [_inst_2 : TopologicalSpace.{u3} Y] [_inst_3 : TopologicalSpace.{u2} Z] {f : ContinuousMap.{u1, u3} X Y _inst_1 _inst_2} {A : DiscreteQuotient.{u1} X _inst_1} {B : DiscreteQuotient.{u3} Y _inst_2} {g : ContinuousMap.{u3, u2} Y Z _inst_2 _inst_3} {C : DiscreteQuotient.{u2} Z _inst_3}, (DiscreteQuotient.LEComap.{u3, u2} Y Z _inst_2 _inst_3 g B C) -> (DiscreteQuotient.LEComap.{u1, u3} X Y _inst_1 _inst_2 f A B) -> (DiscreteQuotient.LEComap.{u1, u2} X Z _inst_1 _inst_3 (ContinuousMap.comp.{u1, u3, u2} X Y Z _inst_1 _inst_2 _inst_3 g f) A C)
-Case conversion may be inaccurate. Consider using '#align discrete_quotient.le_comap.comp DiscreteQuotient.LEComap.compₓ'. -/
 theorem LEComap.comp : LEComap g B C → LEComap f A B → LEComap (g.comp f) A C := by tauto
 #align discrete_quotient.le_comap.comp DiscreteQuotient.LEComap.comp
 
-/- warning: discrete_quotient.le_comap.mono -> DiscreteQuotient.LEComap.mono is a dubious translation:
-lean 3 declaration is
-  forall {X : Type.{u1}} {Y : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} X] [_inst_2 : TopologicalSpace.{u2} Y] {f : ContinuousMap.{u1, u2} X Y _inst_1 _inst_2} {A : DiscreteQuotient.{u1} X _inst_1} {A' : DiscreteQuotient.{u1} X _inst_1} {B : DiscreteQuotient.{u2} Y _inst_2} {B' : DiscreteQuotient.{u2} Y _inst_2}, (DiscreteQuotient.LEComap.{u1, u2} X Y _inst_1 _inst_2 f A B) -> (LE.le.{u1} (DiscreteQuotient.{u1} X _inst_1) (Preorder.toHasLe.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.semilatticeInf.{u1} X _inst_1)))) A' A) -> (LE.le.{u2} (DiscreteQuotient.{u2} Y _inst_2) (Preorder.toHasLe.{u2} (DiscreteQuotient.{u2} Y _inst_2) (PartialOrder.toPreorder.{u2} (DiscreteQuotient.{u2} Y _inst_2) (SemilatticeInf.toPartialOrder.{u2} (DiscreteQuotient.{u2} Y _inst_2) (DiscreteQuotient.semilatticeInf.{u2} Y _inst_2)))) B B') -> (DiscreteQuotient.LEComap.{u1, u2} X Y _inst_1 _inst_2 f A' B')
-but is expected to have type
-  forall {X : Type.{u2}} {Y : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} X] [_inst_2 : TopologicalSpace.{u1} Y] {f : ContinuousMap.{u2, u1} X Y _inst_1 _inst_2} {A : DiscreteQuotient.{u2} X _inst_1} {A' : DiscreteQuotient.{u2} X _inst_1} {B : DiscreteQuotient.{u1} Y _inst_2} {B' : DiscreteQuotient.{u1} Y _inst_2}, (DiscreteQuotient.LEComap.{u2, u1} X Y _inst_1 _inst_2 f A B) -> (LE.le.{u2} (DiscreteQuotient.{u2} X _inst_1) (Preorder.toLE.{u2} (DiscreteQuotient.{u2} X _inst_1) (PartialOrder.toPreorder.{u2} (DiscreteQuotient.{u2} X _inst_1) (SemilatticeInf.toPartialOrder.{u2} (DiscreteQuotient.{u2} X _inst_1) (DiscreteQuotient.instSemilatticeInfDiscreteQuotient.{u2} X _inst_1)))) A' A) -> (LE.le.{u1} (DiscreteQuotient.{u1} Y _inst_2) (Preorder.toLE.{u1} (DiscreteQuotient.{u1} Y _inst_2) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} Y _inst_2) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} Y _inst_2) (DiscreteQuotient.instSemilatticeInfDiscreteQuotient.{u1} Y _inst_2)))) B B') -> (DiscreteQuotient.LEComap.{u2, u1} X Y _inst_1 _inst_2 f A' B')
-Case conversion may be inaccurate. Consider using '#align discrete_quotient.le_comap.mono DiscreteQuotient.LEComap.monoₓ'. -/
 theorem LEComap.mono (h : LEComap f A B) (hA : A' ≤ A) (hB : B ≤ B') : LEComap f A' B' :=
   hA.trans <| le_trans h <| comap_mono _ hB
 #align discrete_quotient.le_comap.mono DiscreteQuotient.LEComap.mono
@@ -450,33 +360,15 @@ def map (f : C(X, Y)) (cond : LEComap f A B) : A → B :=
 #align discrete_quotient.map DiscreteQuotient.map
 -/
 
-/- warning: discrete_quotient.map_continuous -> DiscreteQuotient.map_continuous is a dubious translation:
-lean 3 declaration is
-  forall {X : Type.{u1}} {Y : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} X] [_inst_2 : TopologicalSpace.{u2} Y] {f : ContinuousMap.{u1, u2} X Y _inst_1 _inst_2} {A : DiscreteQuotient.{u1} X _inst_1} {B : DiscreteQuotient.{u2} Y _inst_2} (cond : DiscreteQuotient.LEComap.{u1, u2} X Y _inst_1 _inst_2 f A B), Continuous.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) A) (coeSort.{succ u2, succ (succ u2)} (DiscreteQuotient.{u2} Y _inst_2) Type.{u2} (DiscreteQuotient.hasCoeToSort.{u2} Y _inst_2) B) (DiscreteQuotient.topologicalSpace.{u1} X _inst_1 A) (DiscreteQuotient.topologicalSpace.{u2} Y _inst_2 B) (DiscreteQuotient.map.{u1, u2} X Y _inst_1 _inst_2 A B f cond)
-but is expected to have type
-  forall {X : Type.{u2}} {Y : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} X] [_inst_2 : TopologicalSpace.{u1} Y] {f : ContinuousMap.{u2, u1} X Y _inst_1 _inst_2} {A : DiscreteQuotient.{u2} X _inst_1} {B : DiscreteQuotient.{u1} Y _inst_2} (cond : DiscreteQuotient.LEComap.{u2, u1} X Y _inst_1 _inst_2 f A B), Continuous.{u2, u1} (Quotient.{succ u2} X (DiscreteQuotient.toSetoid.{u2} X _inst_1 A)) (Quotient.{succ u1} Y (DiscreteQuotient.toSetoid.{u1} Y _inst_2 B)) (DiscreteQuotient.instTopologicalSpaceQuotientToSetoid.{u2} X _inst_1 A) (DiscreteQuotient.instTopologicalSpaceQuotientToSetoid.{u1} Y _inst_2 B) (DiscreteQuotient.map.{u2, u1} X Y _inst_1 _inst_2 A B f cond)
-Case conversion may be inaccurate. Consider using '#align discrete_quotient.map_continuous DiscreteQuotient.map_continuousₓ'. -/
 theorem map_continuous (cond : LEComap f A B) : Continuous (map f cond) :=
   continuous_of_discreteTopology
 #align discrete_quotient.map_continuous DiscreteQuotient.map_continuous
 
-/- warning: discrete_quotient.map_comp_proj -> DiscreteQuotient.map_comp_proj is a dubious translation:
-lean 3 declaration is
-  forall {X : Type.{u1}} {Y : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} X] [_inst_2 : TopologicalSpace.{u2} Y] {f : ContinuousMap.{u1, u2} X Y _inst_1 _inst_2} {A : DiscreteQuotient.{u1} X _inst_1} {B : DiscreteQuotient.{u2} Y _inst_2} (cond : DiscreteQuotient.LEComap.{u1, u2} X Y _inst_1 _inst_2 f A B), Eq.{max (succ u1) (succ u2)} (X -> (coeSort.{succ u2, succ (succ u2)} (DiscreteQuotient.{u2} Y _inst_2) Type.{u2} (DiscreteQuotient.hasCoeToSort.{u2} Y _inst_2) B)) (Function.comp.{succ u1, succ u1, succ u2} X (coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) A) (coeSort.{succ u2, succ (succ u2)} (DiscreteQuotient.{u2} Y _inst_2) Type.{u2} (DiscreteQuotient.hasCoeToSort.{u2} Y _inst_2) B) (DiscreteQuotient.map.{u1, u2} X Y _inst_1 _inst_2 A B f cond) (DiscreteQuotient.proj.{u1} X _inst_1 A)) (Function.comp.{succ u1, succ u2, succ u2} X Y (coeSort.{succ u2, succ (succ u2)} (DiscreteQuotient.{u2} Y _inst_2) Type.{u2} (DiscreteQuotient.hasCoeToSort.{u2} Y _inst_2) B) (DiscreteQuotient.proj.{u2} Y _inst_2 B) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (ContinuousMap.{u1, u2} X Y _inst_1 _inst_2) (fun (_x : ContinuousMap.{u1, u2} X Y _inst_1 _inst_2) => X -> Y) (ContinuousMap.hasCoeToFun.{u1, u2} X Y _inst_1 _inst_2) f))
-but is expected to have type
-  forall {X : Type.{u2}} {Y : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} X] [_inst_2 : TopologicalSpace.{u1} Y] {f : ContinuousMap.{u2, u1} X Y _inst_1 _inst_2} {A : DiscreteQuotient.{u2} X _inst_1} {B : DiscreteQuotient.{u1} Y _inst_2} (cond : DiscreteQuotient.LEComap.{u2, u1} X Y _inst_1 _inst_2 f A B), Eq.{max (succ u2) (succ u1)} (X -> (Quotient.{succ u1} Y (DiscreteQuotient.toSetoid.{u1} Y _inst_2 B))) (Function.comp.{succ u2, succ u2, succ u1} X (Quotient.{succ u2} X (DiscreteQuotient.toSetoid.{u2} X _inst_1 A)) (Quotient.{succ u1} Y (DiscreteQuotient.toSetoid.{u1} Y _inst_2 B)) (DiscreteQuotient.map.{u2, u1} X Y _inst_1 _inst_2 A B f cond) (DiscreteQuotient.proj.{u2} X _inst_1 A)) (Function.comp.{succ u2, succ u1, succ u1} X Y (Quotient.{succ u1} Y (DiscreteQuotient.toSetoid.{u1} Y _inst_2 B)) (DiscreteQuotient.proj.{u1} Y _inst_2 B) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (ContinuousMap.{u2, u1} X Y _inst_1 _inst_2) X (fun (_x : X) => (fun (x._@.Mathlib.Topology.ContinuousFunction.Basic._hyg.699 : X) => Y) _x) (ContinuousMapClass.toFunLike.{max u2 u1, u2, u1} (ContinuousMap.{u2, u1} X Y _inst_1 _inst_2) X Y _inst_1 _inst_2 (ContinuousMap.instContinuousMapClassContinuousMap.{u2, u1} X Y _inst_1 _inst_2)) f))
-Case conversion may be inaccurate. Consider using '#align discrete_quotient.map_comp_proj DiscreteQuotient.map_comp_projₓ'. -/
 @[simp]
 theorem map_comp_proj (cond : LEComap f A B) : map f cond ∘ A.proj = B.proj ∘ f :=
   rfl
 #align discrete_quotient.map_comp_proj DiscreteQuotient.map_comp_proj
 
-/- warning: discrete_quotient.map_proj -> DiscreteQuotient.map_proj is a dubious translation:
-lean 3 declaration is
-  forall {X : Type.{u1}} {Y : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} X] [_inst_2 : TopologicalSpace.{u2} Y] {f : ContinuousMap.{u1, u2} X Y _inst_1 _inst_2} {A : DiscreteQuotient.{u1} X _inst_1} {B : DiscreteQuotient.{u2} Y _inst_2} (cond : DiscreteQuotient.LEComap.{u1, u2} X Y _inst_1 _inst_2 f A B) (x : X), Eq.{succ u2} (coeSort.{succ u2, succ (succ u2)} (DiscreteQuotient.{u2} Y _inst_2) Type.{u2} (DiscreteQuotient.hasCoeToSort.{u2} Y _inst_2) B) (DiscreteQuotient.map.{u1, u2} X Y _inst_1 _inst_2 A B f cond (DiscreteQuotient.proj.{u1} X _inst_1 A x)) (DiscreteQuotient.proj.{u2} Y _inst_2 B (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (ContinuousMap.{u1, u2} X Y _inst_1 _inst_2) (fun (_x : ContinuousMap.{u1, u2} X Y _inst_1 _inst_2) => X -> Y) (ContinuousMap.hasCoeToFun.{u1, u2} X Y _inst_1 _inst_2) f x))
-but is expected to have type
-  forall {X : Type.{u2}} {Y : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} X] [_inst_2 : TopologicalSpace.{u1} Y] {f : ContinuousMap.{u2, u1} X Y _inst_1 _inst_2} {A : DiscreteQuotient.{u2} X _inst_1} {B : DiscreteQuotient.{u1} Y _inst_2} (cond : DiscreteQuotient.LEComap.{u2, u1} X Y _inst_1 _inst_2 f A B) (x : X), Eq.{succ u1} (Quotient.{succ u1} Y (DiscreteQuotient.toSetoid.{u1} Y _inst_2 B)) (DiscreteQuotient.map.{u2, u1} X Y _inst_1 _inst_2 A B f cond (DiscreteQuotient.proj.{u2} X _inst_1 A x)) (DiscreteQuotient.proj.{u1} Y _inst_2 B (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (ContinuousMap.{u2, u1} X Y _inst_1 _inst_2) X (fun (_x : X) => (fun (x._@.Mathlib.Topology.ContinuousFunction.Basic._hyg.699 : X) => Y) _x) (ContinuousMapClass.toFunLike.{max u2 u1, u2, u1} (ContinuousMap.{u2, u1} X Y _inst_1 _inst_2) X Y _inst_1 _inst_2 (ContinuousMap.instContinuousMapClassContinuousMap.{u2, u1} X Y _inst_1 _inst_2)) f x))
-Case conversion may be inaccurate. Consider using '#align discrete_quotient.map_proj DiscreteQuotient.map_projₓ'. -/
 @[simp]
 theorem map_proj (cond : LEComap f A B) (x : X) : map f cond (A.proj x) = B.proj (f x) :=
   rfl
@@ -488,57 +380,27 @@ theorem map_id : map _ (leComap_id A) = id := by ext ⟨⟩ <;> rfl
 #align discrete_quotient.map_id DiscreteQuotient.map_id
 -/
 
-/- warning: discrete_quotient.map_comp -> DiscreteQuotient.map_comp is a dubious translation:
-lean 3 declaration is
-  forall {X : Type.{u1}} {Y : Type.{u2}} {Z : Type.{u3}} [_inst_1 : TopologicalSpace.{u1} X] [_inst_2 : TopologicalSpace.{u2} Y] [_inst_3 : TopologicalSpace.{u3} Z] {f : ContinuousMap.{u1, u2} X Y _inst_1 _inst_2} {A : DiscreteQuotient.{u1} X _inst_1} {B : DiscreteQuotient.{u2} Y _inst_2} {g : ContinuousMap.{u2, u3} Y Z _inst_2 _inst_3} {C : DiscreteQuotient.{u3} Z _inst_3} (h1 : DiscreteQuotient.LEComap.{u2, u3} Y Z _inst_2 _inst_3 g B C) (h2 : DiscreteQuotient.LEComap.{u1, u2} X Y _inst_1 _inst_2 f A B), Eq.{max (succ u1) (succ u3)} ((coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) A) -> (coeSort.{succ u3, succ (succ u3)} (DiscreteQuotient.{u3} Z _inst_3) Type.{u3} (DiscreteQuotient.hasCoeToSort.{u3} Z _inst_3) C)) (DiscreteQuotient.map.{u1, u3} X Z _inst_1 _inst_3 A C (ContinuousMap.comp.{u1, u2, u3} X Y Z _inst_1 _inst_2 _inst_3 g f) (DiscreteQuotient.LEComap.comp.{u1, u2, u3} X Y Z _inst_1 _inst_2 _inst_3 f A B g C h1 h2)) (Function.comp.{succ u1, succ u2, succ u3} (coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) A) (coeSort.{succ u2, succ (succ u2)} (DiscreteQuotient.{u2} Y _inst_2) Type.{u2} (DiscreteQuotient.hasCoeToSort.{u2} Y _inst_2) B) (coeSort.{succ u3, succ (succ u3)} (DiscreteQuotient.{u3} Z _inst_3) Type.{u3} (DiscreteQuotient.hasCoeToSort.{u3} Z _inst_3) C) (DiscreteQuotient.map.{u2, u3} Y Z _inst_2 _inst_3 B C g h1) (DiscreteQuotient.map.{u1, u2} X Y _inst_1 _inst_2 A B f h2))
-but is expected to have type
-  forall {X : Type.{u1}} {Y : Type.{u3}} {Z : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} X] [_inst_2 : TopologicalSpace.{u3} Y] [_inst_3 : TopologicalSpace.{u2} Z] {f : ContinuousMap.{u1, u3} X Y _inst_1 _inst_2} {A : DiscreteQuotient.{u1} X _inst_1} {B : DiscreteQuotient.{u3} Y _inst_2} {g : ContinuousMap.{u3, u2} Y Z _inst_2 _inst_3} {C : DiscreteQuotient.{u2} Z _inst_3} (h1 : DiscreteQuotient.LEComap.{u3, u2} Y Z _inst_2 _inst_3 g B C) (h2 : DiscreteQuotient.LEComap.{u1, u3} X Y _inst_1 _inst_2 f A B), Eq.{max (succ u1) (succ u2)} ((Quotient.{succ u1} X (DiscreteQuotient.toSetoid.{u1} X _inst_1 A)) -> (Quotient.{succ u2} Z (DiscreteQuotient.toSetoid.{u2} Z _inst_3 C))) (DiscreteQuotient.map.{u1, u2} X Z _inst_1 _inst_3 A C (ContinuousMap.comp.{u1, u3, u2} X Y Z _inst_1 _inst_2 _inst_3 g f) (DiscreteQuotient.LEComap.comp.{u1, u2, u3} X Y Z _inst_1 _inst_2 _inst_3 f A B g C h1 h2)) (Function.comp.{succ u1, succ u3, succ u2} (Quotient.{succ u1} X (DiscreteQuotient.toSetoid.{u1} X _inst_1 A)) (Quotient.{succ u3} Y (DiscreteQuotient.toSetoid.{u3} Y _inst_2 B)) (Quotient.{succ u2} Z (DiscreteQuotient.toSetoid.{u2} Z _inst_3 C)) (DiscreteQuotient.map.{u3, u2} Y Z _inst_2 _inst_3 B C g h1) (DiscreteQuotient.map.{u1, u3} X Y _inst_1 _inst_2 A B f h2))
-Case conversion may be inaccurate. Consider using '#align discrete_quotient.map_comp DiscreteQuotient.map_compₓ'. -/
 @[simp]
 theorem map_comp (h1 : LEComap g B C) (h2 : LEComap f A B) :
     map (g.comp f) (h1.comp h2) = map g h1 ∘ map f h2 := by ext ⟨⟩; rfl
 #align discrete_quotient.map_comp DiscreteQuotient.map_comp
 
-/- warning: discrete_quotient.of_le_map -> DiscreteQuotient.ofLE_map is a dubious translation:
-lean 3 declaration is
-  forall {X : Type.{u1}} {Y : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} X] [_inst_2 : TopologicalSpace.{u2} Y] {f : ContinuousMap.{u1, u2} X Y _inst_1 _inst_2} {A : DiscreteQuotient.{u1} X _inst_1} {B : DiscreteQuotient.{u2} Y _inst_2} {B' : DiscreteQuotient.{u2} Y _inst_2} (cond : DiscreteQuotient.LEComap.{u1, u2} X Y _inst_1 _inst_2 f A B) (h : LE.le.{u2} (DiscreteQuotient.{u2} Y _inst_2) (Preorder.toHasLe.{u2} (DiscreteQuotient.{u2} Y _inst_2) (PartialOrder.toPreorder.{u2} (DiscreteQuotient.{u2} Y _inst_2) (SemilatticeInf.toPartialOrder.{u2} (DiscreteQuotient.{u2} Y _inst_2) (DiscreteQuotient.semilatticeInf.{u2} Y _inst_2)))) B B') (a : coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) A), Eq.{succ u2} (coeSort.{succ u2, succ (succ u2)} (DiscreteQuotient.{u2} Y _inst_2) Type.{u2} (DiscreteQuotient.hasCoeToSort.{u2} Y _inst_2) B') (DiscreteQuotient.ofLE.{u2} Y _inst_2 B B' h (DiscreteQuotient.map.{u1, u2} X Y _inst_1 _inst_2 A B f cond a)) (DiscreteQuotient.map.{u1, u2} X Y _inst_1 _inst_2 A B' f (DiscreteQuotient.LEComap.mono.{u1, u2} X Y _inst_1 _inst_2 f A A B B' cond (le_rfl.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.semilatticeInf.{u1} X _inst_1))) A) h) a)
-but is expected to have type
-  forall {X : Type.{u2}} {Y : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} X] [_inst_2 : TopologicalSpace.{u1} Y] {f : ContinuousMap.{u2, u1} X Y _inst_1 _inst_2} {A : DiscreteQuotient.{u2} X _inst_1} {B : DiscreteQuotient.{u1} Y _inst_2} {B' : DiscreteQuotient.{u1} Y _inst_2} (cond : DiscreteQuotient.LEComap.{u2, u1} X Y _inst_1 _inst_2 f A B) (h : LE.le.{u1} (DiscreteQuotient.{u1} Y _inst_2) (Preorder.toLE.{u1} (DiscreteQuotient.{u1} Y _inst_2) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} Y _inst_2) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} Y _inst_2) (DiscreteQuotient.instSemilatticeInfDiscreteQuotient.{u1} Y _inst_2)))) B B') (a : Quotient.{succ u2} X (DiscreteQuotient.toSetoid.{u2} X _inst_1 A)), Eq.{succ u1} (Quotient.{succ u1} Y (DiscreteQuotient.toSetoid.{u1} Y _inst_2 B')) (DiscreteQuotient.ofLE.{u1} Y _inst_2 B B' h (DiscreteQuotient.map.{u2, u1} X Y _inst_1 _inst_2 A B f cond a)) (DiscreteQuotient.map.{u2, u1} X Y _inst_1 _inst_2 A B' f (DiscreteQuotient.LEComap.mono.{u1, u2} X Y _inst_1 _inst_2 f A A B B' cond (le_rfl.{u2} (DiscreteQuotient.{u2} X _inst_1) (PartialOrder.toPreorder.{u2} (DiscreteQuotient.{u2} X _inst_1) (SemilatticeInf.toPartialOrder.{u2} (DiscreteQuotient.{u2} X _inst_1) (DiscreteQuotient.instSemilatticeInfDiscreteQuotient.{u2} X _inst_1))) A) h) a)
-Case conversion may be inaccurate. Consider using '#align discrete_quotient.of_le_map DiscreteQuotient.ofLE_mapₓ'. -/
 @[simp]
 theorem ofLE_map (cond : LEComap f A B) (h : B ≤ B') (a : A) :
     ofLE h (map f cond a) = map f (cond.mono le_rfl h) a := by rcases a with ⟨⟩; rfl
 #align discrete_quotient.of_le_map DiscreteQuotient.ofLE_map
 
-/- warning: discrete_quotient.of_le_comp_map -> DiscreteQuotient.ofLE_comp_map is a dubious translation:
-lean 3 declaration is
-  forall {X : Type.{u1}} {Y : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} X] [_inst_2 : TopologicalSpace.{u2} Y] {f : ContinuousMap.{u1, u2} X Y _inst_1 _inst_2} {A : DiscreteQuotient.{u1} X _inst_1} {B : DiscreteQuotient.{u2} Y _inst_2} {B' : DiscreteQuotient.{u2} Y _inst_2} (cond : DiscreteQuotient.LEComap.{u1, u2} X Y _inst_1 _inst_2 f A B) (h : LE.le.{u2} (DiscreteQuotient.{u2} Y _inst_2) (Preorder.toHasLe.{u2} (DiscreteQuotient.{u2} Y _inst_2) (PartialOrder.toPreorder.{u2} (DiscreteQuotient.{u2} Y _inst_2) (SemilatticeInf.toPartialOrder.{u2} (DiscreteQuotient.{u2} Y _inst_2) (DiscreteQuotient.semilatticeInf.{u2} Y _inst_2)))) B B'), Eq.{max (succ u1) (succ u2)} ((coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) A) -> (coeSort.{succ u2, succ (succ u2)} (DiscreteQuotient.{u2} Y _inst_2) Type.{u2} (DiscreteQuotient.hasCoeToSort.{u2} Y _inst_2) B')) (Function.comp.{succ u1, succ u2, succ u2} (coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) A) (coeSort.{succ u2, succ (succ u2)} (DiscreteQuotient.{u2} Y _inst_2) Type.{u2} (DiscreteQuotient.hasCoeToSort.{u2} Y _inst_2) B) (coeSort.{succ u2, succ (succ u2)} (DiscreteQuotient.{u2} Y _inst_2) Type.{u2} (DiscreteQuotient.hasCoeToSort.{u2} Y _inst_2) B') (DiscreteQuotient.ofLE.{u2} Y _inst_2 B B' h) (DiscreteQuotient.map.{u1, u2} X Y _inst_1 _inst_2 A B f cond)) (DiscreteQuotient.map.{u1, u2} X Y _inst_1 _inst_2 A B' f (DiscreteQuotient.LEComap.mono.{u1, u2} X Y _inst_1 _inst_2 f A A B B' cond (le_rfl.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.semilatticeInf.{u1} X _inst_1))) A) h))
-but is expected to have type
-  forall {X : Type.{u2}} {Y : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} X] [_inst_2 : TopologicalSpace.{u1} Y] {f : ContinuousMap.{u2, u1} X Y _inst_1 _inst_2} {A : DiscreteQuotient.{u2} X _inst_1} {B : DiscreteQuotient.{u1} Y _inst_2} {B' : DiscreteQuotient.{u1} Y _inst_2} (cond : DiscreteQuotient.LEComap.{u2, u1} X Y _inst_1 _inst_2 f A B) (h : LE.le.{u1} (DiscreteQuotient.{u1} Y _inst_2) (Preorder.toLE.{u1} (DiscreteQuotient.{u1} Y _inst_2) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} Y _inst_2) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} Y _inst_2) (DiscreteQuotient.instSemilatticeInfDiscreteQuotient.{u1} Y _inst_2)))) B B'), Eq.{max (succ u2) (succ u1)} ((Quotient.{succ u2} X (DiscreteQuotient.toSetoid.{u2} X _inst_1 A)) -> (Quotient.{succ u1} Y (DiscreteQuotient.toSetoid.{u1} Y _inst_2 B'))) (Function.comp.{succ u2, succ u1, succ u1} (Quotient.{succ u2} X (DiscreteQuotient.toSetoid.{u2} X _inst_1 A)) (Quotient.{succ u1} Y (DiscreteQuotient.toSetoid.{u1} Y _inst_2 B)) (Quotient.{succ u1} Y (DiscreteQuotient.toSetoid.{u1} Y _inst_2 B')) (DiscreteQuotient.ofLE.{u1} Y _inst_2 B B' h) (DiscreteQuotient.map.{u2, u1} X Y _inst_1 _inst_2 A B f cond)) (DiscreteQuotient.map.{u2, u1} X Y _inst_1 _inst_2 A B' f (DiscreteQuotient.LEComap.mono.{u1, u2} X Y _inst_1 _inst_2 f A A B B' cond (le_rfl.{u2} (DiscreteQuotient.{u2} X _inst_1) (PartialOrder.toPreorder.{u2} (DiscreteQuotient.{u2} X _inst_1) (SemilatticeInf.toPartialOrder.{u2} (DiscreteQuotient.{u2} X _inst_1) (DiscreteQuotient.instSemilatticeInfDiscreteQuotient.{u2} X _inst_1))) A) h))
-Case conversion may be inaccurate. Consider using '#align discrete_quotient.of_le_comp_map DiscreteQuotient.ofLE_comp_mapₓ'. -/
 @[simp]
 theorem ofLE_comp_map (cond : LEComap f A B) (h : B ≤ B') :
     ofLE h ∘ map f cond = map f (cond.mono le_rfl h) :=
   funext <| ofLE_map cond h
 #align discrete_quotient.of_le_comp_map DiscreteQuotient.ofLE_comp_map
 
-/- warning: discrete_quotient.map_of_le -> DiscreteQuotient.map_ofLE is a dubious translation:
-lean 3 declaration is
-  forall {X : Type.{u1}} {Y : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} X] [_inst_2 : TopologicalSpace.{u2} Y] {f : ContinuousMap.{u1, u2} X Y _inst_1 _inst_2} {A : DiscreteQuotient.{u1} X _inst_1} {A' : DiscreteQuotient.{u1} X _inst_1} {B : DiscreteQuotient.{u2} Y _inst_2} (cond : DiscreteQuotient.LEComap.{u1, u2} X Y _inst_1 _inst_2 f A B) (h : LE.le.{u1} (DiscreteQuotient.{u1} X _inst_1) (Preorder.toHasLe.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.semilatticeInf.{u1} X _inst_1)))) A' A) (c : coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) A'), Eq.{succ u2} (coeSort.{succ u2, succ (succ u2)} (DiscreteQuotient.{u2} Y _inst_2) Type.{u2} (DiscreteQuotient.hasCoeToSort.{u2} Y _inst_2) B) (DiscreteQuotient.map.{u1, u2} X Y _inst_1 _inst_2 A B f cond (DiscreteQuotient.ofLE.{u1} X _inst_1 A' A h c)) (DiscreteQuotient.map.{u1, u2} X Y _inst_1 _inst_2 A' B f (DiscreteQuotient.LEComap.mono.{u1, u2} X Y _inst_1 _inst_2 f A A' B B cond h (le_rfl.{u2} (DiscreteQuotient.{u2} Y _inst_2) (PartialOrder.toPreorder.{u2} (DiscreteQuotient.{u2} Y _inst_2) (SemilatticeInf.toPartialOrder.{u2} (DiscreteQuotient.{u2} Y _inst_2) (DiscreteQuotient.semilatticeInf.{u2} Y _inst_2))) B)) c)
-but is expected to have type
-  forall {X : Type.{u2}} {Y : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} X] [_inst_2 : TopologicalSpace.{u1} Y] {f : ContinuousMap.{u2, u1} X Y _inst_1 _inst_2} {A : DiscreteQuotient.{u2} X _inst_1} {A' : DiscreteQuotient.{u2} X _inst_1} {B : DiscreteQuotient.{u1} Y _inst_2} (cond : DiscreteQuotient.LEComap.{u2, u1} X Y _inst_1 _inst_2 f A B) (h : LE.le.{u2} (DiscreteQuotient.{u2} X _inst_1) (Preorder.toLE.{u2} (DiscreteQuotient.{u2} X _inst_1) (PartialOrder.toPreorder.{u2} (DiscreteQuotient.{u2} X _inst_1) (SemilatticeInf.toPartialOrder.{u2} (DiscreteQuotient.{u2} X _inst_1) (DiscreteQuotient.instSemilatticeInfDiscreteQuotient.{u2} X _inst_1)))) A' A) (c : Quotient.{succ u2} X (DiscreteQuotient.toSetoid.{u2} X _inst_1 A')), Eq.{succ u1} (Quotient.{succ u1} Y (DiscreteQuotient.toSetoid.{u1} Y _inst_2 B)) (DiscreteQuotient.map.{u2, u1} X Y _inst_1 _inst_2 A B f cond (DiscreteQuotient.ofLE.{u2} X _inst_1 A' A h c)) (DiscreteQuotient.map.{u2, u1} X Y _inst_1 _inst_2 A' B f (DiscreteQuotient.LEComap.mono.{u1, u2} X Y _inst_1 _inst_2 f A A' B B cond h (le_rfl.{u1} (DiscreteQuotient.{u1} Y _inst_2) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} Y _inst_2) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} Y _inst_2) (DiscreteQuotient.instSemilatticeInfDiscreteQuotient.{u1} Y _inst_2))) B)) c)
-Case conversion may be inaccurate. Consider using '#align discrete_quotient.map_of_le DiscreteQuotient.map_ofLEₓ'. -/
 @[simp]
 theorem map_ofLE (cond : LEComap f A B) (h : A' ≤ A) (c : A') :
     map f cond (ofLE h c) = map f (cond.mono h le_rfl) c := by rcases c with ⟨⟩; rfl
 #align discrete_quotient.map_of_le DiscreteQuotient.map_ofLE
 
-/- warning: discrete_quotient.map_comp_of_le -> DiscreteQuotient.map_comp_ofLE is a dubious translation:
-lean 3 declaration is
-  forall {X : Type.{u1}} {Y : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} X] [_inst_2 : TopologicalSpace.{u2} Y] {f : ContinuousMap.{u1, u2} X Y _inst_1 _inst_2} {A : DiscreteQuotient.{u1} X _inst_1} {A' : DiscreteQuotient.{u1} X _inst_1} {B : DiscreteQuotient.{u2} Y _inst_2} (cond : DiscreteQuotient.LEComap.{u1, u2} X Y _inst_1 _inst_2 f A B) (h : LE.le.{u1} (DiscreteQuotient.{u1} X _inst_1) (Preorder.toHasLe.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.semilatticeInf.{u1} X _inst_1)))) A' A), Eq.{max (succ u1) (succ u2)} ((coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) A') -> (coeSort.{succ u2, succ (succ u2)} (DiscreteQuotient.{u2} Y _inst_2) Type.{u2} (DiscreteQuotient.hasCoeToSort.{u2} Y _inst_2) B)) (Function.comp.{succ u1, succ u1, succ u2} (coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) A') (coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) A) (coeSort.{succ u2, succ (succ u2)} (DiscreteQuotient.{u2} Y _inst_2) Type.{u2} (DiscreteQuotient.hasCoeToSort.{u2} Y _inst_2) B) (DiscreteQuotient.map.{u1, u2} X Y _inst_1 _inst_2 A B f cond) (DiscreteQuotient.ofLE.{u1} X _inst_1 A' A h)) (DiscreteQuotient.map.{u1, u2} X Y _inst_1 _inst_2 A' B f (DiscreteQuotient.LEComap.mono.{u1, u2} X Y _inst_1 _inst_2 f A A' B B cond h (le_rfl.{u2} (DiscreteQuotient.{u2} Y _inst_2) (PartialOrder.toPreorder.{u2} (DiscreteQuotient.{u2} Y _inst_2) (SemilatticeInf.toPartialOrder.{u2} (DiscreteQuotient.{u2} Y _inst_2) (DiscreteQuotient.semilatticeInf.{u2} Y _inst_2))) B)))
-but is expected to have type
-  forall {X : Type.{u2}} {Y : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} X] [_inst_2 : TopologicalSpace.{u1} Y] {f : ContinuousMap.{u2, u1} X Y _inst_1 _inst_2} {A : DiscreteQuotient.{u2} X _inst_1} {A' : DiscreteQuotient.{u2} X _inst_1} {B : DiscreteQuotient.{u1} Y _inst_2} (cond : DiscreteQuotient.LEComap.{u2, u1} X Y _inst_1 _inst_2 f A B) (h : LE.le.{u2} (DiscreteQuotient.{u2} X _inst_1) (Preorder.toLE.{u2} (DiscreteQuotient.{u2} X _inst_1) (PartialOrder.toPreorder.{u2} (DiscreteQuotient.{u2} X _inst_1) (SemilatticeInf.toPartialOrder.{u2} (DiscreteQuotient.{u2} X _inst_1) (DiscreteQuotient.instSemilatticeInfDiscreteQuotient.{u2} X _inst_1)))) A' A), Eq.{max (succ u2) (succ u1)} ((Quotient.{succ u2} X (DiscreteQuotient.toSetoid.{u2} X _inst_1 A')) -> (Quotient.{succ u1} Y (DiscreteQuotient.toSetoid.{u1} Y _inst_2 B))) (Function.comp.{succ u2, succ u2, succ u1} (Quotient.{succ u2} X (DiscreteQuotient.toSetoid.{u2} X _inst_1 A')) (Quotient.{succ u2} X (DiscreteQuotient.toSetoid.{u2} X _inst_1 A)) (Quotient.{succ u1} Y (DiscreteQuotient.toSetoid.{u1} Y _inst_2 B)) (DiscreteQuotient.map.{u2, u1} X Y _inst_1 _inst_2 A B f cond) (DiscreteQuotient.ofLE.{u2} X _inst_1 A' A h)) (DiscreteQuotient.map.{u2, u1} X Y _inst_1 _inst_2 A' B f (DiscreteQuotient.LEComap.mono.{u1, u2} X Y _inst_1 _inst_2 f A A' B B cond h (le_rfl.{u1} (DiscreteQuotient.{u1} Y _inst_2) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} Y _inst_2) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} Y _inst_2) (DiscreteQuotient.instSemilatticeInfDiscreteQuotient.{u1} Y _inst_2))) B)))
-Case conversion may be inaccurate. Consider using '#align discrete_quotient.map_comp_of_le DiscreteQuotient.map_comp_ofLEₓ'. -/
 @[simp]
 theorem map_comp_ofLE (cond : LEComap f A B) (h : A' ≤ A) :
     map f cond ∘ ofLE h = map f (cond.mono h le_rfl) :=
@@ -558,12 +420,6 @@ theorem eq_of_forall_proj_eq [T2Space X] [CompactSpace X] [disc : TotallyDisconn
 #align discrete_quotient.eq_of_forall_proj_eq DiscreteQuotient.eq_of_forall_proj_eq
 -/
 
-/- warning: discrete_quotient.fiber_subset_of_le -> DiscreteQuotient.fiber_subset_ofLE is a dubious translation:
-lean 3 declaration is
-  forall {X : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} X] {A : DiscreteQuotient.{u1} X _inst_1} {B : DiscreteQuotient.{u1} X _inst_1} (h : LE.le.{u1} (DiscreteQuotient.{u1} X _inst_1) (Preorder.toHasLe.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.semilatticeInf.{u1} X _inst_1)))) A B) (a : coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) A), HasSubset.Subset.{u1} (Set.{u1} X) (Set.hasSubset.{u1} X) (Set.preimage.{u1, u1} X (coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) A) (DiscreteQuotient.proj.{u1} X _inst_1 A) (Singleton.singleton.{u1, u1} (coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) A) (Set.{u1} (coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) A)) (Set.hasSingleton.{u1} (coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) A)) a)) (Set.preimage.{u1, u1} X (coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) B) (DiscreteQuotient.proj.{u1} X _inst_1 B) (Singleton.singleton.{u1, u1} (coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) B) (Set.{u1} (coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) B)) (Set.hasSingleton.{u1} (coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) B)) (DiscreteQuotient.ofLE.{u1} X _inst_1 A B h a)))
-but is expected to have type
-  forall {X : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} X] {A : DiscreteQuotient.{u1} X _inst_1} {B : DiscreteQuotient.{u1} X _inst_1} (h : LE.le.{u1} (DiscreteQuotient.{u1} X _inst_1) (Preorder.toLE.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.instSemilatticeInfDiscreteQuotient.{u1} X _inst_1)))) A B) (a : Quotient.{succ u1} X (DiscreteQuotient.toSetoid.{u1} X _inst_1 A)), HasSubset.Subset.{u1} (Set.{u1} X) (Set.instHasSubsetSet.{u1} X) (Set.preimage.{u1, u1} X (Quotient.{succ u1} X (DiscreteQuotient.toSetoid.{u1} X _inst_1 A)) (DiscreteQuotient.proj.{u1} X _inst_1 A) (Singleton.singleton.{u1, u1} (Quotient.{succ u1} X (DiscreteQuotient.toSetoid.{u1} X _inst_1 A)) (Set.{u1} (Quotient.{succ u1} X (DiscreteQuotient.toSetoid.{u1} X _inst_1 A))) (Set.instSingletonSet.{u1} (Quotient.{succ u1} X (DiscreteQuotient.toSetoid.{u1} X _inst_1 A))) a)) (Set.preimage.{u1, u1} X (Quotient.{succ u1} X (DiscreteQuotient.toSetoid.{u1} X _inst_1 B)) (DiscreteQuotient.proj.{u1} X _inst_1 B) (Singleton.singleton.{u1, u1} (Quotient.{succ u1} X (DiscreteQuotient.toSetoid.{u1} X _inst_1 B)) (Set.{u1} (Quotient.{succ u1} X (DiscreteQuotient.toSetoid.{u1} X _inst_1 B))) (Set.instSingletonSet.{u1} (Quotient.{succ u1} X (DiscreteQuotient.toSetoid.{u1} X _inst_1 B))) (DiscreteQuotient.ofLE.{u1} X _inst_1 A B h a)))
-Case conversion may be inaccurate. Consider using '#align discrete_quotient.fiber_subset_of_le DiscreteQuotient.fiber_subset_ofLEₓ'. -/
 theorem fiber_subset_ofLE {A B : DiscreteQuotient X} (h : A ≤ B) (a : A) :
     A.proj ⁻¹' {a} ⊆ B.proj ⁻¹' {ofLE h a} :=
   by
@@ -572,12 +428,6 @@ theorem fiber_subset_ofLE {A B : DiscreteQuotient X} (h : A ≤ B) (a : A) :
   exact fun _ h' => h h'
 #align discrete_quotient.fiber_subset_of_le DiscreteQuotient.fiber_subset_ofLE
 
-/- warning: discrete_quotient.exists_of_compat -> DiscreteQuotient.exists_of_compat is a dubious translation:
-lean 3 declaration is
-  forall {X : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} X] [_inst_4 : CompactSpace.{u1} X _inst_1] (Qs : forall (Q : DiscreteQuotient.{u1} X _inst_1), coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) Q), (forall (A : DiscreteQuotient.{u1} X _inst_1) (B : DiscreteQuotient.{u1} X _inst_1) (h : LE.le.{u1} (DiscreteQuotient.{u1} X _inst_1) (Preorder.toHasLe.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.semilatticeInf.{u1} X _inst_1)))) A B), Eq.{succ u1} (coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) B) (DiscreteQuotient.ofLE.{u1} X _inst_1 A B h (Qs A)) (Qs B)) -> (Exists.{succ u1} X (fun (x : X) => forall (Q : DiscreteQuotient.{u1} X _inst_1), Eq.{succ u1} (coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) Q) (DiscreteQuotient.proj.{u1} X _inst_1 Q x) (Qs Q)))
-but is expected to have type
-  forall {X : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} X] [_inst_4 : CompactSpace.{u1} X _inst_1] (Qs : forall (Q : DiscreteQuotient.{u1} X _inst_1), Quotient.{succ u1} X (DiscreteQuotient.toSetoid.{u1} X _inst_1 Q)), (forall (A : DiscreteQuotient.{u1} X _inst_1) (B : DiscreteQuotient.{u1} X _inst_1) (h : LE.le.{u1} (DiscreteQuotient.{u1} X _inst_1) (Preorder.toLE.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.instSemilatticeInfDiscreteQuotient.{u1} X _inst_1)))) A B), Eq.{succ u1} (Quotient.{succ u1} X (DiscreteQuotient.toSetoid.{u1} X _inst_1 B)) (DiscreteQuotient.ofLE.{u1} X _inst_1 A B h (Qs A)) (Qs B)) -> (Exists.{succ u1} X (fun (x : X) => forall (Q : DiscreteQuotient.{u1} X _inst_1), Eq.{succ u1} (Quotient.{succ u1} X (DiscreteQuotient.toSetoid.{u1} X _inst_1 Q)) (DiscreteQuotient.proj.{u1} X _inst_1 Q x) (Qs Q)))
-Case conversion may be inaccurate. Consider using '#align discrete_quotient.exists_of_compat DiscreteQuotient.exists_of_compatₓ'. -/
 theorem exists_of_compat [CompactSpace X] (Qs : ∀ Q : DiscreteQuotient X, Q)
     (compat : ∀ (A B : DiscreteQuotient X) (h : A ≤ B), ofLE h (Qs _) = Qs _) :
     ∃ x : X, ∀ Q : DiscreteQuotient X, Q.proj x = Qs _ :=
@@ -621,12 +471,6 @@ def lift : LocallyConstant f.DiscreteQuotient α :=
 #align locally_constant.lift LocallyConstant.lift
 -/
 
-/- warning: locally_constant.lift_comp_proj -> LocallyConstant.lift_comp_proj is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {X : Type.{u2}} [_inst_1 : TopologicalSpace.{u2} X] (f : LocallyConstant.{u2, u1} X α _inst_1), Eq.{max (succ u2) (succ u1)} (X -> α) (Function.comp.{succ u2, succ u2, succ u1} X (coeSort.{succ u2, succ (succ u2)} (DiscreteQuotient.{u2} X _inst_1) Type.{u2} (DiscreteQuotient.hasCoeToSort.{u2} X _inst_1) (LocallyConstant.discreteQuotient.{u1, u2} α X _inst_1 f)) α (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (LocallyConstant.{u2, u1} (coeSort.{succ u2, succ (succ u2)} (DiscreteQuotient.{u2} X _inst_1) Type.{u2} (DiscreteQuotient.hasCoeToSort.{u2} X _inst_1) (LocallyConstant.discreteQuotient.{u1, u2} α X _inst_1 f)) α (DiscreteQuotient.topologicalSpace.{u2} X _inst_1 (LocallyConstant.discreteQuotient.{u1, u2} α X _inst_1 f))) (fun (_x : LocallyConstant.{u2, u1} (coeSort.{succ u2, succ (succ u2)} (DiscreteQuotient.{u2} X _inst_1) Type.{u2} (DiscreteQuotient.hasCoeToSort.{u2} X _inst_1) (LocallyConstant.discreteQuotient.{u1, u2} α X _inst_1 f)) α (DiscreteQuotient.topologicalSpace.{u2} X _inst_1 (LocallyConstant.discreteQuotient.{u1, u2} α X _inst_1 f))) => (coeSort.{succ u2, succ (succ u2)} (DiscreteQuotient.{u2} X _inst_1) Type.{u2} (DiscreteQuotient.hasCoeToSort.{u2} X _inst_1) (LocallyConstant.discreteQuotient.{u1, u2} α X _inst_1 f)) -> α) (LocallyConstant.hasCoeToFun.{u2, u1} (coeSort.{succ u2, succ (succ u2)} (DiscreteQuotient.{u2} X _inst_1) Type.{u2} (DiscreteQuotient.hasCoeToSort.{u2} X _inst_1) (LocallyConstant.discreteQuotient.{u1, u2} α X _inst_1 f)) α (DiscreteQuotient.topologicalSpace.{u2} X _inst_1 (LocallyConstant.discreteQuotient.{u1, u2} α X _inst_1 f))) (LocallyConstant.lift.{u1, u2} α X _inst_1 f)) (DiscreteQuotient.proj.{u2} X _inst_1 (LocallyConstant.discreteQuotient.{u1, u2} α X _inst_1 f))) (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (LocallyConstant.{u2, u1} X α _inst_1) (fun (_x : LocallyConstant.{u2, u1} X α _inst_1) => X -> α) (LocallyConstant.hasCoeToFun.{u2, u1} X α _inst_1) f)
-but is expected to have type
-  forall {α : Type.{u2}} {X : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} X] (f : LocallyConstant.{u1, u2} X α _inst_1), Eq.{max (succ u2) (succ u1)} (X -> α) (Function.comp.{succ u1, succ u1, succ u2} X (Quotient.{succ u1} X (DiscreteQuotient.toSetoid.{u1} X _inst_1 (LocallyConstant.discreteQuotient.{u2, u1} α X _inst_1 f))) α (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (LocallyConstant.{u1, u2} (Quotient.{succ u1} X (DiscreteQuotient.toSetoid.{u1} X _inst_1 (LocallyConstant.discreteQuotient.{u2, u1} α X _inst_1 f))) α (DiscreteQuotient.instTopologicalSpaceQuotientToSetoid.{u1} X _inst_1 (LocallyConstant.discreteQuotient.{u2, u1} α X _inst_1 f))) (Quotient.{succ u1} X (DiscreteQuotient.toSetoid.{u1} X _inst_1 (LocallyConstant.discreteQuotient.{u2, u1} α X _inst_1 f))) (fun (_x : Quotient.{succ u1} X (DiscreteQuotient.toSetoid.{u1} X _inst_1 (LocallyConstant.discreteQuotient.{u2, u1} α X _inst_1 f))) => (fun (x._@.Mathlib.Topology.LocallyConstant.Basic._hyg.5691 : Quotient.{succ u1} X (DiscreteQuotient.toSetoid.{u1} X _inst_1 (LocallyConstant.discreteQuotient.{u2, u1} α X _inst_1 f))) => α) _x) (LocallyConstant.instFunLikeLocallyConstant.{u1, u2} (Quotient.{succ u1} X (DiscreteQuotient.toSetoid.{u1} X _inst_1 (LocallyConstant.discreteQuotient.{u2, u1} α X _inst_1 f))) α (DiscreteQuotient.instTopologicalSpaceQuotientToSetoid.{u1} X _inst_1 (LocallyConstant.discreteQuotient.{u2, u1} α X _inst_1 f))) (LocallyConstant.lift.{u2, u1} α X _inst_1 f)) (DiscreteQuotient.proj.{u1} X _inst_1 (LocallyConstant.discreteQuotient.{u2, u1} α X _inst_1 f))) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (LocallyConstant.{u1, u2} X α _inst_1) X (fun (_x : X) => (fun (x._@.Mathlib.Topology.LocallyConstant.Basic._hyg.5691 : X) => α) _x) (LocallyConstant.instFunLikeLocallyConstant.{u1, u2} X α _inst_1) f)
-Case conversion may be inaccurate. Consider using '#align locally_constant.lift_comp_proj LocallyConstant.lift_comp_projₓ'. -/
 @[simp]
 theorem lift_comp_proj : f.lift ∘ f.DiscreteQuotient.proj = f := by ext; rfl
 #align locally_constant.lift_comp_proj LocallyConstant.lift_comp_proj
Diff
@@ -155,9 +155,7 @@ theorem proj_continuous : Continuous S.proj :=
 
 instance : DiscreteTopology S :=
   singletons_open_iff_discrete.1 <|
-    S.proj_surjective.forall.2 fun x =>
-      by
-      rw [← S.proj_quotient_map.is_open_preimage, fiber_eq]
+    S.proj_surjective.forall.2 fun x => by rw [← S.proj_quotient_map.is_open_preimage, fiber_eq];
       exact S.is_open_set_of_rel _
 
 #print DiscreteQuotient.proj_isLocallyConstant /-
@@ -185,9 +183,7 @@ theorem isClosed_preimage (A : Set S) : IsClosed (S.proj ⁻¹' A) :=
 -/
 
 #print DiscreteQuotient.isClopen_setOf_rel /-
-theorem isClopen_setOf_rel (x : X) : IsClopen (setOf (S.Rel x)) :=
-  by
-  rw [← fiber_eq]
+theorem isClopen_setOf_rel (x : X) : IsClopen (setOf (S.Rel x)) := by rw [← fiber_eq];
   apply is_clopen_preimage
 #align discrete_quotient.is_clopen_set_of_rel DiscreteQuotient.isClopen_setOf_rel
 -/
@@ -230,10 +226,7 @@ def comap (S : DiscreteQuotient Y) : DiscreteQuotient X
 
 #print DiscreteQuotient.comap_id /-
 @[simp]
-theorem comap_id : S.comap (ContinuousMap.id X) = S :=
-  by
-  ext
-  rfl
+theorem comap_id : S.comap (ContinuousMap.id X) = S := by ext; rfl
 #align discrete_quotient.comap_id DiscreteQuotient.comap_id
 -/
 
@@ -277,9 +270,7 @@ def ofLE (h : A ≤ B) : A → B :=
 
 #print DiscreteQuotient.ofLE_refl /-
 @[simp]
-theorem ofLE_refl : ofLE (le_refl A) = id := by
-  ext ⟨⟩
-  rfl
+theorem ofLE_refl : ofLE (le_refl A) = id := by ext ⟨⟩; rfl
 #align discrete_quotient.of_le_refl DiscreteQuotient.ofLE_refl
 -/
 
@@ -296,9 +287,7 @@ but is expected to have type
 Case conversion may be inaccurate. Consider using '#align discrete_quotient.of_le_of_le DiscreteQuotient.ofLE_ofLEₓ'. -/
 @[simp]
 theorem ofLE_ofLE (h₁ : A ≤ B) (h₂ : B ≤ C) (x : A) : ofLE h₂ (ofLE h₁ x) = ofLE (h₁.trans h₂) x :=
-  by
-  rcases x with ⟨⟩
-  rfl
+  by rcases x with ⟨⟩; rfl
 #align discrete_quotient.of_le_of_le DiscreteQuotient.ofLE_ofLE
 
 /- warning: discrete_quotient.of_le_comp_of_le -> DiscreteQuotient.ofLE_comp_ofLE is a dubious translation:
@@ -507,10 +496,7 @@ but is expected to have type
 Case conversion may be inaccurate. Consider using '#align discrete_quotient.map_comp DiscreteQuotient.map_compₓ'. -/
 @[simp]
 theorem map_comp (h1 : LEComap g B C) (h2 : LEComap f A B) :
-    map (g.comp f) (h1.comp h2) = map g h1 ∘ map f h2 :=
-  by
-  ext ⟨⟩
-  rfl
+    map (g.comp f) (h1.comp h2) = map g h1 ∘ map f h2 := by ext ⟨⟩; rfl
 #align discrete_quotient.map_comp DiscreteQuotient.map_comp
 
 /- warning: discrete_quotient.of_le_map -> DiscreteQuotient.ofLE_map is a dubious translation:
@@ -521,10 +507,7 @@ but is expected to have type
 Case conversion may be inaccurate. Consider using '#align discrete_quotient.of_le_map DiscreteQuotient.ofLE_mapₓ'. -/
 @[simp]
 theorem ofLE_map (cond : LEComap f A B) (h : B ≤ B') (a : A) :
-    ofLE h (map f cond a) = map f (cond.mono le_rfl h) a :=
-  by
-  rcases a with ⟨⟩
-  rfl
+    ofLE h (map f cond a) = map f (cond.mono le_rfl h) a := by rcases a with ⟨⟩; rfl
 #align discrete_quotient.of_le_map DiscreteQuotient.ofLE_map
 
 /- warning: discrete_quotient.of_le_comp_map -> DiscreteQuotient.ofLE_comp_map is a dubious translation:
@@ -547,10 +530,7 @@ but is expected to have type
 Case conversion may be inaccurate. Consider using '#align discrete_quotient.map_of_le DiscreteQuotient.map_ofLEₓ'. -/
 @[simp]
 theorem map_ofLE (cond : LEComap f A B) (h : A' ≤ A) (c : A') :
-    map f cond (ofLE h c) = map f (cond.mono h le_rfl) c :=
-  by
-  rcases c with ⟨⟩
-  rfl
+    map f cond (ofLE h c) = map f (cond.mono h le_rfl) c := by rcases c with ⟨⟩; rfl
 #align discrete_quotient.map_of_le DiscreteQuotient.map_ofLE
 
 /- warning: discrete_quotient.map_comp_of_le -> DiscreteQuotient.map_comp_ofLE is a dubious translation:
@@ -648,10 +628,7 @@ but is expected to have type
   forall {α : Type.{u2}} {X : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} X] (f : LocallyConstant.{u1, u2} X α _inst_1), Eq.{max (succ u2) (succ u1)} (X -> α) (Function.comp.{succ u1, succ u1, succ u2} X (Quotient.{succ u1} X (DiscreteQuotient.toSetoid.{u1} X _inst_1 (LocallyConstant.discreteQuotient.{u2, u1} α X _inst_1 f))) α (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (LocallyConstant.{u1, u2} (Quotient.{succ u1} X (DiscreteQuotient.toSetoid.{u1} X _inst_1 (LocallyConstant.discreteQuotient.{u2, u1} α X _inst_1 f))) α (DiscreteQuotient.instTopologicalSpaceQuotientToSetoid.{u1} X _inst_1 (LocallyConstant.discreteQuotient.{u2, u1} α X _inst_1 f))) (Quotient.{succ u1} X (DiscreteQuotient.toSetoid.{u1} X _inst_1 (LocallyConstant.discreteQuotient.{u2, u1} α X _inst_1 f))) (fun (_x : Quotient.{succ u1} X (DiscreteQuotient.toSetoid.{u1} X _inst_1 (LocallyConstant.discreteQuotient.{u2, u1} α X _inst_1 f))) => (fun (x._@.Mathlib.Topology.LocallyConstant.Basic._hyg.5691 : Quotient.{succ u1} X (DiscreteQuotient.toSetoid.{u1} X _inst_1 (LocallyConstant.discreteQuotient.{u2, u1} α X _inst_1 f))) => α) _x) (LocallyConstant.instFunLikeLocallyConstant.{u1, u2} (Quotient.{succ u1} X (DiscreteQuotient.toSetoid.{u1} X _inst_1 (LocallyConstant.discreteQuotient.{u2, u1} α X _inst_1 f))) α (DiscreteQuotient.instTopologicalSpaceQuotientToSetoid.{u1} X _inst_1 (LocallyConstant.discreteQuotient.{u2, u1} α X _inst_1 f))) (LocallyConstant.lift.{u2, u1} α X _inst_1 f)) (DiscreteQuotient.proj.{u1} X _inst_1 (LocallyConstant.discreteQuotient.{u2, u1} α X _inst_1 f))) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (LocallyConstant.{u1, u2} X α _inst_1) X (fun (_x : X) => (fun (x._@.Mathlib.Topology.LocallyConstant.Basic._hyg.5691 : X) => α) _x) (LocallyConstant.instFunLikeLocallyConstant.{u1, u2} X α _inst_1) f)
 Case conversion may be inaccurate. Consider using '#align locally_constant.lift_comp_proj LocallyConstant.lift_comp_projₓ'. -/
 @[simp]
-theorem lift_comp_proj : f.lift ∘ f.DiscreteQuotient.proj = f :=
-  by
-  ext
-  rfl
+theorem lift_comp_proj : f.lift ∘ f.DiscreteQuotient.proj = f := by ext; rfl
 #align locally_constant.lift_comp_proj LocallyConstant.lift_comp_proj
 
 end LocallyConstant
Diff
@@ -250,7 +250,7 @@ theorem comap_comp (S : DiscreteQuotient Z) : S.comap (g.comp f) = (S.comap g).c
 
 /- warning: discrete_quotient.comap_mono -> DiscreteQuotient.comap_mono is a dubious translation:
 lean 3 declaration is
-  forall {X : Type.{u1}} {Y : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} X] [_inst_2 : TopologicalSpace.{u2} Y] (f : ContinuousMap.{u1, u2} X Y _inst_1 _inst_2) {A : DiscreteQuotient.{u2} Y _inst_2} {B : DiscreteQuotient.{u2} Y _inst_2}, (LE.le.{u2} (DiscreteQuotient.{u2} Y _inst_2) (Preorder.toLE.{u2} (DiscreteQuotient.{u2} Y _inst_2) (PartialOrder.toPreorder.{u2} (DiscreteQuotient.{u2} Y _inst_2) (SemilatticeInf.toPartialOrder.{u2} (DiscreteQuotient.{u2} Y _inst_2) (DiscreteQuotient.semilatticeInf.{u2} Y _inst_2)))) A B) -> (LE.le.{u1} (DiscreteQuotient.{u1} X _inst_1) (Preorder.toLE.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.semilatticeInf.{u1} X _inst_1)))) (DiscreteQuotient.comap.{u1, u2} X Y _inst_1 _inst_2 f A) (DiscreteQuotient.comap.{u1, u2} X Y _inst_1 _inst_2 f B))
+  forall {X : Type.{u1}} {Y : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} X] [_inst_2 : TopologicalSpace.{u2} Y] (f : ContinuousMap.{u1, u2} X Y _inst_1 _inst_2) {A : DiscreteQuotient.{u2} Y _inst_2} {B : DiscreteQuotient.{u2} Y _inst_2}, (LE.le.{u2} (DiscreteQuotient.{u2} Y _inst_2) (Preorder.toHasLe.{u2} (DiscreteQuotient.{u2} Y _inst_2) (PartialOrder.toPreorder.{u2} (DiscreteQuotient.{u2} Y _inst_2) (SemilatticeInf.toPartialOrder.{u2} (DiscreteQuotient.{u2} Y _inst_2) (DiscreteQuotient.semilatticeInf.{u2} Y _inst_2)))) A B) -> (LE.le.{u1} (DiscreteQuotient.{u1} X _inst_1) (Preorder.toHasLe.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.semilatticeInf.{u1} X _inst_1)))) (DiscreteQuotient.comap.{u1, u2} X Y _inst_1 _inst_2 f A) (DiscreteQuotient.comap.{u1, u2} X Y _inst_1 _inst_2 f B))
 but is expected to have type
   forall {X : Type.{u1}} {Y : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} X] [_inst_2 : TopologicalSpace.{u2} Y] (f : ContinuousMap.{u1, u2} X Y _inst_1 _inst_2) {A : DiscreteQuotient.{u2} Y _inst_2} {B : DiscreteQuotient.{u2} Y _inst_2}, (LE.le.{u2} (DiscreteQuotient.{u2} Y _inst_2) (Preorder.toLE.{u2} (DiscreteQuotient.{u2} Y _inst_2) (PartialOrder.toPreorder.{u2} (DiscreteQuotient.{u2} Y _inst_2) (SemilatticeInf.toPartialOrder.{u2} (DiscreteQuotient.{u2} Y _inst_2) (DiscreteQuotient.instSemilatticeInfDiscreteQuotient.{u2} Y _inst_2)))) A B) -> (LE.le.{u1} (DiscreteQuotient.{u1} X _inst_1) (Preorder.toLE.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.instSemilatticeInfDiscreteQuotient.{u1} X _inst_1)))) (DiscreteQuotient.comap.{u1, u2} X Y _inst_1 _inst_2 f A) (DiscreteQuotient.comap.{u1, u2} X Y _inst_1 _inst_2 f B))
 Case conversion may be inaccurate. Consider using '#align discrete_quotient.comap_mono DiscreteQuotient.comap_monoₓ'. -/
@@ -266,7 +266,7 @@ variable {A B C : DiscreteQuotient X}
 
 /- warning: discrete_quotient.of_le -> DiscreteQuotient.ofLE is a dubious translation:
 lean 3 declaration is
-  forall {X : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} X] {A : DiscreteQuotient.{u1} X _inst_1} {B : DiscreteQuotient.{u1} X _inst_1}, (LE.le.{u1} (DiscreteQuotient.{u1} X _inst_1) (Preorder.toLE.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.semilatticeInf.{u1} X _inst_1)))) A B) -> (coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) A) -> (coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) B)
+  forall {X : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} X] {A : DiscreteQuotient.{u1} X _inst_1} {B : DiscreteQuotient.{u1} X _inst_1}, (LE.le.{u1} (DiscreteQuotient.{u1} X _inst_1) (Preorder.toHasLe.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.semilatticeInf.{u1} X _inst_1)))) A B) -> (coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) A) -> (coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) B)
 but is expected to have type
   forall {X : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} X] {A : DiscreteQuotient.{u1} X _inst_1} {B : DiscreteQuotient.{u1} X _inst_1}, (LE.le.{u1} (DiscreteQuotient.{u1} X _inst_1) (Preorder.toLE.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.instSemilatticeInfDiscreteQuotient.{u1} X _inst_1)))) A B) -> (Quotient.{succ u1} X (DiscreteQuotient.toSetoid.{u1} X _inst_1 A)) -> (Quotient.{succ u1} X (DiscreteQuotient.toSetoid.{u1} X _inst_1 B))
 Case conversion may be inaccurate. Consider using '#align discrete_quotient.of_le DiscreteQuotient.ofLEₓ'. -/
@@ -290,7 +290,7 @@ theorem ofLE_refl_apply (a : A) : ofLE (le_refl A) a = a := by simp
 
 /- warning: discrete_quotient.of_le_of_le -> DiscreteQuotient.ofLE_ofLE is a dubious translation:
 lean 3 declaration is
-  forall {X : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} X] {A : DiscreteQuotient.{u1} X _inst_1} {B : DiscreteQuotient.{u1} X _inst_1} {C : DiscreteQuotient.{u1} X _inst_1} (h₁ : LE.le.{u1} (DiscreteQuotient.{u1} X _inst_1) (Preorder.toLE.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.semilatticeInf.{u1} X _inst_1)))) A B) (h₂ : LE.le.{u1} (DiscreteQuotient.{u1} X _inst_1) (Preorder.toLE.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.semilatticeInf.{u1} X _inst_1)))) B C) (x : coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) A), Eq.{succ u1} (coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) C) (DiscreteQuotient.ofLE.{u1} X _inst_1 B C h₂ (DiscreteQuotient.ofLE.{u1} X _inst_1 A B h₁ x)) (DiscreteQuotient.ofLE.{u1} X _inst_1 A C (LE.le.trans.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.semilatticeInf.{u1} X _inst_1))) A B C h₁ h₂) x)
+  forall {X : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} X] {A : DiscreteQuotient.{u1} X _inst_1} {B : DiscreteQuotient.{u1} X _inst_1} {C : DiscreteQuotient.{u1} X _inst_1} (h₁ : LE.le.{u1} (DiscreteQuotient.{u1} X _inst_1) (Preorder.toHasLe.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.semilatticeInf.{u1} X _inst_1)))) A B) (h₂ : LE.le.{u1} (DiscreteQuotient.{u1} X _inst_1) (Preorder.toHasLe.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.semilatticeInf.{u1} X _inst_1)))) B C) (x : coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) A), Eq.{succ u1} (coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) C) (DiscreteQuotient.ofLE.{u1} X _inst_1 B C h₂ (DiscreteQuotient.ofLE.{u1} X _inst_1 A B h₁ x)) (DiscreteQuotient.ofLE.{u1} X _inst_1 A C (LE.le.trans.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.semilatticeInf.{u1} X _inst_1))) A B C h₁ h₂) x)
 but is expected to have type
   forall {X : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} X] {A : DiscreteQuotient.{u1} X _inst_1} {B : DiscreteQuotient.{u1} X _inst_1} {C : DiscreteQuotient.{u1} X _inst_1} (h₁ : LE.le.{u1} (DiscreteQuotient.{u1} X _inst_1) (Preorder.toLE.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.instSemilatticeInfDiscreteQuotient.{u1} X _inst_1)))) A B) (h₂ : LE.le.{u1} (DiscreteQuotient.{u1} X _inst_1) (Preorder.toLE.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.instSemilatticeInfDiscreteQuotient.{u1} X _inst_1)))) B C) (x : Quotient.{succ u1} X (DiscreteQuotient.toSetoid.{u1} X _inst_1 A)), Eq.{succ u1} (Quotient.{succ u1} X (DiscreteQuotient.toSetoid.{u1} X _inst_1 C)) (DiscreteQuotient.ofLE.{u1} X _inst_1 B C h₂ (DiscreteQuotient.ofLE.{u1} X _inst_1 A B h₁ x)) (DiscreteQuotient.ofLE.{u1} X _inst_1 A C (LE.le.trans.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.instSemilatticeInfDiscreteQuotient.{u1} X _inst_1))) A B C h₁ h₂) x)
 Case conversion may be inaccurate. Consider using '#align discrete_quotient.of_le_of_le DiscreteQuotient.ofLE_ofLEₓ'. -/
@@ -303,7 +303,7 @@ theorem ofLE_ofLE (h₁ : A ≤ B) (h₂ : B ≤ C) (x : A) : ofLE h₂ (ofLE h
 
 /- warning: discrete_quotient.of_le_comp_of_le -> DiscreteQuotient.ofLE_comp_ofLE is a dubious translation:
 lean 3 declaration is
-  forall {X : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} X] {A : DiscreteQuotient.{u1} X _inst_1} {B : DiscreteQuotient.{u1} X _inst_1} {C : DiscreteQuotient.{u1} X _inst_1} (h₁ : LE.le.{u1} (DiscreteQuotient.{u1} X _inst_1) (Preorder.toLE.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.semilatticeInf.{u1} X _inst_1)))) A B) (h₂ : LE.le.{u1} (DiscreteQuotient.{u1} X _inst_1) (Preorder.toLE.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.semilatticeInf.{u1} X _inst_1)))) B C), Eq.{succ u1} ((coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) A) -> (coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) C)) (Function.comp.{succ u1, succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) A) (coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) B) (coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) C) (DiscreteQuotient.ofLE.{u1} X _inst_1 B C h₂) (DiscreteQuotient.ofLE.{u1} X _inst_1 A B h₁)) (DiscreteQuotient.ofLE.{u1} X _inst_1 A C (le_trans.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.semilatticeInf.{u1} X _inst_1))) A B C h₁ h₂))
+  forall {X : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} X] {A : DiscreteQuotient.{u1} X _inst_1} {B : DiscreteQuotient.{u1} X _inst_1} {C : DiscreteQuotient.{u1} X _inst_1} (h₁ : LE.le.{u1} (DiscreteQuotient.{u1} X _inst_1) (Preorder.toHasLe.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.semilatticeInf.{u1} X _inst_1)))) A B) (h₂ : LE.le.{u1} (DiscreteQuotient.{u1} X _inst_1) (Preorder.toHasLe.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.semilatticeInf.{u1} X _inst_1)))) B C), Eq.{succ u1} ((coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) A) -> (coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) C)) (Function.comp.{succ u1, succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) A) (coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) B) (coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) C) (DiscreteQuotient.ofLE.{u1} X _inst_1 B C h₂) (DiscreteQuotient.ofLE.{u1} X _inst_1 A B h₁)) (DiscreteQuotient.ofLE.{u1} X _inst_1 A C (le_trans.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.semilatticeInf.{u1} X _inst_1))) A B C h₁ h₂))
 but is expected to have type
   forall {X : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} X] {A : DiscreteQuotient.{u1} X _inst_1} {B : DiscreteQuotient.{u1} X _inst_1} {C : DiscreteQuotient.{u1} X _inst_1} (h₁ : LE.le.{u1} (DiscreteQuotient.{u1} X _inst_1) (Preorder.toLE.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.instSemilatticeInfDiscreteQuotient.{u1} X _inst_1)))) A B) (h₂ : LE.le.{u1} (DiscreteQuotient.{u1} X _inst_1) (Preorder.toLE.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.instSemilatticeInfDiscreteQuotient.{u1} X _inst_1)))) B C), Eq.{succ u1} ((Quotient.{succ u1} X (DiscreteQuotient.toSetoid.{u1} X _inst_1 A)) -> (Quotient.{succ u1} X (DiscreteQuotient.toSetoid.{u1} X _inst_1 C))) (Function.comp.{succ u1, succ u1, succ u1} (Quotient.{succ u1} X (DiscreteQuotient.toSetoid.{u1} X _inst_1 A)) (Quotient.{succ u1} X (DiscreteQuotient.toSetoid.{u1} X _inst_1 B)) (Quotient.{succ u1} X (DiscreteQuotient.toSetoid.{u1} X _inst_1 C)) (DiscreteQuotient.ofLE.{u1} X _inst_1 B C h₂) (DiscreteQuotient.ofLE.{u1} X _inst_1 A B h₁)) (DiscreteQuotient.ofLE.{u1} X _inst_1 A C (le_trans.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.instSemilatticeInfDiscreteQuotient.{u1} X _inst_1))) A B C h₁ h₂))
 Case conversion may be inaccurate. Consider using '#align discrete_quotient.of_le_comp_of_le DiscreteQuotient.ofLE_comp_ofLEₓ'. -/
@@ -314,7 +314,7 @@ theorem ofLE_comp_ofLE (h₁ : A ≤ B) (h₂ : B ≤ C) : ofLE h₂ ∘ ofLE h
 
 /- warning: discrete_quotient.of_le_continuous -> DiscreteQuotient.ofLE_continuous is a dubious translation:
 lean 3 declaration is
-  forall {X : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} X] {A : DiscreteQuotient.{u1} X _inst_1} {B : DiscreteQuotient.{u1} X _inst_1} (h : LE.le.{u1} (DiscreteQuotient.{u1} X _inst_1) (Preorder.toLE.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.semilatticeInf.{u1} X _inst_1)))) A B), Continuous.{u1, u1} (coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) A) (coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) B) (DiscreteQuotient.topologicalSpace.{u1} X _inst_1 A) (DiscreteQuotient.topologicalSpace.{u1} X _inst_1 B) (DiscreteQuotient.ofLE.{u1} X _inst_1 A B h)
+  forall {X : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} X] {A : DiscreteQuotient.{u1} X _inst_1} {B : DiscreteQuotient.{u1} X _inst_1} (h : LE.le.{u1} (DiscreteQuotient.{u1} X _inst_1) (Preorder.toHasLe.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.semilatticeInf.{u1} X _inst_1)))) A B), Continuous.{u1, u1} (coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) A) (coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) B) (DiscreteQuotient.topologicalSpace.{u1} X _inst_1 A) (DiscreteQuotient.topologicalSpace.{u1} X _inst_1 B) (DiscreteQuotient.ofLE.{u1} X _inst_1 A B h)
 but is expected to have type
   forall {X : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} X] {A : DiscreteQuotient.{u1} X _inst_1} {B : DiscreteQuotient.{u1} X _inst_1} (h : LE.le.{u1} (DiscreteQuotient.{u1} X _inst_1) (Preorder.toLE.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.instSemilatticeInfDiscreteQuotient.{u1} X _inst_1)))) A B), Continuous.{u1, u1} (Quotient.{succ u1} X (DiscreteQuotient.toSetoid.{u1} X _inst_1 A)) (Quotient.{succ u1} X (DiscreteQuotient.toSetoid.{u1} X _inst_1 B)) (DiscreteQuotient.instTopologicalSpaceQuotientToSetoid.{u1} X _inst_1 A) (DiscreteQuotient.instTopologicalSpaceQuotientToSetoid.{u1} X _inst_1 B) (DiscreteQuotient.ofLE.{u1} X _inst_1 A B h)
 Case conversion may be inaccurate. Consider using '#align discrete_quotient.of_le_continuous DiscreteQuotient.ofLE_continuousₓ'. -/
@@ -324,7 +324,7 @@ theorem ofLE_continuous (h : A ≤ B) : Continuous (ofLE h) :=
 
 /- warning: discrete_quotient.of_le_proj -> DiscreteQuotient.ofLE_proj is a dubious translation:
 lean 3 declaration is
-  forall {X : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} X] {A : DiscreteQuotient.{u1} X _inst_1} {B : DiscreteQuotient.{u1} X _inst_1} (h : LE.le.{u1} (DiscreteQuotient.{u1} X _inst_1) (Preorder.toLE.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.semilatticeInf.{u1} X _inst_1)))) A B) (x : X), Eq.{succ u1} (coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) B) (DiscreteQuotient.ofLE.{u1} X _inst_1 A B h (DiscreteQuotient.proj.{u1} X _inst_1 A x)) (DiscreteQuotient.proj.{u1} X _inst_1 B x)
+  forall {X : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} X] {A : DiscreteQuotient.{u1} X _inst_1} {B : DiscreteQuotient.{u1} X _inst_1} (h : LE.le.{u1} (DiscreteQuotient.{u1} X _inst_1) (Preorder.toHasLe.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.semilatticeInf.{u1} X _inst_1)))) A B) (x : X), Eq.{succ u1} (coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) B) (DiscreteQuotient.ofLE.{u1} X _inst_1 A B h (DiscreteQuotient.proj.{u1} X _inst_1 A x)) (DiscreteQuotient.proj.{u1} X _inst_1 B x)
 but is expected to have type
   forall {X : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} X] {A : DiscreteQuotient.{u1} X _inst_1} {B : DiscreteQuotient.{u1} X _inst_1} (h : LE.le.{u1} (DiscreteQuotient.{u1} X _inst_1) (Preorder.toLE.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.instSemilatticeInfDiscreteQuotient.{u1} X _inst_1)))) A B) (x : X), Eq.{succ u1} (Quotient.{succ u1} X (DiscreteQuotient.toSetoid.{u1} X _inst_1 B)) (DiscreteQuotient.ofLE.{u1} X _inst_1 A B h (DiscreteQuotient.proj.{u1} X _inst_1 A x)) (DiscreteQuotient.proj.{u1} X _inst_1 B x)
 Case conversion may be inaccurate. Consider using '#align discrete_quotient.of_le_proj DiscreteQuotient.ofLE_projₓ'. -/
@@ -335,7 +335,7 @@ theorem ofLE_proj (h : A ≤ B) (x : X) : ofLE h (A.proj x) = B.proj x :=
 
 /- warning: discrete_quotient.of_le_comp_proj -> DiscreteQuotient.ofLE_comp_proj is a dubious translation:
 lean 3 declaration is
-  forall {X : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} X] {A : DiscreteQuotient.{u1} X _inst_1} {B : DiscreteQuotient.{u1} X _inst_1} (h : LE.le.{u1} (DiscreteQuotient.{u1} X _inst_1) (Preorder.toLE.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.semilatticeInf.{u1} X _inst_1)))) A B), Eq.{succ u1} (X -> (coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) B)) (Function.comp.{succ u1, succ u1, succ u1} X (coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) A) (coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) B) (DiscreteQuotient.ofLE.{u1} X _inst_1 A B h) (DiscreteQuotient.proj.{u1} X _inst_1 A)) (DiscreteQuotient.proj.{u1} X _inst_1 B)
+  forall {X : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} X] {A : DiscreteQuotient.{u1} X _inst_1} {B : DiscreteQuotient.{u1} X _inst_1} (h : LE.le.{u1} (DiscreteQuotient.{u1} X _inst_1) (Preorder.toHasLe.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.semilatticeInf.{u1} X _inst_1)))) A B), Eq.{succ u1} (X -> (coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) B)) (Function.comp.{succ u1, succ u1, succ u1} X (coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) A) (coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) B) (DiscreteQuotient.ofLE.{u1} X _inst_1 A B h) (DiscreteQuotient.proj.{u1} X _inst_1 A)) (DiscreteQuotient.proj.{u1} X _inst_1 B)
 but is expected to have type
   forall {X : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} X] {A : DiscreteQuotient.{u1} X _inst_1} {B : DiscreteQuotient.{u1} X _inst_1} (h : LE.le.{u1} (DiscreteQuotient.{u1} X _inst_1) (Preorder.toLE.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.instSemilatticeInfDiscreteQuotient.{u1} X _inst_1)))) A B), Eq.{succ u1} (X -> (Quotient.{succ u1} X (DiscreteQuotient.toSetoid.{u1} X _inst_1 B))) (Function.comp.{succ u1, succ u1, succ u1} X (Quotient.{succ u1} X (DiscreteQuotient.toSetoid.{u1} X _inst_1 A)) (Quotient.{succ u1} X (DiscreteQuotient.toSetoid.{u1} X _inst_1 B)) (DiscreteQuotient.ofLE.{u1} X _inst_1 A B h) (DiscreteQuotient.proj.{u1} X _inst_1 A)) (DiscreteQuotient.proj.{u1} X _inst_1 B)
 Case conversion may be inaccurate. Consider using '#align discrete_quotient.of_le_comp_proj DiscreteQuotient.ofLE_comp_projₓ'. -/
@@ -366,7 +366,7 @@ instance [LocallyConnectedSpace X] : OrderBot (DiscreteQuotient X)
 
 /- warning: discrete_quotient.proj_bot_eq -> DiscreteQuotient.proj_bot_eq is a dubious translation:
 lean 3 declaration is
-  forall {X : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} X] [_inst_4 : LocallyConnectedSpace.{u1} X _inst_1] {x : X} {y : X}, Iff (Eq.{succ u1} (coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) (Bot.bot.{u1} (DiscreteQuotient.{u1} X _inst_1) (OrderBot.toHasBot.{u1} (DiscreteQuotient.{u1} X _inst_1) (Preorder.toLE.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.semilatticeInf.{u1} X _inst_1)))) (DiscreteQuotient.orderBot.{u1} X _inst_1 _inst_4)))) (DiscreteQuotient.proj.{u1} X _inst_1 (Bot.bot.{u1} (DiscreteQuotient.{u1} X _inst_1) (OrderBot.toHasBot.{u1} (DiscreteQuotient.{u1} X _inst_1) (Preorder.toLE.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.semilatticeInf.{u1} X _inst_1)))) (DiscreteQuotient.orderBot.{u1} X _inst_1 _inst_4))) x) (DiscreteQuotient.proj.{u1} X _inst_1 (Bot.bot.{u1} (DiscreteQuotient.{u1} X _inst_1) (OrderBot.toHasBot.{u1} (DiscreteQuotient.{u1} X _inst_1) (Preorder.toLE.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.semilatticeInf.{u1} X _inst_1)))) (DiscreteQuotient.orderBot.{u1} X _inst_1 _inst_4))) y)) (Eq.{succ u1} (Set.{u1} X) (connectedComponent.{u1} X _inst_1 x) (connectedComponent.{u1} X _inst_1 y))
+  forall {X : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} X] [_inst_4 : LocallyConnectedSpace.{u1} X _inst_1] {x : X} {y : X}, Iff (Eq.{succ u1} (coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) (Bot.bot.{u1} (DiscreteQuotient.{u1} X _inst_1) (OrderBot.toHasBot.{u1} (DiscreteQuotient.{u1} X _inst_1) (Preorder.toHasLe.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.semilatticeInf.{u1} X _inst_1)))) (DiscreteQuotient.orderBot.{u1} X _inst_1 _inst_4)))) (DiscreteQuotient.proj.{u1} X _inst_1 (Bot.bot.{u1} (DiscreteQuotient.{u1} X _inst_1) (OrderBot.toHasBot.{u1} (DiscreteQuotient.{u1} X _inst_1) (Preorder.toHasLe.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.semilatticeInf.{u1} X _inst_1)))) (DiscreteQuotient.orderBot.{u1} X _inst_1 _inst_4))) x) (DiscreteQuotient.proj.{u1} X _inst_1 (Bot.bot.{u1} (DiscreteQuotient.{u1} X _inst_1) (OrderBot.toHasBot.{u1} (DiscreteQuotient.{u1} X _inst_1) (Preorder.toHasLe.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.semilatticeInf.{u1} X _inst_1)))) (DiscreteQuotient.orderBot.{u1} X _inst_1 _inst_4))) y)) (Eq.{succ u1} (Set.{u1} X) (connectedComponent.{u1} X _inst_1 x) (connectedComponent.{u1} X _inst_1 y))
 but is expected to have type
   forall {X : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} X] [_inst_4 : LocallyConnectedSpace.{u1} X _inst_1] {x : X} {y : X}, Iff (Eq.{succ u1} (Quotient.{succ u1} X (DiscreteQuotient.toSetoid.{u1} X _inst_1 (Bot.bot.{u1} (DiscreteQuotient.{u1} X _inst_1) (OrderBot.toBot.{u1} (DiscreteQuotient.{u1} X _inst_1) (Preorder.toLE.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.instSemilatticeInfDiscreteQuotient.{u1} X _inst_1)))) (DiscreteQuotient.instOrderBotDiscreteQuotientToLEToPreorderToPartialOrderInstSemilatticeInfDiscreteQuotient.{u1} X _inst_1 _inst_4))))) (DiscreteQuotient.proj.{u1} X _inst_1 (Bot.bot.{u1} (DiscreteQuotient.{u1} X _inst_1) (OrderBot.toBot.{u1} (DiscreteQuotient.{u1} X _inst_1) (Preorder.toLE.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.instSemilatticeInfDiscreteQuotient.{u1} X _inst_1)))) (DiscreteQuotient.instOrderBotDiscreteQuotientToLEToPreorderToPartialOrderInstSemilatticeInfDiscreteQuotient.{u1} X _inst_1 _inst_4))) x) (DiscreteQuotient.proj.{u1} X _inst_1 (Bot.bot.{u1} (DiscreteQuotient.{u1} X _inst_1) (OrderBot.toBot.{u1} (DiscreteQuotient.{u1} X _inst_1) (Preorder.toLE.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.instSemilatticeInfDiscreteQuotient.{u1} X _inst_1)))) (DiscreteQuotient.instOrderBotDiscreteQuotientToLEToPreorderToPartialOrderInstSemilatticeInfDiscreteQuotient.{u1} X _inst_1 _inst_4))) y)) (Eq.{succ u1} (Set.{u1} X) (connectedComponent.{u1} X _inst_1 x) (connectedComponent.{u1} X _inst_1 y))
 Case conversion may be inaccurate. Consider using '#align discrete_quotient.proj_bot_eq DiscreteQuotient.proj_bot_eqₓ'. -/
@@ -378,7 +378,7 @@ theorem proj_bot_eq [LocallyConnectedSpace X] {x y : X} :
 
 /- warning: discrete_quotient.proj_bot_inj -> DiscreteQuotient.proj_bot_inj is a dubious translation:
 lean 3 declaration is
-  forall {X : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} X] [_inst_4 : DiscreteTopology.{u1} X _inst_1] {x : X} {y : X}, Iff (Eq.{succ u1} (coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) (Bot.bot.{u1} (DiscreteQuotient.{u1} X _inst_1) (OrderBot.toHasBot.{u1} (DiscreteQuotient.{u1} X _inst_1) (Preorder.toLE.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.semilatticeInf.{u1} X _inst_1)))) (DiscreteQuotient.orderBot.{u1} X _inst_1 (DiscreteTopology.toLocallyConnectedSpace.{u1} X _inst_1 _inst_4))))) (DiscreteQuotient.proj.{u1} X _inst_1 (Bot.bot.{u1} (DiscreteQuotient.{u1} X _inst_1) (OrderBot.toHasBot.{u1} (DiscreteQuotient.{u1} X _inst_1) (Preorder.toLE.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.semilatticeInf.{u1} X _inst_1)))) (DiscreteQuotient.orderBot.{u1} X _inst_1 (DiscreteTopology.toLocallyConnectedSpace.{u1} X _inst_1 _inst_4)))) x) (DiscreteQuotient.proj.{u1} X _inst_1 (Bot.bot.{u1} (DiscreteQuotient.{u1} X _inst_1) (OrderBot.toHasBot.{u1} (DiscreteQuotient.{u1} X _inst_1) (Preorder.toLE.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.semilatticeInf.{u1} X _inst_1)))) (DiscreteQuotient.orderBot.{u1} X _inst_1 (DiscreteTopology.toLocallyConnectedSpace.{u1} X _inst_1 _inst_4)))) y)) (Eq.{succ u1} X x y)
+  forall {X : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} X] [_inst_4 : DiscreteTopology.{u1} X _inst_1] {x : X} {y : X}, Iff (Eq.{succ u1} (coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) (Bot.bot.{u1} (DiscreteQuotient.{u1} X _inst_1) (OrderBot.toHasBot.{u1} (DiscreteQuotient.{u1} X _inst_1) (Preorder.toHasLe.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.semilatticeInf.{u1} X _inst_1)))) (DiscreteQuotient.orderBot.{u1} X _inst_1 (DiscreteTopology.toLocallyConnectedSpace.{u1} X _inst_1 _inst_4))))) (DiscreteQuotient.proj.{u1} X _inst_1 (Bot.bot.{u1} (DiscreteQuotient.{u1} X _inst_1) (OrderBot.toHasBot.{u1} (DiscreteQuotient.{u1} X _inst_1) (Preorder.toHasLe.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.semilatticeInf.{u1} X _inst_1)))) (DiscreteQuotient.orderBot.{u1} X _inst_1 (DiscreteTopology.toLocallyConnectedSpace.{u1} X _inst_1 _inst_4)))) x) (DiscreteQuotient.proj.{u1} X _inst_1 (Bot.bot.{u1} (DiscreteQuotient.{u1} X _inst_1) (OrderBot.toHasBot.{u1} (DiscreteQuotient.{u1} X _inst_1) (Preorder.toHasLe.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.semilatticeInf.{u1} X _inst_1)))) (DiscreteQuotient.orderBot.{u1} X _inst_1 (DiscreteTopology.toLocallyConnectedSpace.{u1} X _inst_1 _inst_4)))) y)) (Eq.{succ u1} X x y)
 but is expected to have type
   forall {X : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} X] [_inst_4 : DiscreteTopology.{u1} X _inst_1] {x : X} {y : X}, Iff (Eq.{succ u1} (Quotient.{succ u1} X (DiscreteQuotient.toSetoid.{u1} X _inst_1 (Bot.bot.{u1} (DiscreteQuotient.{u1} X _inst_1) (OrderBot.toBot.{u1} (DiscreteQuotient.{u1} X _inst_1) (Preorder.toLE.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.instSemilatticeInfDiscreteQuotient.{u1} X _inst_1)))) (DiscreteQuotient.instOrderBotDiscreteQuotientToLEToPreorderToPartialOrderInstSemilatticeInfDiscreteQuotient.{u1} X _inst_1 (DiscreteTopology.toLocallyConnectedSpace.{u1} X _inst_1 _inst_4)))))) (DiscreteQuotient.proj.{u1} X _inst_1 (Bot.bot.{u1} (DiscreteQuotient.{u1} X _inst_1) (OrderBot.toBot.{u1} (DiscreteQuotient.{u1} X _inst_1) (Preorder.toLE.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.instSemilatticeInfDiscreteQuotient.{u1} X _inst_1)))) (DiscreteQuotient.instOrderBotDiscreteQuotientToLEToPreorderToPartialOrderInstSemilatticeInfDiscreteQuotient.{u1} X _inst_1 (DiscreteTopology.toLocallyConnectedSpace.{u1} X _inst_1 _inst_4)))) x) (DiscreteQuotient.proj.{u1} X _inst_1 (Bot.bot.{u1} (DiscreteQuotient.{u1} X _inst_1) (OrderBot.toBot.{u1} (DiscreteQuotient.{u1} X _inst_1) (Preorder.toLE.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.instSemilatticeInfDiscreteQuotient.{u1} X _inst_1)))) (DiscreteQuotient.instOrderBotDiscreteQuotientToLEToPreorderToPartialOrderInstSemilatticeInfDiscreteQuotient.{u1} X _inst_1 (DiscreteTopology.toLocallyConnectedSpace.{u1} X _inst_1 _inst_4)))) y)) (Eq.{succ u1} X x y)
 Case conversion may be inaccurate. Consider using '#align discrete_quotient.proj_bot_inj DiscreteQuotient.proj_bot_injₓ'. -/
@@ -387,7 +387,7 @@ theorem proj_bot_inj [DiscreteTopology X] {x y : X} : proj ⊥ x = proj ⊥ y 
 
 /- warning: discrete_quotient.proj_bot_injective -> DiscreteQuotient.proj_bot_injective is a dubious translation:
 lean 3 declaration is
-  forall {X : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} X] [_inst_4 : DiscreteTopology.{u1} X _inst_1], Function.Injective.{succ u1, succ u1} X (coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) (Bot.bot.{u1} (DiscreteQuotient.{u1} X _inst_1) (OrderBot.toHasBot.{u1} (DiscreteQuotient.{u1} X _inst_1) (Preorder.toLE.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.semilatticeInf.{u1} X _inst_1)))) (DiscreteQuotient.orderBot.{u1} X _inst_1 (DiscreteTopology.toLocallyConnectedSpace.{u1} X _inst_1 _inst_4))))) (DiscreteQuotient.proj.{u1} X _inst_1 (Bot.bot.{u1} (DiscreteQuotient.{u1} X _inst_1) (OrderBot.toHasBot.{u1} (DiscreteQuotient.{u1} X _inst_1) (Preorder.toLE.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.semilatticeInf.{u1} X _inst_1)))) (DiscreteQuotient.orderBot.{u1} X _inst_1 (DiscreteTopology.toLocallyConnectedSpace.{u1} X _inst_1 _inst_4)))))
+  forall {X : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} X] [_inst_4 : DiscreteTopology.{u1} X _inst_1], Function.Injective.{succ u1, succ u1} X (coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) (Bot.bot.{u1} (DiscreteQuotient.{u1} X _inst_1) (OrderBot.toHasBot.{u1} (DiscreteQuotient.{u1} X _inst_1) (Preorder.toHasLe.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.semilatticeInf.{u1} X _inst_1)))) (DiscreteQuotient.orderBot.{u1} X _inst_1 (DiscreteTopology.toLocallyConnectedSpace.{u1} X _inst_1 _inst_4))))) (DiscreteQuotient.proj.{u1} X _inst_1 (Bot.bot.{u1} (DiscreteQuotient.{u1} X _inst_1) (OrderBot.toHasBot.{u1} (DiscreteQuotient.{u1} X _inst_1) (Preorder.toHasLe.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.semilatticeInf.{u1} X _inst_1)))) (DiscreteQuotient.orderBot.{u1} X _inst_1 (DiscreteTopology.toLocallyConnectedSpace.{u1} X _inst_1 _inst_4)))))
 but is expected to have type
   forall {X : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} X] [_inst_4 : DiscreteTopology.{u1} X _inst_1], Function.Injective.{succ u1, succ u1} X (Quotient.{succ u1} X (DiscreteQuotient.toSetoid.{u1} X _inst_1 (Bot.bot.{u1} (DiscreteQuotient.{u1} X _inst_1) (OrderBot.toBot.{u1} (DiscreteQuotient.{u1} X _inst_1) (Preorder.toLE.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.instSemilatticeInfDiscreteQuotient.{u1} X _inst_1)))) (DiscreteQuotient.instOrderBotDiscreteQuotientToLEToPreorderToPartialOrderInstSemilatticeInfDiscreteQuotient.{u1} X _inst_1 (DiscreteTopology.toLocallyConnectedSpace.{u1} X _inst_1 _inst_4)))))) (DiscreteQuotient.proj.{u1} X _inst_1 (Bot.bot.{u1} (DiscreteQuotient.{u1} X _inst_1) (OrderBot.toBot.{u1} (DiscreteQuotient.{u1} X _inst_1) (Preorder.toLE.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.instSemilatticeInfDiscreteQuotient.{u1} X _inst_1)))) (DiscreteQuotient.instOrderBotDiscreteQuotientToLEToPreorderToPartialOrderInstSemilatticeInfDiscreteQuotient.{u1} X _inst_1 (DiscreteTopology.toLocallyConnectedSpace.{u1} X _inst_1 _inst_4)))))
 Case conversion may be inaccurate. Consider using '#align discrete_quotient.proj_bot_injective DiscreteQuotient.proj_bot_injectiveₓ'. -/
@@ -397,7 +397,7 @@ theorem proj_bot_injective [DiscreteTopology X] : Injective (⊥ : DiscreteQuoti
 
 /- warning: discrete_quotient.proj_bot_bijective -> DiscreteQuotient.proj_bot_bijective is a dubious translation:
 lean 3 declaration is
-  forall {X : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} X] [_inst_4 : DiscreteTopology.{u1} X _inst_1], Function.Bijective.{succ u1, succ u1} X (coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) (Bot.bot.{u1} (DiscreteQuotient.{u1} X _inst_1) (OrderBot.toHasBot.{u1} (DiscreteQuotient.{u1} X _inst_1) (Preorder.toLE.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.semilatticeInf.{u1} X _inst_1)))) (DiscreteQuotient.orderBot.{u1} X _inst_1 (DiscreteTopology.toLocallyConnectedSpace.{u1} X _inst_1 _inst_4))))) (DiscreteQuotient.proj.{u1} X _inst_1 (Bot.bot.{u1} (DiscreteQuotient.{u1} X _inst_1) (OrderBot.toHasBot.{u1} (DiscreteQuotient.{u1} X _inst_1) (Preorder.toLE.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.semilatticeInf.{u1} X _inst_1)))) (DiscreteQuotient.orderBot.{u1} X _inst_1 (DiscreteTopology.toLocallyConnectedSpace.{u1} X _inst_1 _inst_4)))))
+  forall {X : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} X] [_inst_4 : DiscreteTopology.{u1} X _inst_1], Function.Bijective.{succ u1, succ u1} X (coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) (Bot.bot.{u1} (DiscreteQuotient.{u1} X _inst_1) (OrderBot.toHasBot.{u1} (DiscreteQuotient.{u1} X _inst_1) (Preorder.toHasLe.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.semilatticeInf.{u1} X _inst_1)))) (DiscreteQuotient.orderBot.{u1} X _inst_1 (DiscreteTopology.toLocallyConnectedSpace.{u1} X _inst_1 _inst_4))))) (DiscreteQuotient.proj.{u1} X _inst_1 (Bot.bot.{u1} (DiscreteQuotient.{u1} X _inst_1) (OrderBot.toHasBot.{u1} (DiscreteQuotient.{u1} X _inst_1) (Preorder.toHasLe.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.semilatticeInf.{u1} X _inst_1)))) (DiscreteQuotient.orderBot.{u1} X _inst_1 (DiscreteTopology.toLocallyConnectedSpace.{u1} X _inst_1 _inst_4)))))
 but is expected to have type
   forall {X : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} X] [_inst_4 : DiscreteTopology.{u1} X _inst_1], Function.Bijective.{succ u1, succ u1} X (Quotient.{succ u1} X (DiscreteQuotient.toSetoid.{u1} X _inst_1 (Bot.bot.{u1} (DiscreteQuotient.{u1} X _inst_1) (OrderBot.toBot.{u1} (DiscreteQuotient.{u1} X _inst_1) (Preorder.toLE.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.instSemilatticeInfDiscreteQuotient.{u1} X _inst_1)))) (DiscreteQuotient.instOrderBotDiscreteQuotientToLEToPreorderToPartialOrderInstSemilatticeInfDiscreteQuotient.{u1} X _inst_1 (DiscreteTopology.toLocallyConnectedSpace.{u1} X _inst_1 _inst_4)))))) (DiscreteQuotient.proj.{u1} X _inst_1 (Bot.bot.{u1} (DiscreteQuotient.{u1} X _inst_1) (OrderBot.toBot.{u1} (DiscreteQuotient.{u1} X _inst_1) (Preorder.toLE.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.instSemilatticeInfDiscreteQuotient.{u1} X _inst_1)))) (DiscreteQuotient.instOrderBotDiscreteQuotientToLEToPreorderToPartialOrderInstSemilatticeInfDiscreteQuotient.{u1} X _inst_1 (DiscreteTopology.toLocallyConnectedSpace.{u1} X _inst_1 _inst_4)))))
 Case conversion may be inaccurate. Consider using '#align discrete_quotient.proj_bot_bijective DiscreteQuotient.proj_bot_bijectiveₓ'. -/
@@ -426,7 +426,7 @@ variable {A A' B B'} {f} {g : C(Y, Z)} {C : DiscreteQuotient Z}
 
 /- warning: discrete_quotient.le_comap_id_iff -> DiscreteQuotient.leComap_id_iff is a dubious translation:
 lean 3 declaration is
-  forall {X : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} X] {A : DiscreteQuotient.{u1} X _inst_1} {A' : DiscreteQuotient.{u1} X _inst_1}, Iff (DiscreteQuotient.LEComap.{u1, u1} X X _inst_1 _inst_1 (ContinuousMap.id.{u1} X _inst_1) A A') (LE.le.{u1} (DiscreteQuotient.{u1} X _inst_1) (Preorder.toLE.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.semilatticeInf.{u1} X _inst_1)))) A A')
+  forall {X : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} X] {A : DiscreteQuotient.{u1} X _inst_1} {A' : DiscreteQuotient.{u1} X _inst_1}, Iff (DiscreteQuotient.LEComap.{u1, u1} X X _inst_1 _inst_1 (ContinuousMap.id.{u1} X _inst_1) A A') (LE.le.{u1} (DiscreteQuotient.{u1} X _inst_1) (Preorder.toHasLe.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.semilatticeInf.{u1} X _inst_1)))) A A')
 but is expected to have type
   forall {X : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} X] {A : DiscreteQuotient.{u1} X _inst_1} {A' : DiscreteQuotient.{u1} X _inst_1}, Iff (DiscreteQuotient.LEComap.{u1, u1} X X _inst_1 _inst_1 (ContinuousMap.id.{u1} X _inst_1) A A') (LE.le.{u1} (DiscreteQuotient.{u1} X _inst_1) (Preorder.toLE.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.instSemilatticeInfDiscreteQuotient.{u1} X _inst_1)))) A A')
 Case conversion may be inaccurate. Consider using '#align discrete_quotient.le_comap_id_iff DiscreteQuotient.leComap_id_iffₓ'. -/
@@ -446,7 +446,7 @@ theorem LEComap.comp : LEComap g B C → LEComap f A B → LEComap (g.comp f) A
 
 /- warning: discrete_quotient.le_comap.mono -> DiscreteQuotient.LEComap.mono is a dubious translation:
 lean 3 declaration is
-  forall {X : Type.{u1}} {Y : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} X] [_inst_2 : TopologicalSpace.{u2} Y] {f : ContinuousMap.{u1, u2} X Y _inst_1 _inst_2} {A : DiscreteQuotient.{u1} X _inst_1} {A' : DiscreteQuotient.{u1} X _inst_1} {B : DiscreteQuotient.{u2} Y _inst_2} {B' : DiscreteQuotient.{u2} Y _inst_2}, (DiscreteQuotient.LEComap.{u1, u2} X Y _inst_1 _inst_2 f A B) -> (LE.le.{u1} (DiscreteQuotient.{u1} X _inst_1) (Preorder.toLE.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.semilatticeInf.{u1} X _inst_1)))) A' A) -> (LE.le.{u2} (DiscreteQuotient.{u2} Y _inst_2) (Preorder.toLE.{u2} (DiscreteQuotient.{u2} Y _inst_2) (PartialOrder.toPreorder.{u2} (DiscreteQuotient.{u2} Y _inst_2) (SemilatticeInf.toPartialOrder.{u2} (DiscreteQuotient.{u2} Y _inst_2) (DiscreteQuotient.semilatticeInf.{u2} Y _inst_2)))) B B') -> (DiscreteQuotient.LEComap.{u1, u2} X Y _inst_1 _inst_2 f A' B')
+  forall {X : Type.{u1}} {Y : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} X] [_inst_2 : TopologicalSpace.{u2} Y] {f : ContinuousMap.{u1, u2} X Y _inst_1 _inst_2} {A : DiscreteQuotient.{u1} X _inst_1} {A' : DiscreteQuotient.{u1} X _inst_1} {B : DiscreteQuotient.{u2} Y _inst_2} {B' : DiscreteQuotient.{u2} Y _inst_2}, (DiscreteQuotient.LEComap.{u1, u2} X Y _inst_1 _inst_2 f A B) -> (LE.le.{u1} (DiscreteQuotient.{u1} X _inst_1) (Preorder.toHasLe.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.semilatticeInf.{u1} X _inst_1)))) A' A) -> (LE.le.{u2} (DiscreteQuotient.{u2} Y _inst_2) (Preorder.toHasLe.{u2} (DiscreteQuotient.{u2} Y _inst_2) (PartialOrder.toPreorder.{u2} (DiscreteQuotient.{u2} Y _inst_2) (SemilatticeInf.toPartialOrder.{u2} (DiscreteQuotient.{u2} Y _inst_2) (DiscreteQuotient.semilatticeInf.{u2} Y _inst_2)))) B B') -> (DiscreteQuotient.LEComap.{u1, u2} X Y _inst_1 _inst_2 f A' B')
 but is expected to have type
   forall {X : Type.{u2}} {Y : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} X] [_inst_2 : TopologicalSpace.{u1} Y] {f : ContinuousMap.{u2, u1} X Y _inst_1 _inst_2} {A : DiscreteQuotient.{u2} X _inst_1} {A' : DiscreteQuotient.{u2} X _inst_1} {B : DiscreteQuotient.{u1} Y _inst_2} {B' : DiscreteQuotient.{u1} Y _inst_2}, (DiscreteQuotient.LEComap.{u2, u1} X Y _inst_1 _inst_2 f A B) -> (LE.le.{u2} (DiscreteQuotient.{u2} X _inst_1) (Preorder.toLE.{u2} (DiscreteQuotient.{u2} X _inst_1) (PartialOrder.toPreorder.{u2} (DiscreteQuotient.{u2} X _inst_1) (SemilatticeInf.toPartialOrder.{u2} (DiscreteQuotient.{u2} X _inst_1) (DiscreteQuotient.instSemilatticeInfDiscreteQuotient.{u2} X _inst_1)))) A' A) -> (LE.le.{u1} (DiscreteQuotient.{u1} Y _inst_2) (Preorder.toLE.{u1} (DiscreteQuotient.{u1} Y _inst_2) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} Y _inst_2) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} Y _inst_2) (DiscreteQuotient.instSemilatticeInfDiscreteQuotient.{u1} Y _inst_2)))) B B') -> (DiscreteQuotient.LEComap.{u2, u1} X Y _inst_1 _inst_2 f A' B')
 Case conversion may be inaccurate. Consider using '#align discrete_quotient.le_comap.mono DiscreteQuotient.LEComap.monoₓ'. -/
@@ -515,7 +515,7 @@ theorem map_comp (h1 : LEComap g B C) (h2 : LEComap f A B) :
 
 /- warning: discrete_quotient.of_le_map -> DiscreteQuotient.ofLE_map is a dubious translation:
 lean 3 declaration is
-  forall {X : Type.{u1}} {Y : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} X] [_inst_2 : TopologicalSpace.{u2} Y] {f : ContinuousMap.{u1, u2} X Y _inst_1 _inst_2} {A : DiscreteQuotient.{u1} X _inst_1} {B : DiscreteQuotient.{u2} Y _inst_2} {B' : DiscreteQuotient.{u2} Y _inst_2} (cond : DiscreteQuotient.LEComap.{u1, u2} X Y _inst_1 _inst_2 f A B) (h : LE.le.{u2} (DiscreteQuotient.{u2} Y _inst_2) (Preorder.toLE.{u2} (DiscreteQuotient.{u2} Y _inst_2) (PartialOrder.toPreorder.{u2} (DiscreteQuotient.{u2} Y _inst_2) (SemilatticeInf.toPartialOrder.{u2} (DiscreteQuotient.{u2} Y _inst_2) (DiscreteQuotient.semilatticeInf.{u2} Y _inst_2)))) B B') (a : coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) A), Eq.{succ u2} (coeSort.{succ u2, succ (succ u2)} (DiscreteQuotient.{u2} Y _inst_2) Type.{u2} (DiscreteQuotient.hasCoeToSort.{u2} Y _inst_2) B') (DiscreteQuotient.ofLE.{u2} Y _inst_2 B B' h (DiscreteQuotient.map.{u1, u2} X Y _inst_1 _inst_2 A B f cond a)) (DiscreteQuotient.map.{u1, u2} X Y _inst_1 _inst_2 A B' f (DiscreteQuotient.LEComap.mono.{u1, u2} X Y _inst_1 _inst_2 f A A B B' cond (le_rfl.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.semilatticeInf.{u1} X _inst_1))) A) h) a)
+  forall {X : Type.{u1}} {Y : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} X] [_inst_2 : TopologicalSpace.{u2} Y] {f : ContinuousMap.{u1, u2} X Y _inst_1 _inst_2} {A : DiscreteQuotient.{u1} X _inst_1} {B : DiscreteQuotient.{u2} Y _inst_2} {B' : DiscreteQuotient.{u2} Y _inst_2} (cond : DiscreteQuotient.LEComap.{u1, u2} X Y _inst_1 _inst_2 f A B) (h : LE.le.{u2} (DiscreteQuotient.{u2} Y _inst_2) (Preorder.toHasLe.{u2} (DiscreteQuotient.{u2} Y _inst_2) (PartialOrder.toPreorder.{u2} (DiscreteQuotient.{u2} Y _inst_2) (SemilatticeInf.toPartialOrder.{u2} (DiscreteQuotient.{u2} Y _inst_2) (DiscreteQuotient.semilatticeInf.{u2} Y _inst_2)))) B B') (a : coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) A), Eq.{succ u2} (coeSort.{succ u2, succ (succ u2)} (DiscreteQuotient.{u2} Y _inst_2) Type.{u2} (DiscreteQuotient.hasCoeToSort.{u2} Y _inst_2) B') (DiscreteQuotient.ofLE.{u2} Y _inst_2 B B' h (DiscreteQuotient.map.{u1, u2} X Y _inst_1 _inst_2 A B f cond a)) (DiscreteQuotient.map.{u1, u2} X Y _inst_1 _inst_2 A B' f (DiscreteQuotient.LEComap.mono.{u1, u2} X Y _inst_1 _inst_2 f A A B B' cond (le_rfl.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.semilatticeInf.{u1} X _inst_1))) A) h) a)
 but is expected to have type
   forall {X : Type.{u2}} {Y : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} X] [_inst_2 : TopologicalSpace.{u1} Y] {f : ContinuousMap.{u2, u1} X Y _inst_1 _inst_2} {A : DiscreteQuotient.{u2} X _inst_1} {B : DiscreteQuotient.{u1} Y _inst_2} {B' : DiscreteQuotient.{u1} Y _inst_2} (cond : DiscreteQuotient.LEComap.{u2, u1} X Y _inst_1 _inst_2 f A B) (h : LE.le.{u1} (DiscreteQuotient.{u1} Y _inst_2) (Preorder.toLE.{u1} (DiscreteQuotient.{u1} Y _inst_2) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} Y _inst_2) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} Y _inst_2) (DiscreteQuotient.instSemilatticeInfDiscreteQuotient.{u1} Y _inst_2)))) B B') (a : Quotient.{succ u2} X (DiscreteQuotient.toSetoid.{u2} X _inst_1 A)), Eq.{succ u1} (Quotient.{succ u1} Y (DiscreteQuotient.toSetoid.{u1} Y _inst_2 B')) (DiscreteQuotient.ofLE.{u1} Y _inst_2 B B' h (DiscreteQuotient.map.{u2, u1} X Y _inst_1 _inst_2 A B f cond a)) (DiscreteQuotient.map.{u2, u1} X Y _inst_1 _inst_2 A B' f (DiscreteQuotient.LEComap.mono.{u1, u2} X Y _inst_1 _inst_2 f A A B B' cond (le_rfl.{u2} (DiscreteQuotient.{u2} X _inst_1) (PartialOrder.toPreorder.{u2} (DiscreteQuotient.{u2} X _inst_1) (SemilatticeInf.toPartialOrder.{u2} (DiscreteQuotient.{u2} X _inst_1) (DiscreteQuotient.instSemilatticeInfDiscreteQuotient.{u2} X _inst_1))) A) h) a)
 Case conversion may be inaccurate. Consider using '#align discrete_quotient.of_le_map DiscreteQuotient.ofLE_mapₓ'. -/
@@ -529,7 +529,7 @@ theorem ofLE_map (cond : LEComap f A B) (h : B ≤ B') (a : A) :
 
 /- warning: discrete_quotient.of_le_comp_map -> DiscreteQuotient.ofLE_comp_map is a dubious translation:
 lean 3 declaration is
-  forall {X : Type.{u1}} {Y : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} X] [_inst_2 : TopologicalSpace.{u2} Y] {f : ContinuousMap.{u1, u2} X Y _inst_1 _inst_2} {A : DiscreteQuotient.{u1} X _inst_1} {B : DiscreteQuotient.{u2} Y _inst_2} {B' : DiscreteQuotient.{u2} Y _inst_2} (cond : DiscreteQuotient.LEComap.{u1, u2} X Y _inst_1 _inst_2 f A B) (h : LE.le.{u2} (DiscreteQuotient.{u2} Y _inst_2) (Preorder.toLE.{u2} (DiscreteQuotient.{u2} Y _inst_2) (PartialOrder.toPreorder.{u2} (DiscreteQuotient.{u2} Y _inst_2) (SemilatticeInf.toPartialOrder.{u2} (DiscreteQuotient.{u2} Y _inst_2) (DiscreteQuotient.semilatticeInf.{u2} Y _inst_2)))) B B'), Eq.{max (succ u1) (succ u2)} ((coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) A) -> (coeSort.{succ u2, succ (succ u2)} (DiscreteQuotient.{u2} Y _inst_2) Type.{u2} (DiscreteQuotient.hasCoeToSort.{u2} Y _inst_2) B')) (Function.comp.{succ u1, succ u2, succ u2} (coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) A) (coeSort.{succ u2, succ (succ u2)} (DiscreteQuotient.{u2} Y _inst_2) Type.{u2} (DiscreteQuotient.hasCoeToSort.{u2} Y _inst_2) B) (coeSort.{succ u2, succ (succ u2)} (DiscreteQuotient.{u2} Y _inst_2) Type.{u2} (DiscreteQuotient.hasCoeToSort.{u2} Y _inst_2) B') (DiscreteQuotient.ofLE.{u2} Y _inst_2 B B' h) (DiscreteQuotient.map.{u1, u2} X Y _inst_1 _inst_2 A B f cond)) (DiscreteQuotient.map.{u1, u2} X Y _inst_1 _inst_2 A B' f (DiscreteQuotient.LEComap.mono.{u1, u2} X Y _inst_1 _inst_2 f A A B B' cond (le_rfl.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.semilatticeInf.{u1} X _inst_1))) A) h))
+  forall {X : Type.{u1}} {Y : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} X] [_inst_2 : TopologicalSpace.{u2} Y] {f : ContinuousMap.{u1, u2} X Y _inst_1 _inst_2} {A : DiscreteQuotient.{u1} X _inst_1} {B : DiscreteQuotient.{u2} Y _inst_2} {B' : DiscreteQuotient.{u2} Y _inst_2} (cond : DiscreteQuotient.LEComap.{u1, u2} X Y _inst_1 _inst_2 f A B) (h : LE.le.{u2} (DiscreteQuotient.{u2} Y _inst_2) (Preorder.toHasLe.{u2} (DiscreteQuotient.{u2} Y _inst_2) (PartialOrder.toPreorder.{u2} (DiscreteQuotient.{u2} Y _inst_2) (SemilatticeInf.toPartialOrder.{u2} (DiscreteQuotient.{u2} Y _inst_2) (DiscreteQuotient.semilatticeInf.{u2} Y _inst_2)))) B B'), Eq.{max (succ u1) (succ u2)} ((coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) A) -> (coeSort.{succ u2, succ (succ u2)} (DiscreteQuotient.{u2} Y _inst_2) Type.{u2} (DiscreteQuotient.hasCoeToSort.{u2} Y _inst_2) B')) (Function.comp.{succ u1, succ u2, succ u2} (coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) A) (coeSort.{succ u2, succ (succ u2)} (DiscreteQuotient.{u2} Y _inst_2) Type.{u2} (DiscreteQuotient.hasCoeToSort.{u2} Y _inst_2) B) (coeSort.{succ u2, succ (succ u2)} (DiscreteQuotient.{u2} Y _inst_2) Type.{u2} (DiscreteQuotient.hasCoeToSort.{u2} Y _inst_2) B') (DiscreteQuotient.ofLE.{u2} Y _inst_2 B B' h) (DiscreteQuotient.map.{u1, u2} X Y _inst_1 _inst_2 A B f cond)) (DiscreteQuotient.map.{u1, u2} X Y _inst_1 _inst_2 A B' f (DiscreteQuotient.LEComap.mono.{u1, u2} X Y _inst_1 _inst_2 f A A B B' cond (le_rfl.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.semilatticeInf.{u1} X _inst_1))) A) h))
 but is expected to have type
   forall {X : Type.{u2}} {Y : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} X] [_inst_2 : TopologicalSpace.{u1} Y] {f : ContinuousMap.{u2, u1} X Y _inst_1 _inst_2} {A : DiscreteQuotient.{u2} X _inst_1} {B : DiscreteQuotient.{u1} Y _inst_2} {B' : DiscreteQuotient.{u1} Y _inst_2} (cond : DiscreteQuotient.LEComap.{u2, u1} X Y _inst_1 _inst_2 f A B) (h : LE.le.{u1} (DiscreteQuotient.{u1} Y _inst_2) (Preorder.toLE.{u1} (DiscreteQuotient.{u1} Y _inst_2) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} Y _inst_2) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} Y _inst_2) (DiscreteQuotient.instSemilatticeInfDiscreteQuotient.{u1} Y _inst_2)))) B B'), Eq.{max (succ u2) (succ u1)} ((Quotient.{succ u2} X (DiscreteQuotient.toSetoid.{u2} X _inst_1 A)) -> (Quotient.{succ u1} Y (DiscreteQuotient.toSetoid.{u1} Y _inst_2 B'))) (Function.comp.{succ u2, succ u1, succ u1} (Quotient.{succ u2} X (DiscreteQuotient.toSetoid.{u2} X _inst_1 A)) (Quotient.{succ u1} Y (DiscreteQuotient.toSetoid.{u1} Y _inst_2 B)) (Quotient.{succ u1} Y (DiscreteQuotient.toSetoid.{u1} Y _inst_2 B')) (DiscreteQuotient.ofLE.{u1} Y _inst_2 B B' h) (DiscreteQuotient.map.{u2, u1} X Y _inst_1 _inst_2 A B f cond)) (DiscreteQuotient.map.{u2, u1} X Y _inst_1 _inst_2 A B' f (DiscreteQuotient.LEComap.mono.{u1, u2} X Y _inst_1 _inst_2 f A A B B' cond (le_rfl.{u2} (DiscreteQuotient.{u2} X _inst_1) (PartialOrder.toPreorder.{u2} (DiscreteQuotient.{u2} X _inst_1) (SemilatticeInf.toPartialOrder.{u2} (DiscreteQuotient.{u2} X _inst_1) (DiscreteQuotient.instSemilatticeInfDiscreteQuotient.{u2} X _inst_1))) A) h))
 Case conversion may be inaccurate. Consider using '#align discrete_quotient.of_le_comp_map DiscreteQuotient.ofLE_comp_mapₓ'. -/
@@ -541,7 +541,7 @@ theorem ofLE_comp_map (cond : LEComap f A B) (h : B ≤ B') :
 
 /- warning: discrete_quotient.map_of_le -> DiscreteQuotient.map_ofLE is a dubious translation:
 lean 3 declaration is
-  forall {X : Type.{u1}} {Y : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} X] [_inst_2 : TopologicalSpace.{u2} Y] {f : ContinuousMap.{u1, u2} X Y _inst_1 _inst_2} {A : DiscreteQuotient.{u1} X _inst_1} {A' : DiscreteQuotient.{u1} X _inst_1} {B : DiscreteQuotient.{u2} Y _inst_2} (cond : DiscreteQuotient.LEComap.{u1, u2} X Y _inst_1 _inst_2 f A B) (h : LE.le.{u1} (DiscreteQuotient.{u1} X _inst_1) (Preorder.toLE.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.semilatticeInf.{u1} X _inst_1)))) A' A) (c : coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) A'), Eq.{succ u2} (coeSort.{succ u2, succ (succ u2)} (DiscreteQuotient.{u2} Y _inst_2) Type.{u2} (DiscreteQuotient.hasCoeToSort.{u2} Y _inst_2) B) (DiscreteQuotient.map.{u1, u2} X Y _inst_1 _inst_2 A B f cond (DiscreteQuotient.ofLE.{u1} X _inst_1 A' A h c)) (DiscreteQuotient.map.{u1, u2} X Y _inst_1 _inst_2 A' B f (DiscreteQuotient.LEComap.mono.{u1, u2} X Y _inst_1 _inst_2 f A A' B B cond h (le_rfl.{u2} (DiscreteQuotient.{u2} Y _inst_2) (PartialOrder.toPreorder.{u2} (DiscreteQuotient.{u2} Y _inst_2) (SemilatticeInf.toPartialOrder.{u2} (DiscreteQuotient.{u2} Y _inst_2) (DiscreteQuotient.semilatticeInf.{u2} Y _inst_2))) B)) c)
+  forall {X : Type.{u1}} {Y : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} X] [_inst_2 : TopologicalSpace.{u2} Y] {f : ContinuousMap.{u1, u2} X Y _inst_1 _inst_2} {A : DiscreteQuotient.{u1} X _inst_1} {A' : DiscreteQuotient.{u1} X _inst_1} {B : DiscreteQuotient.{u2} Y _inst_2} (cond : DiscreteQuotient.LEComap.{u1, u2} X Y _inst_1 _inst_2 f A B) (h : LE.le.{u1} (DiscreteQuotient.{u1} X _inst_1) (Preorder.toHasLe.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.semilatticeInf.{u1} X _inst_1)))) A' A) (c : coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) A'), Eq.{succ u2} (coeSort.{succ u2, succ (succ u2)} (DiscreteQuotient.{u2} Y _inst_2) Type.{u2} (DiscreteQuotient.hasCoeToSort.{u2} Y _inst_2) B) (DiscreteQuotient.map.{u1, u2} X Y _inst_1 _inst_2 A B f cond (DiscreteQuotient.ofLE.{u1} X _inst_1 A' A h c)) (DiscreteQuotient.map.{u1, u2} X Y _inst_1 _inst_2 A' B f (DiscreteQuotient.LEComap.mono.{u1, u2} X Y _inst_1 _inst_2 f A A' B B cond h (le_rfl.{u2} (DiscreteQuotient.{u2} Y _inst_2) (PartialOrder.toPreorder.{u2} (DiscreteQuotient.{u2} Y _inst_2) (SemilatticeInf.toPartialOrder.{u2} (DiscreteQuotient.{u2} Y _inst_2) (DiscreteQuotient.semilatticeInf.{u2} Y _inst_2))) B)) c)
 but is expected to have type
   forall {X : Type.{u2}} {Y : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} X] [_inst_2 : TopologicalSpace.{u1} Y] {f : ContinuousMap.{u2, u1} X Y _inst_1 _inst_2} {A : DiscreteQuotient.{u2} X _inst_1} {A' : DiscreteQuotient.{u2} X _inst_1} {B : DiscreteQuotient.{u1} Y _inst_2} (cond : DiscreteQuotient.LEComap.{u2, u1} X Y _inst_1 _inst_2 f A B) (h : LE.le.{u2} (DiscreteQuotient.{u2} X _inst_1) (Preorder.toLE.{u2} (DiscreteQuotient.{u2} X _inst_1) (PartialOrder.toPreorder.{u2} (DiscreteQuotient.{u2} X _inst_1) (SemilatticeInf.toPartialOrder.{u2} (DiscreteQuotient.{u2} X _inst_1) (DiscreteQuotient.instSemilatticeInfDiscreteQuotient.{u2} X _inst_1)))) A' A) (c : Quotient.{succ u2} X (DiscreteQuotient.toSetoid.{u2} X _inst_1 A')), Eq.{succ u1} (Quotient.{succ u1} Y (DiscreteQuotient.toSetoid.{u1} Y _inst_2 B)) (DiscreteQuotient.map.{u2, u1} X Y _inst_1 _inst_2 A B f cond (DiscreteQuotient.ofLE.{u2} X _inst_1 A' A h c)) (DiscreteQuotient.map.{u2, u1} X Y _inst_1 _inst_2 A' B f (DiscreteQuotient.LEComap.mono.{u1, u2} X Y _inst_1 _inst_2 f A A' B B cond h (le_rfl.{u1} (DiscreteQuotient.{u1} Y _inst_2) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} Y _inst_2) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} Y _inst_2) (DiscreteQuotient.instSemilatticeInfDiscreteQuotient.{u1} Y _inst_2))) B)) c)
 Case conversion may be inaccurate. Consider using '#align discrete_quotient.map_of_le DiscreteQuotient.map_ofLEₓ'. -/
@@ -555,7 +555,7 @@ theorem map_ofLE (cond : LEComap f A B) (h : A' ≤ A) (c : A') :
 
 /- warning: discrete_quotient.map_comp_of_le -> DiscreteQuotient.map_comp_ofLE is a dubious translation:
 lean 3 declaration is
-  forall {X : Type.{u1}} {Y : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} X] [_inst_2 : TopologicalSpace.{u2} Y] {f : ContinuousMap.{u1, u2} X Y _inst_1 _inst_2} {A : DiscreteQuotient.{u1} X _inst_1} {A' : DiscreteQuotient.{u1} X _inst_1} {B : DiscreteQuotient.{u2} Y _inst_2} (cond : DiscreteQuotient.LEComap.{u1, u2} X Y _inst_1 _inst_2 f A B) (h : LE.le.{u1} (DiscreteQuotient.{u1} X _inst_1) (Preorder.toLE.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.semilatticeInf.{u1} X _inst_1)))) A' A), Eq.{max (succ u1) (succ u2)} ((coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) A') -> (coeSort.{succ u2, succ (succ u2)} (DiscreteQuotient.{u2} Y _inst_2) Type.{u2} (DiscreteQuotient.hasCoeToSort.{u2} Y _inst_2) B)) (Function.comp.{succ u1, succ u1, succ u2} (coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) A') (coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) A) (coeSort.{succ u2, succ (succ u2)} (DiscreteQuotient.{u2} Y _inst_2) Type.{u2} (DiscreteQuotient.hasCoeToSort.{u2} Y _inst_2) B) (DiscreteQuotient.map.{u1, u2} X Y _inst_1 _inst_2 A B f cond) (DiscreteQuotient.ofLE.{u1} X _inst_1 A' A h)) (DiscreteQuotient.map.{u1, u2} X Y _inst_1 _inst_2 A' B f (DiscreteQuotient.LEComap.mono.{u1, u2} X Y _inst_1 _inst_2 f A A' B B cond h (le_rfl.{u2} (DiscreteQuotient.{u2} Y _inst_2) (PartialOrder.toPreorder.{u2} (DiscreteQuotient.{u2} Y _inst_2) (SemilatticeInf.toPartialOrder.{u2} (DiscreteQuotient.{u2} Y _inst_2) (DiscreteQuotient.semilatticeInf.{u2} Y _inst_2))) B)))
+  forall {X : Type.{u1}} {Y : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} X] [_inst_2 : TopologicalSpace.{u2} Y] {f : ContinuousMap.{u1, u2} X Y _inst_1 _inst_2} {A : DiscreteQuotient.{u1} X _inst_1} {A' : DiscreteQuotient.{u1} X _inst_1} {B : DiscreteQuotient.{u2} Y _inst_2} (cond : DiscreteQuotient.LEComap.{u1, u2} X Y _inst_1 _inst_2 f A B) (h : LE.le.{u1} (DiscreteQuotient.{u1} X _inst_1) (Preorder.toHasLe.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.semilatticeInf.{u1} X _inst_1)))) A' A), Eq.{max (succ u1) (succ u2)} ((coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) A') -> (coeSort.{succ u2, succ (succ u2)} (DiscreteQuotient.{u2} Y _inst_2) Type.{u2} (DiscreteQuotient.hasCoeToSort.{u2} Y _inst_2) B)) (Function.comp.{succ u1, succ u1, succ u2} (coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) A') (coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) A) (coeSort.{succ u2, succ (succ u2)} (DiscreteQuotient.{u2} Y _inst_2) Type.{u2} (DiscreteQuotient.hasCoeToSort.{u2} Y _inst_2) B) (DiscreteQuotient.map.{u1, u2} X Y _inst_1 _inst_2 A B f cond) (DiscreteQuotient.ofLE.{u1} X _inst_1 A' A h)) (DiscreteQuotient.map.{u1, u2} X Y _inst_1 _inst_2 A' B f (DiscreteQuotient.LEComap.mono.{u1, u2} X Y _inst_1 _inst_2 f A A' B B cond h (le_rfl.{u2} (DiscreteQuotient.{u2} Y _inst_2) (PartialOrder.toPreorder.{u2} (DiscreteQuotient.{u2} Y _inst_2) (SemilatticeInf.toPartialOrder.{u2} (DiscreteQuotient.{u2} Y _inst_2) (DiscreteQuotient.semilatticeInf.{u2} Y _inst_2))) B)))
 but is expected to have type
   forall {X : Type.{u2}} {Y : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} X] [_inst_2 : TopologicalSpace.{u1} Y] {f : ContinuousMap.{u2, u1} X Y _inst_1 _inst_2} {A : DiscreteQuotient.{u2} X _inst_1} {A' : DiscreteQuotient.{u2} X _inst_1} {B : DiscreteQuotient.{u1} Y _inst_2} (cond : DiscreteQuotient.LEComap.{u2, u1} X Y _inst_1 _inst_2 f A B) (h : LE.le.{u2} (DiscreteQuotient.{u2} X _inst_1) (Preorder.toLE.{u2} (DiscreteQuotient.{u2} X _inst_1) (PartialOrder.toPreorder.{u2} (DiscreteQuotient.{u2} X _inst_1) (SemilatticeInf.toPartialOrder.{u2} (DiscreteQuotient.{u2} X _inst_1) (DiscreteQuotient.instSemilatticeInfDiscreteQuotient.{u2} X _inst_1)))) A' A), Eq.{max (succ u2) (succ u1)} ((Quotient.{succ u2} X (DiscreteQuotient.toSetoid.{u2} X _inst_1 A')) -> (Quotient.{succ u1} Y (DiscreteQuotient.toSetoid.{u1} Y _inst_2 B))) (Function.comp.{succ u2, succ u2, succ u1} (Quotient.{succ u2} X (DiscreteQuotient.toSetoid.{u2} X _inst_1 A')) (Quotient.{succ u2} X (DiscreteQuotient.toSetoid.{u2} X _inst_1 A)) (Quotient.{succ u1} Y (DiscreteQuotient.toSetoid.{u1} Y _inst_2 B)) (DiscreteQuotient.map.{u2, u1} X Y _inst_1 _inst_2 A B f cond) (DiscreteQuotient.ofLE.{u2} X _inst_1 A' A h)) (DiscreteQuotient.map.{u2, u1} X Y _inst_1 _inst_2 A' B f (DiscreteQuotient.LEComap.mono.{u1, u2} X Y _inst_1 _inst_2 f A A' B B cond h (le_rfl.{u1} (DiscreteQuotient.{u1} Y _inst_2) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} Y _inst_2) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} Y _inst_2) (DiscreteQuotient.instSemilatticeInfDiscreteQuotient.{u1} Y _inst_2))) B)))
 Case conversion may be inaccurate. Consider using '#align discrete_quotient.map_comp_of_le DiscreteQuotient.map_comp_ofLEₓ'. -/
@@ -580,7 +580,7 @@ theorem eq_of_forall_proj_eq [T2Space X] [CompactSpace X] [disc : TotallyDisconn
 
 /- warning: discrete_quotient.fiber_subset_of_le -> DiscreteQuotient.fiber_subset_ofLE is a dubious translation:
 lean 3 declaration is
-  forall {X : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} X] {A : DiscreteQuotient.{u1} X _inst_1} {B : DiscreteQuotient.{u1} X _inst_1} (h : LE.le.{u1} (DiscreteQuotient.{u1} X _inst_1) (Preorder.toLE.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.semilatticeInf.{u1} X _inst_1)))) A B) (a : coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) A), HasSubset.Subset.{u1} (Set.{u1} X) (Set.hasSubset.{u1} X) (Set.preimage.{u1, u1} X (coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) A) (DiscreteQuotient.proj.{u1} X _inst_1 A) (Singleton.singleton.{u1, u1} (coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) A) (Set.{u1} (coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) A)) (Set.hasSingleton.{u1} (coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) A)) a)) (Set.preimage.{u1, u1} X (coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) B) (DiscreteQuotient.proj.{u1} X _inst_1 B) (Singleton.singleton.{u1, u1} (coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) B) (Set.{u1} (coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) B)) (Set.hasSingleton.{u1} (coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) B)) (DiscreteQuotient.ofLE.{u1} X _inst_1 A B h a)))
+  forall {X : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} X] {A : DiscreteQuotient.{u1} X _inst_1} {B : DiscreteQuotient.{u1} X _inst_1} (h : LE.le.{u1} (DiscreteQuotient.{u1} X _inst_1) (Preorder.toHasLe.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.semilatticeInf.{u1} X _inst_1)))) A B) (a : coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) A), HasSubset.Subset.{u1} (Set.{u1} X) (Set.hasSubset.{u1} X) (Set.preimage.{u1, u1} X (coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) A) (DiscreteQuotient.proj.{u1} X _inst_1 A) (Singleton.singleton.{u1, u1} (coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) A) (Set.{u1} (coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) A)) (Set.hasSingleton.{u1} (coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) A)) a)) (Set.preimage.{u1, u1} X (coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) B) (DiscreteQuotient.proj.{u1} X _inst_1 B) (Singleton.singleton.{u1, u1} (coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) B) (Set.{u1} (coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) B)) (Set.hasSingleton.{u1} (coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) B)) (DiscreteQuotient.ofLE.{u1} X _inst_1 A B h a)))
 but is expected to have type
   forall {X : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} X] {A : DiscreteQuotient.{u1} X _inst_1} {B : DiscreteQuotient.{u1} X _inst_1} (h : LE.le.{u1} (DiscreteQuotient.{u1} X _inst_1) (Preorder.toLE.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.instSemilatticeInfDiscreteQuotient.{u1} X _inst_1)))) A B) (a : Quotient.{succ u1} X (DiscreteQuotient.toSetoid.{u1} X _inst_1 A)), HasSubset.Subset.{u1} (Set.{u1} X) (Set.instHasSubsetSet.{u1} X) (Set.preimage.{u1, u1} X (Quotient.{succ u1} X (DiscreteQuotient.toSetoid.{u1} X _inst_1 A)) (DiscreteQuotient.proj.{u1} X _inst_1 A) (Singleton.singleton.{u1, u1} (Quotient.{succ u1} X (DiscreteQuotient.toSetoid.{u1} X _inst_1 A)) (Set.{u1} (Quotient.{succ u1} X (DiscreteQuotient.toSetoid.{u1} X _inst_1 A))) (Set.instSingletonSet.{u1} (Quotient.{succ u1} X (DiscreteQuotient.toSetoid.{u1} X _inst_1 A))) a)) (Set.preimage.{u1, u1} X (Quotient.{succ u1} X (DiscreteQuotient.toSetoid.{u1} X _inst_1 B)) (DiscreteQuotient.proj.{u1} X _inst_1 B) (Singleton.singleton.{u1, u1} (Quotient.{succ u1} X (DiscreteQuotient.toSetoid.{u1} X _inst_1 B)) (Set.{u1} (Quotient.{succ u1} X (DiscreteQuotient.toSetoid.{u1} X _inst_1 B))) (Set.instSingletonSet.{u1} (Quotient.{succ u1} X (DiscreteQuotient.toSetoid.{u1} X _inst_1 B))) (DiscreteQuotient.ofLE.{u1} X _inst_1 A B h a)))
 Case conversion may be inaccurate. Consider using '#align discrete_quotient.fiber_subset_of_le DiscreteQuotient.fiber_subset_ofLEₓ'. -/
@@ -594,7 +594,7 @@ theorem fiber_subset_ofLE {A B : DiscreteQuotient X} (h : A ≤ B) (a : A) :
 
 /- warning: discrete_quotient.exists_of_compat -> DiscreteQuotient.exists_of_compat is a dubious translation:
 lean 3 declaration is
-  forall {X : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} X] [_inst_4 : CompactSpace.{u1} X _inst_1] (Qs : forall (Q : DiscreteQuotient.{u1} X _inst_1), coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) Q), (forall (A : DiscreteQuotient.{u1} X _inst_1) (B : DiscreteQuotient.{u1} X _inst_1) (h : LE.le.{u1} (DiscreteQuotient.{u1} X _inst_1) (Preorder.toLE.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.semilatticeInf.{u1} X _inst_1)))) A B), Eq.{succ u1} (coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) B) (DiscreteQuotient.ofLE.{u1} X _inst_1 A B h (Qs A)) (Qs B)) -> (Exists.{succ u1} X (fun (x : X) => forall (Q : DiscreteQuotient.{u1} X _inst_1), Eq.{succ u1} (coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) Q) (DiscreteQuotient.proj.{u1} X _inst_1 Q x) (Qs Q)))
+  forall {X : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} X] [_inst_4 : CompactSpace.{u1} X _inst_1] (Qs : forall (Q : DiscreteQuotient.{u1} X _inst_1), coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) Q), (forall (A : DiscreteQuotient.{u1} X _inst_1) (B : DiscreteQuotient.{u1} X _inst_1) (h : LE.le.{u1} (DiscreteQuotient.{u1} X _inst_1) (Preorder.toHasLe.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.semilatticeInf.{u1} X _inst_1)))) A B), Eq.{succ u1} (coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) B) (DiscreteQuotient.ofLE.{u1} X _inst_1 A B h (Qs A)) (Qs B)) -> (Exists.{succ u1} X (fun (x : X) => forall (Q : DiscreteQuotient.{u1} X _inst_1), Eq.{succ u1} (coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) Q) (DiscreteQuotient.proj.{u1} X _inst_1 Q x) (Qs Q)))
 but is expected to have type
   forall {X : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} X] [_inst_4 : CompactSpace.{u1} X _inst_1] (Qs : forall (Q : DiscreteQuotient.{u1} X _inst_1), Quotient.{succ u1} X (DiscreteQuotient.toSetoid.{u1} X _inst_1 Q)), (forall (A : DiscreteQuotient.{u1} X _inst_1) (B : DiscreteQuotient.{u1} X _inst_1) (h : LE.le.{u1} (DiscreteQuotient.{u1} X _inst_1) (Preorder.toLE.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.instSemilatticeInfDiscreteQuotient.{u1} X _inst_1)))) A B), Eq.{succ u1} (Quotient.{succ u1} X (DiscreteQuotient.toSetoid.{u1} X _inst_1 B)) (DiscreteQuotient.ofLE.{u1} X _inst_1 A B h (Qs A)) (Qs B)) -> (Exists.{succ u1} X (fun (x : X) => forall (Q : DiscreteQuotient.{u1} X _inst_1), Eq.{succ u1} (Quotient.{succ u1} X (DiscreteQuotient.toSetoid.{u1} X _inst_1 Q)) (DiscreteQuotient.proj.{u1} X _inst_1 Q x) (Qs Q)))
 Case conversion may be inaccurate. Consider using '#align discrete_quotient.exists_of_compat DiscreteQuotient.exists_of_compatₓ'. -/
Diff
@@ -571,7 +571,7 @@ end Map
 theorem eq_of_forall_proj_eq [T2Space X] [CompactSpace X] [disc : TotallyDisconnectedSpace X]
     {x y : X} (h : ∀ Q : DiscreteQuotient X, Q.proj x = Q.proj y) : x = y :=
   by
-  rw [← mem_singleton_iff, ← connectedComponent_eq_singleton, connectedComponent_eq_interᵢ_clopen,
+  rw [← mem_singleton_iff, ← connectedComponent_eq_singleton, connectedComponent_eq_iInter_clopen,
     mem_Inter]
   rintro ⟨U, hU1, hU2⟩
   exact (Quotient.exact' (h (of_clopen hU1))).mpr hU2
@@ -603,7 +603,7 @@ theorem exists_of_compat [CompactSpace X] (Qs : ∀ Q : DiscreteQuotient X, Q)
     ∃ x : X, ∀ Q : DiscreteQuotient X, Q.proj x = Qs _ :=
   by
   obtain ⟨x, hx⟩ : (⋂ Q, proj Q ⁻¹' {Qs Q}).Nonempty :=
-    IsCompact.nonempty_interᵢ_of_directed_nonempty_compact_closed
+    IsCompact.nonempty_iInter_of_directed_nonempty_compact_closed
       (fun Q : DiscreteQuotient X => Q.proj ⁻¹' {Qs _}) (directed_of_inf fun A B h => _)
       (fun Q => (singleton_nonempty _).Preimage Q.proj_surjective)
       (fun i => (is_closed_preimage _ _).IsCompact) fun i => is_closed_preimage _ _
Diff
@@ -264,85 +264,85 @@ section OfLe
 
 variable {A B C : DiscreteQuotient X}
 
-/- warning: discrete_quotient.of_le -> DiscreteQuotient.ofLe is a dubious translation:
+/- warning: discrete_quotient.of_le -> DiscreteQuotient.ofLE is a dubious translation:
 lean 3 declaration is
   forall {X : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} X] {A : DiscreteQuotient.{u1} X _inst_1} {B : DiscreteQuotient.{u1} X _inst_1}, (LE.le.{u1} (DiscreteQuotient.{u1} X _inst_1) (Preorder.toLE.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.semilatticeInf.{u1} X _inst_1)))) A B) -> (coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) A) -> (coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) B)
 but is expected to have type
   forall {X : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} X] {A : DiscreteQuotient.{u1} X _inst_1} {B : DiscreteQuotient.{u1} X _inst_1}, (LE.le.{u1} (DiscreteQuotient.{u1} X _inst_1) (Preorder.toLE.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.instSemilatticeInfDiscreteQuotient.{u1} X _inst_1)))) A B) -> (Quotient.{succ u1} X (DiscreteQuotient.toSetoid.{u1} X _inst_1 A)) -> (Quotient.{succ u1} X (DiscreteQuotient.toSetoid.{u1} X _inst_1 B))
-Case conversion may be inaccurate. Consider using '#align discrete_quotient.of_le DiscreteQuotient.ofLeₓ'. -/
+Case conversion may be inaccurate. Consider using '#align discrete_quotient.of_le DiscreteQuotient.ofLEₓ'. -/
 /-- The map induced by a refinement of a discrete quotient. -/
-def ofLe (h : A ≤ B) : A → B :=
+def ofLE (h : A ≤ B) : A → B :=
   Quotient.map' (fun x => x) h
-#align discrete_quotient.of_le DiscreteQuotient.ofLe
+#align discrete_quotient.of_le DiscreteQuotient.ofLE
 
-#print DiscreteQuotient.ofLe_refl /-
+#print DiscreteQuotient.ofLE_refl /-
 @[simp]
-theorem ofLe_refl : ofLe (le_refl A) = id := by
+theorem ofLE_refl : ofLE (le_refl A) = id := by
   ext ⟨⟩
   rfl
-#align discrete_quotient.of_le_refl DiscreteQuotient.ofLe_refl
+#align discrete_quotient.of_le_refl DiscreteQuotient.ofLE_refl
 -/
 
-#print DiscreteQuotient.ofLe_refl_apply /-
-theorem ofLe_refl_apply (a : A) : ofLe (le_refl A) a = a := by simp
-#align discrete_quotient.of_le_refl_apply DiscreteQuotient.ofLe_refl_apply
+#print DiscreteQuotient.ofLE_refl_apply /-
+theorem ofLE_refl_apply (a : A) : ofLE (le_refl A) a = a := by simp
+#align discrete_quotient.of_le_refl_apply DiscreteQuotient.ofLE_refl_apply
 -/
 
-/- warning: discrete_quotient.of_le_of_le -> DiscreteQuotient.ofLe_ofLe is a dubious translation:
+/- warning: discrete_quotient.of_le_of_le -> DiscreteQuotient.ofLE_ofLE is a dubious translation:
 lean 3 declaration is
-  forall {X : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} X] {A : DiscreteQuotient.{u1} X _inst_1} {B : DiscreteQuotient.{u1} X _inst_1} {C : DiscreteQuotient.{u1} X _inst_1} (h₁ : LE.le.{u1} (DiscreteQuotient.{u1} X _inst_1) (Preorder.toLE.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.semilatticeInf.{u1} X _inst_1)))) A B) (h₂ : LE.le.{u1} (DiscreteQuotient.{u1} X _inst_1) (Preorder.toLE.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.semilatticeInf.{u1} X _inst_1)))) B C) (x : coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) A), Eq.{succ u1} (coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) C) (DiscreteQuotient.ofLe.{u1} X _inst_1 B C h₂ (DiscreteQuotient.ofLe.{u1} X _inst_1 A B h₁ x)) (DiscreteQuotient.ofLe.{u1} X _inst_1 A C (LE.le.trans.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.semilatticeInf.{u1} X _inst_1))) A B C h₁ h₂) x)
+  forall {X : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} X] {A : DiscreteQuotient.{u1} X _inst_1} {B : DiscreteQuotient.{u1} X _inst_1} {C : DiscreteQuotient.{u1} X _inst_1} (h₁ : LE.le.{u1} (DiscreteQuotient.{u1} X _inst_1) (Preorder.toLE.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.semilatticeInf.{u1} X _inst_1)))) A B) (h₂ : LE.le.{u1} (DiscreteQuotient.{u1} X _inst_1) (Preorder.toLE.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.semilatticeInf.{u1} X _inst_1)))) B C) (x : coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) A), Eq.{succ u1} (coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) C) (DiscreteQuotient.ofLE.{u1} X _inst_1 B C h₂ (DiscreteQuotient.ofLE.{u1} X _inst_1 A B h₁ x)) (DiscreteQuotient.ofLE.{u1} X _inst_1 A C (LE.le.trans.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.semilatticeInf.{u1} X _inst_1))) A B C h₁ h₂) x)
 but is expected to have type
-  forall {X : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} X] {A : DiscreteQuotient.{u1} X _inst_1} {B : DiscreteQuotient.{u1} X _inst_1} {C : DiscreteQuotient.{u1} X _inst_1} (h₁ : LE.le.{u1} (DiscreteQuotient.{u1} X _inst_1) (Preorder.toLE.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.instSemilatticeInfDiscreteQuotient.{u1} X _inst_1)))) A B) (h₂ : LE.le.{u1} (DiscreteQuotient.{u1} X _inst_1) (Preorder.toLE.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.instSemilatticeInfDiscreteQuotient.{u1} X _inst_1)))) B C) (x : Quotient.{succ u1} X (DiscreteQuotient.toSetoid.{u1} X _inst_1 A)), Eq.{succ u1} (Quotient.{succ u1} X (DiscreteQuotient.toSetoid.{u1} X _inst_1 C)) (DiscreteQuotient.ofLe.{u1} X _inst_1 B C h₂ (DiscreteQuotient.ofLe.{u1} X _inst_1 A B h₁ x)) (DiscreteQuotient.ofLe.{u1} X _inst_1 A C (LE.le.trans.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.instSemilatticeInfDiscreteQuotient.{u1} X _inst_1))) A B C h₁ h₂) x)
-Case conversion may be inaccurate. Consider using '#align discrete_quotient.of_le_of_le DiscreteQuotient.ofLe_ofLeₓ'. -/
+  forall {X : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} X] {A : DiscreteQuotient.{u1} X _inst_1} {B : DiscreteQuotient.{u1} X _inst_1} {C : DiscreteQuotient.{u1} X _inst_1} (h₁ : LE.le.{u1} (DiscreteQuotient.{u1} X _inst_1) (Preorder.toLE.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.instSemilatticeInfDiscreteQuotient.{u1} X _inst_1)))) A B) (h₂ : LE.le.{u1} (DiscreteQuotient.{u1} X _inst_1) (Preorder.toLE.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.instSemilatticeInfDiscreteQuotient.{u1} X _inst_1)))) B C) (x : Quotient.{succ u1} X (DiscreteQuotient.toSetoid.{u1} X _inst_1 A)), Eq.{succ u1} (Quotient.{succ u1} X (DiscreteQuotient.toSetoid.{u1} X _inst_1 C)) (DiscreteQuotient.ofLE.{u1} X _inst_1 B C h₂ (DiscreteQuotient.ofLE.{u1} X _inst_1 A B h₁ x)) (DiscreteQuotient.ofLE.{u1} X _inst_1 A C (LE.le.trans.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.instSemilatticeInfDiscreteQuotient.{u1} X _inst_1))) A B C h₁ h₂) x)
+Case conversion may be inaccurate. Consider using '#align discrete_quotient.of_le_of_le DiscreteQuotient.ofLE_ofLEₓ'. -/
 @[simp]
-theorem ofLe_ofLe (h₁ : A ≤ B) (h₂ : B ≤ C) (x : A) : ofLe h₂ (ofLe h₁ x) = ofLe (h₁.trans h₂) x :=
+theorem ofLE_ofLE (h₁ : A ≤ B) (h₂ : B ≤ C) (x : A) : ofLE h₂ (ofLE h₁ x) = ofLE (h₁.trans h₂) x :=
   by
   rcases x with ⟨⟩
   rfl
-#align discrete_quotient.of_le_of_le DiscreteQuotient.ofLe_ofLe
+#align discrete_quotient.of_le_of_le DiscreteQuotient.ofLE_ofLE
 
-/- warning: discrete_quotient.of_le_comp_of_le -> DiscreteQuotient.ofLe_comp_ofLe is a dubious translation:
+/- warning: discrete_quotient.of_le_comp_of_le -> DiscreteQuotient.ofLE_comp_ofLE is a dubious translation:
 lean 3 declaration is
-  forall {X : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} X] {A : DiscreteQuotient.{u1} X _inst_1} {B : DiscreteQuotient.{u1} X _inst_1} {C : DiscreteQuotient.{u1} X _inst_1} (h₁ : LE.le.{u1} (DiscreteQuotient.{u1} X _inst_1) (Preorder.toLE.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.semilatticeInf.{u1} X _inst_1)))) A B) (h₂ : LE.le.{u1} (DiscreteQuotient.{u1} X _inst_1) (Preorder.toLE.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.semilatticeInf.{u1} X _inst_1)))) B C), Eq.{succ u1} ((coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) A) -> (coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) C)) (Function.comp.{succ u1, succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) A) (coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) B) (coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) C) (DiscreteQuotient.ofLe.{u1} X _inst_1 B C h₂) (DiscreteQuotient.ofLe.{u1} X _inst_1 A B h₁)) (DiscreteQuotient.ofLe.{u1} X _inst_1 A C (le_trans.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.semilatticeInf.{u1} X _inst_1))) A B C h₁ h₂))
+  forall {X : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} X] {A : DiscreteQuotient.{u1} X _inst_1} {B : DiscreteQuotient.{u1} X _inst_1} {C : DiscreteQuotient.{u1} X _inst_1} (h₁ : LE.le.{u1} (DiscreteQuotient.{u1} X _inst_1) (Preorder.toLE.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.semilatticeInf.{u1} X _inst_1)))) A B) (h₂ : LE.le.{u1} (DiscreteQuotient.{u1} X _inst_1) (Preorder.toLE.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.semilatticeInf.{u1} X _inst_1)))) B C), Eq.{succ u1} ((coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) A) -> (coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) C)) (Function.comp.{succ u1, succ u1, succ u1} (coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) A) (coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) B) (coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) C) (DiscreteQuotient.ofLE.{u1} X _inst_1 B C h₂) (DiscreteQuotient.ofLE.{u1} X _inst_1 A B h₁)) (DiscreteQuotient.ofLE.{u1} X _inst_1 A C (le_trans.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.semilatticeInf.{u1} X _inst_1))) A B C h₁ h₂))
 but is expected to have type
-  forall {X : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} X] {A : DiscreteQuotient.{u1} X _inst_1} {B : DiscreteQuotient.{u1} X _inst_1} {C : DiscreteQuotient.{u1} X _inst_1} (h₁ : LE.le.{u1} (DiscreteQuotient.{u1} X _inst_1) (Preorder.toLE.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.instSemilatticeInfDiscreteQuotient.{u1} X _inst_1)))) A B) (h₂ : LE.le.{u1} (DiscreteQuotient.{u1} X _inst_1) (Preorder.toLE.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.instSemilatticeInfDiscreteQuotient.{u1} X _inst_1)))) B C), Eq.{succ u1} ((Quotient.{succ u1} X (DiscreteQuotient.toSetoid.{u1} X _inst_1 A)) -> (Quotient.{succ u1} X (DiscreteQuotient.toSetoid.{u1} X _inst_1 C))) (Function.comp.{succ u1, succ u1, succ u1} (Quotient.{succ u1} X (DiscreteQuotient.toSetoid.{u1} X _inst_1 A)) (Quotient.{succ u1} X (DiscreteQuotient.toSetoid.{u1} X _inst_1 B)) (Quotient.{succ u1} X (DiscreteQuotient.toSetoid.{u1} X _inst_1 C)) (DiscreteQuotient.ofLe.{u1} X _inst_1 B C h₂) (DiscreteQuotient.ofLe.{u1} X _inst_1 A B h₁)) (DiscreteQuotient.ofLe.{u1} X _inst_1 A C (le_trans.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.instSemilatticeInfDiscreteQuotient.{u1} X _inst_1))) A B C h₁ h₂))
-Case conversion may be inaccurate. Consider using '#align discrete_quotient.of_le_comp_of_le DiscreteQuotient.ofLe_comp_ofLeₓ'. -/
+  forall {X : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} X] {A : DiscreteQuotient.{u1} X _inst_1} {B : DiscreteQuotient.{u1} X _inst_1} {C : DiscreteQuotient.{u1} X _inst_1} (h₁ : LE.le.{u1} (DiscreteQuotient.{u1} X _inst_1) (Preorder.toLE.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.instSemilatticeInfDiscreteQuotient.{u1} X _inst_1)))) A B) (h₂ : LE.le.{u1} (DiscreteQuotient.{u1} X _inst_1) (Preorder.toLE.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.instSemilatticeInfDiscreteQuotient.{u1} X _inst_1)))) B C), Eq.{succ u1} ((Quotient.{succ u1} X (DiscreteQuotient.toSetoid.{u1} X _inst_1 A)) -> (Quotient.{succ u1} X (DiscreteQuotient.toSetoid.{u1} X _inst_1 C))) (Function.comp.{succ u1, succ u1, succ u1} (Quotient.{succ u1} X (DiscreteQuotient.toSetoid.{u1} X _inst_1 A)) (Quotient.{succ u1} X (DiscreteQuotient.toSetoid.{u1} X _inst_1 B)) (Quotient.{succ u1} X (DiscreteQuotient.toSetoid.{u1} X _inst_1 C)) (DiscreteQuotient.ofLE.{u1} X _inst_1 B C h₂) (DiscreteQuotient.ofLE.{u1} X _inst_1 A B h₁)) (DiscreteQuotient.ofLE.{u1} X _inst_1 A C (le_trans.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.instSemilatticeInfDiscreteQuotient.{u1} X _inst_1))) A B C h₁ h₂))
+Case conversion may be inaccurate. Consider using '#align discrete_quotient.of_le_comp_of_le DiscreteQuotient.ofLE_comp_ofLEₓ'. -/
 @[simp]
-theorem ofLe_comp_ofLe (h₁ : A ≤ B) (h₂ : B ≤ C) : ofLe h₂ ∘ ofLe h₁ = ofLe (le_trans h₁ h₂) :=
-  funext <| ofLe_ofLe _ _
-#align discrete_quotient.of_le_comp_of_le DiscreteQuotient.ofLe_comp_ofLe
+theorem ofLE_comp_ofLE (h₁ : A ≤ B) (h₂ : B ≤ C) : ofLE h₂ ∘ ofLE h₁ = ofLE (le_trans h₁ h₂) :=
+  funext <| ofLE_ofLE _ _
+#align discrete_quotient.of_le_comp_of_le DiscreteQuotient.ofLE_comp_ofLE
 
-/- warning: discrete_quotient.of_le_continuous -> DiscreteQuotient.ofLe_continuous is a dubious translation:
+/- warning: discrete_quotient.of_le_continuous -> DiscreteQuotient.ofLE_continuous is a dubious translation:
 lean 3 declaration is
-  forall {X : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} X] {A : DiscreteQuotient.{u1} X _inst_1} {B : DiscreteQuotient.{u1} X _inst_1} (h : LE.le.{u1} (DiscreteQuotient.{u1} X _inst_1) (Preorder.toLE.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.semilatticeInf.{u1} X _inst_1)))) A B), Continuous.{u1, u1} (coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) A) (coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) B) (DiscreteQuotient.topologicalSpace.{u1} X _inst_1 A) (DiscreteQuotient.topologicalSpace.{u1} X _inst_1 B) (DiscreteQuotient.ofLe.{u1} X _inst_1 A B h)
+  forall {X : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} X] {A : DiscreteQuotient.{u1} X _inst_1} {B : DiscreteQuotient.{u1} X _inst_1} (h : LE.le.{u1} (DiscreteQuotient.{u1} X _inst_1) (Preorder.toLE.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.semilatticeInf.{u1} X _inst_1)))) A B), Continuous.{u1, u1} (coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) A) (coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) B) (DiscreteQuotient.topologicalSpace.{u1} X _inst_1 A) (DiscreteQuotient.topologicalSpace.{u1} X _inst_1 B) (DiscreteQuotient.ofLE.{u1} X _inst_1 A B h)
 but is expected to have type
-  forall {X : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} X] {A : DiscreteQuotient.{u1} X _inst_1} {B : DiscreteQuotient.{u1} X _inst_1} (h : LE.le.{u1} (DiscreteQuotient.{u1} X _inst_1) (Preorder.toLE.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.instSemilatticeInfDiscreteQuotient.{u1} X _inst_1)))) A B), Continuous.{u1, u1} (Quotient.{succ u1} X (DiscreteQuotient.toSetoid.{u1} X _inst_1 A)) (Quotient.{succ u1} X (DiscreteQuotient.toSetoid.{u1} X _inst_1 B)) (DiscreteQuotient.instTopologicalSpaceQuotientToSetoid.{u1} X _inst_1 A) (DiscreteQuotient.instTopologicalSpaceQuotientToSetoid.{u1} X _inst_1 B) (DiscreteQuotient.ofLe.{u1} X _inst_1 A B h)
-Case conversion may be inaccurate. Consider using '#align discrete_quotient.of_le_continuous DiscreteQuotient.ofLe_continuousₓ'. -/
-theorem ofLe_continuous (h : A ≤ B) : Continuous (ofLe h) :=
+  forall {X : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} X] {A : DiscreteQuotient.{u1} X _inst_1} {B : DiscreteQuotient.{u1} X _inst_1} (h : LE.le.{u1} (DiscreteQuotient.{u1} X _inst_1) (Preorder.toLE.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.instSemilatticeInfDiscreteQuotient.{u1} X _inst_1)))) A B), Continuous.{u1, u1} (Quotient.{succ u1} X (DiscreteQuotient.toSetoid.{u1} X _inst_1 A)) (Quotient.{succ u1} X (DiscreteQuotient.toSetoid.{u1} X _inst_1 B)) (DiscreteQuotient.instTopologicalSpaceQuotientToSetoid.{u1} X _inst_1 A) (DiscreteQuotient.instTopologicalSpaceQuotientToSetoid.{u1} X _inst_1 B) (DiscreteQuotient.ofLE.{u1} X _inst_1 A B h)
+Case conversion may be inaccurate. Consider using '#align discrete_quotient.of_le_continuous DiscreteQuotient.ofLE_continuousₓ'. -/
+theorem ofLE_continuous (h : A ≤ B) : Continuous (ofLE h) :=
   continuous_of_discreteTopology
-#align discrete_quotient.of_le_continuous DiscreteQuotient.ofLe_continuous
+#align discrete_quotient.of_le_continuous DiscreteQuotient.ofLE_continuous
 
-/- warning: discrete_quotient.of_le_proj -> DiscreteQuotient.ofLe_proj is a dubious translation:
+/- warning: discrete_quotient.of_le_proj -> DiscreteQuotient.ofLE_proj is a dubious translation:
 lean 3 declaration is
-  forall {X : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} X] {A : DiscreteQuotient.{u1} X _inst_1} {B : DiscreteQuotient.{u1} X _inst_1} (h : LE.le.{u1} (DiscreteQuotient.{u1} X _inst_1) (Preorder.toLE.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.semilatticeInf.{u1} X _inst_1)))) A B) (x : X), Eq.{succ u1} (coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) B) (DiscreteQuotient.ofLe.{u1} X _inst_1 A B h (DiscreteQuotient.proj.{u1} X _inst_1 A x)) (DiscreteQuotient.proj.{u1} X _inst_1 B x)
+  forall {X : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} X] {A : DiscreteQuotient.{u1} X _inst_1} {B : DiscreteQuotient.{u1} X _inst_1} (h : LE.le.{u1} (DiscreteQuotient.{u1} X _inst_1) (Preorder.toLE.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.semilatticeInf.{u1} X _inst_1)))) A B) (x : X), Eq.{succ u1} (coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) B) (DiscreteQuotient.ofLE.{u1} X _inst_1 A B h (DiscreteQuotient.proj.{u1} X _inst_1 A x)) (DiscreteQuotient.proj.{u1} X _inst_1 B x)
 but is expected to have type
-  forall {X : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} X] {A : DiscreteQuotient.{u1} X _inst_1} {B : DiscreteQuotient.{u1} X _inst_1} (h : LE.le.{u1} (DiscreteQuotient.{u1} X _inst_1) (Preorder.toLE.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.instSemilatticeInfDiscreteQuotient.{u1} X _inst_1)))) A B) (x : X), Eq.{succ u1} (Quotient.{succ u1} X (DiscreteQuotient.toSetoid.{u1} X _inst_1 B)) (DiscreteQuotient.ofLe.{u1} X _inst_1 A B h (DiscreteQuotient.proj.{u1} X _inst_1 A x)) (DiscreteQuotient.proj.{u1} X _inst_1 B x)
-Case conversion may be inaccurate. Consider using '#align discrete_quotient.of_le_proj DiscreteQuotient.ofLe_projₓ'. -/
+  forall {X : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} X] {A : DiscreteQuotient.{u1} X _inst_1} {B : DiscreteQuotient.{u1} X _inst_1} (h : LE.le.{u1} (DiscreteQuotient.{u1} X _inst_1) (Preorder.toLE.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.instSemilatticeInfDiscreteQuotient.{u1} X _inst_1)))) A B) (x : X), Eq.{succ u1} (Quotient.{succ u1} X (DiscreteQuotient.toSetoid.{u1} X _inst_1 B)) (DiscreteQuotient.ofLE.{u1} X _inst_1 A B h (DiscreteQuotient.proj.{u1} X _inst_1 A x)) (DiscreteQuotient.proj.{u1} X _inst_1 B x)
+Case conversion may be inaccurate. Consider using '#align discrete_quotient.of_le_proj DiscreteQuotient.ofLE_projₓ'. -/
 @[simp]
-theorem ofLe_proj (h : A ≤ B) (x : X) : ofLe h (A.proj x) = B.proj x :=
+theorem ofLE_proj (h : A ≤ B) (x : X) : ofLE h (A.proj x) = B.proj x :=
   Quotient.sound' (B.refl _)
-#align discrete_quotient.of_le_proj DiscreteQuotient.ofLe_proj
+#align discrete_quotient.of_le_proj DiscreteQuotient.ofLE_proj
 
-/- warning: discrete_quotient.of_le_comp_proj -> DiscreteQuotient.ofLe_comp_proj is a dubious translation:
+/- warning: discrete_quotient.of_le_comp_proj -> DiscreteQuotient.ofLE_comp_proj is a dubious translation:
 lean 3 declaration is
-  forall {X : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} X] {A : DiscreteQuotient.{u1} X _inst_1} {B : DiscreteQuotient.{u1} X _inst_1} (h : LE.le.{u1} (DiscreteQuotient.{u1} X _inst_1) (Preorder.toLE.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.semilatticeInf.{u1} X _inst_1)))) A B), Eq.{succ u1} (X -> (coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) B)) (Function.comp.{succ u1, succ u1, succ u1} X (coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) A) (coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) B) (DiscreteQuotient.ofLe.{u1} X _inst_1 A B h) (DiscreteQuotient.proj.{u1} X _inst_1 A)) (DiscreteQuotient.proj.{u1} X _inst_1 B)
+  forall {X : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} X] {A : DiscreteQuotient.{u1} X _inst_1} {B : DiscreteQuotient.{u1} X _inst_1} (h : LE.le.{u1} (DiscreteQuotient.{u1} X _inst_1) (Preorder.toLE.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.semilatticeInf.{u1} X _inst_1)))) A B), Eq.{succ u1} (X -> (coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) B)) (Function.comp.{succ u1, succ u1, succ u1} X (coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) A) (coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) B) (DiscreteQuotient.ofLE.{u1} X _inst_1 A B h) (DiscreteQuotient.proj.{u1} X _inst_1 A)) (DiscreteQuotient.proj.{u1} X _inst_1 B)
 but is expected to have type
-  forall {X : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} X] {A : DiscreteQuotient.{u1} X _inst_1} {B : DiscreteQuotient.{u1} X _inst_1} (h : LE.le.{u1} (DiscreteQuotient.{u1} X _inst_1) (Preorder.toLE.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.instSemilatticeInfDiscreteQuotient.{u1} X _inst_1)))) A B), Eq.{succ u1} (X -> (Quotient.{succ u1} X (DiscreteQuotient.toSetoid.{u1} X _inst_1 B))) (Function.comp.{succ u1, succ u1, succ u1} X (Quotient.{succ u1} X (DiscreteQuotient.toSetoid.{u1} X _inst_1 A)) (Quotient.{succ u1} X (DiscreteQuotient.toSetoid.{u1} X _inst_1 B)) (DiscreteQuotient.ofLe.{u1} X _inst_1 A B h) (DiscreteQuotient.proj.{u1} X _inst_1 A)) (DiscreteQuotient.proj.{u1} X _inst_1 B)
-Case conversion may be inaccurate. Consider using '#align discrete_quotient.of_le_comp_proj DiscreteQuotient.ofLe_comp_projₓ'. -/
+  forall {X : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} X] {A : DiscreteQuotient.{u1} X _inst_1} {B : DiscreteQuotient.{u1} X _inst_1} (h : LE.le.{u1} (DiscreteQuotient.{u1} X _inst_1) (Preorder.toLE.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.instSemilatticeInfDiscreteQuotient.{u1} X _inst_1)))) A B), Eq.{succ u1} (X -> (Quotient.{succ u1} X (DiscreteQuotient.toSetoid.{u1} X _inst_1 B))) (Function.comp.{succ u1, succ u1, succ u1} X (Quotient.{succ u1} X (DiscreteQuotient.toSetoid.{u1} X _inst_1 A)) (Quotient.{succ u1} X (DiscreteQuotient.toSetoid.{u1} X _inst_1 B)) (DiscreteQuotient.ofLE.{u1} X _inst_1 A B h) (DiscreteQuotient.proj.{u1} X _inst_1 A)) (DiscreteQuotient.proj.{u1} X _inst_1 B)
+Case conversion may be inaccurate. Consider using '#align discrete_quotient.of_le_comp_proj DiscreteQuotient.ofLE_comp_projₓ'. -/
 @[simp]
-theorem ofLe_comp_proj (h : A ≤ B) : ofLe h ∘ A.proj = B.proj :=
-  funext <| ofLe_proj _
-#align discrete_quotient.of_le_comp_proj DiscreteQuotient.ofLe_comp_proj
+theorem ofLE_comp_proj (h : A ≤ B) : ofLE h ∘ A.proj = B.proj :=
+  funext <| ofLE_proj _
+#align discrete_quotient.of_le_comp_proj DiscreteQuotient.ofLE_comp_proj
 
 end OfLe
 
@@ -409,16 +409,16 @@ section Map
 
 variable (f : C(X, Y)) (A A' : DiscreteQuotient X) (B B' : DiscreteQuotient Y)
 
-#print DiscreteQuotient.LeComap /-
+#print DiscreteQuotient.LEComap /-
 /-- Given `f : C(X, Y)`, `le_comap cont A B` is defined as `A ≤ B.comap f`. Mathematically this
 means that `f` descends to a morphism `A → B`. -/
-def LeComap : Prop :=
+def LEComap : Prop :=
   A ≤ B.comap f
-#align discrete_quotient.le_comap DiscreteQuotient.LeComap
+#align discrete_quotient.le_comap DiscreteQuotient.LEComap
 -/
 
 #print DiscreteQuotient.leComap_id /-
-theorem leComap_id : LeComap (ContinuousMap.id X) A A := fun _ _ => id
+theorem leComap_id : LEComap (ContinuousMap.id X) A A := fun _ _ => id
 #align discrete_quotient.le_comap_id DiscreteQuotient.leComap_id
 -/
 
@@ -426,70 +426,70 @@ variable {A A' B B'} {f} {g : C(Y, Z)} {C : DiscreteQuotient Z}
 
 /- warning: discrete_quotient.le_comap_id_iff -> DiscreteQuotient.leComap_id_iff is a dubious translation:
 lean 3 declaration is
-  forall {X : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} X] {A : DiscreteQuotient.{u1} X _inst_1} {A' : DiscreteQuotient.{u1} X _inst_1}, Iff (DiscreteQuotient.LeComap.{u1, u1} X X _inst_1 _inst_1 (ContinuousMap.id.{u1} X _inst_1) A A') (LE.le.{u1} (DiscreteQuotient.{u1} X _inst_1) (Preorder.toLE.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.semilatticeInf.{u1} X _inst_1)))) A A')
+  forall {X : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} X] {A : DiscreteQuotient.{u1} X _inst_1} {A' : DiscreteQuotient.{u1} X _inst_1}, Iff (DiscreteQuotient.LEComap.{u1, u1} X X _inst_1 _inst_1 (ContinuousMap.id.{u1} X _inst_1) A A') (LE.le.{u1} (DiscreteQuotient.{u1} X _inst_1) (Preorder.toLE.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.semilatticeInf.{u1} X _inst_1)))) A A')
 but is expected to have type
-  forall {X : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} X] {A : DiscreteQuotient.{u1} X _inst_1} {A' : DiscreteQuotient.{u1} X _inst_1}, Iff (DiscreteQuotient.LeComap.{u1, u1} X X _inst_1 _inst_1 (ContinuousMap.id.{u1} X _inst_1) A A') (LE.le.{u1} (DiscreteQuotient.{u1} X _inst_1) (Preorder.toLE.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.instSemilatticeInfDiscreteQuotient.{u1} X _inst_1)))) A A')
+  forall {X : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} X] {A : DiscreteQuotient.{u1} X _inst_1} {A' : DiscreteQuotient.{u1} X _inst_1}, Iff (DiscreteQuotient.LEComap.{u1, u1} X X _inst_1 _inst_1 (ContinuousMap.id.{u1} X _inst_1) A A') (LE.le.{u1} (DiscreteQuotient.{u1} X _inst_1) (Preorder.toLE.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.instSemilatticeInfDiscreteQuotient.{u1} X _inst_1)))) A A')
 Case conversion may be inaccurate. Consider using '#align discrete_quotient.le_comap_id_iff DiscreteQuotient.leComap_id_iffₓ'. -/
 @[simp]
-theorem leComap_id_iff : LeComap (ContinuousMap.id X) A A' ↔ A ≤ A' :=
+theorem leComap_id_iff : LEComap (ContinuousMap.id X) A A' ↔ A ≤ A' :=
   Iff.rfl
 #align discrete_quotient.le_comap_id_iff DiscreteQuotient.leComap_id_iff
 
-/- warning: discrete_quotient.le_comap.comp -> DiscreteQuotient.LeComap.comp is a dubious translation:
+/- warning: discrete_quotient.le_comap.comp -> DiscreteQuotient.LEComap.comp is a dubious translation:
 lean 3 declaration is
-  forall {X : Type.{u1}} {Y : Type.{u2}} {Z : Type.{u3}} [_inst_1 : TopologicalSpace.{u1} X] [_inst_2 : TopologicalSpace.{u2} Y] [_inst_3 : TopologicalSpace.{u3} Z] {f : ContinuousMap.{u1, u2} X Y _inst_1 _inst_2} {A : DiscreteQuotient.{u1} X _inst_1} {B : DiscreteQuotient.{u2} Y _inst_2} {g : ContinuousMap.{u2, u3} Y Z _inst_2 _inst_3} {C : DiscreteQuotient.{u3} Z _inst_3}, (DiscreteQuotient.LeComap.{u2, u3} Y Z _inst_2 _inst_3 g B C) -> (DiscreteQuotient.LeComap.{u1, u2} X Y _inst_1 _inst_2 f A B) -> (DiscreteQuotient.LeComap.{u1, u3} X Z _inst_1 _inst_3 (ContinuousMap.comp.{u1, u2, u3} X Y Z _inst_1 _inst_2 _inst_3 g f) A C)
+  forall {X : Type.{u1}} {Y : Type.{u2}} {Z : Type.{u3}} [_inst_1 : TopologicalSpace.{u1} X] [_inst_2 : TopologicalSpace.{u2} Y] [_inst_3 : TopologicalSpace.{u3} Z] {f : ContinuousMap.{u1, u2} X Y _inst_1 _inst_2} {A : DiscreteQuotient.{u1} X _inst_1} {B : DiscreteQuotient.{u2} Y _inst_2} {g : ContinuousMap.{u2, u3} Y Z _inst_2 _inst_3} {C : DiscreteQuotient.{u3} Z _inst_3}, (DiscreteQuotient.LEComap.{u2, u3} Y Z _inst_2 _inst_3 g B C) -> (DiscreteQuotient.LEComap.{u1, u2} X Y _inst_1 _inst_2 f A B) -> (DiscreteQuotient.LEComap.{u1, u3} X Z _inst_1 _inst_3 (ContinuousMap.comp.{u1, u2, u3} X Y Z _inst_1 _inst_2 _inst_3 g f) A C)
 but is expected to have type
-  forall {X : Type.{u1}} {Y : Type.{u3}} {Z : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} X] [_inst_2 : TopologicalSpace.{u3} Y] [_inst_3 : TopologicalSpace.{u2} Z] {f : ContinuousMap.{u1, u3} X Y _inst_1 _inst_2} {A : DiscreteQuotient.{u1} X _inst_1} {B : DiscreteQuotient.{u3} Y _inst_2} {g : ContinuousMap.{u3, u2} Y Z _inst_2 _inst_3} {C : DiscreteQuotient.{u2} Z _inst_3}, (DiscreteQuotient.LeComap.{u3, u2} Y Z _inst_2 _inst_3 g B C) -> (DiscreteQuotient.LeComap.{u1, u3} X Y _inst_1 _inst_2 f A B) -> (DiscreteQuotient.LeComap.{u1, u2} X Z _inst_1 _inst_3 (ContinuousMap.comp.{u1, u3, u2} X Y Z _inst_1 _inst_2 _inst_3 g f) A C)
-Case conversion may be inaccurate. Consider using '#align discrete_quotient.le_comap.comp DiscreteQuotient.LeComap.compₓ'. -/
-theorem LeComap.comp : LeComap g B C → LeComap f A B → LeComap (g.comp f) A C := by tauto
-#align discrete_quotient.le_comap.comp DiscreteQuotient.LeComap.comp
+  forall {X : Type.{u1}} {Y : Type.{u3}} {Z : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} X] [_inst_2 : TopologicalSpace.{u3} Y] [_inst_3 : TopologicalSpace.{u2} Z] {f : ContinuousMap.{u1, u3} X Y _inst_1 _inst_2} {A : DiscreteQuotient.{u1} X _inst_1} {B : DiscreteQuotient.{u3} Y _inst_2} {g : ContinuousMap.{u3, u2} Y Z _inst_2 _inst_3} {C : DiscreteQuotient.{u2} Z _inst_3}, (DiscreteQuotient.LEComap.{u3, u2} Y Z _inst_2 _inst_3 g B C) -> (DiscreteQuotient.LEComap.{u1, u3} X Y _inst_1 _inst_2 f A B) -> (DiscreteQuotient.LEComap.{u1, u2} X Z _inst_1 _inst_3 (ContinuousMap.comp.{u1, u3, u2} X Y Z _inst_1 _inst_2 _inst_3 g f) A C)
+Case conversion may be inaccurate. Consider using '#align discrete_quotient.le_comap.comp DiscreteQuotient.LEComap.compₓ'. -/
+theorem LEComap.comp : LEComap g B C → LEComap f A B → LEComap (g.comp f) A C := by tauto
+#align discrete_quotient.le_comap.comp DiscreteQuotient.LEComap.comp
 
-/- warning: discrete_quotient.le_comap.mono -> DiscreteQuotient.LeComap.mono is a dubious translation:
+/- warning: discrete_quotient.le_comap.mono -> DiscreteQuotient.LEComap.mono is a dubious translation:
 lean 3 declaration is
-  forall {X : Type.{u1}} {Y : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} X] [_inst_2 : TopologicalSpace.{u2} Y] {f : ContinuousMap.{u1, u2} X Y _inst_1 _inst_2} {A : DiscreteQuotient.{u1} X _inst_1} {A' : DiscreteQuotient.{u1} X _inst_1} {B : DiscreteQuotient.{u2} Y _inst_2} {B' : DiscreteQuotient.{u2} Y _inst_2}, (DiscreteQuotient.LeComap.{u1, u2} X Y _inst_1 _inst_2 f A B) -> (LE.le.{u1} (DiscreteQuotient.{u1} X _inst_1) (Preorder.toLE.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.semilatticeInf.{u1} X _inst_1)))) A' A) -> (LE.le.{u2} (DiscreteQuotient.{u2} Y _inst_2) (Preorder.toLE.{u2} (DiscreteQuotient.{u2} Y _inst_2) (PartialOrder.toPreorder.{u2} (DiscreteQuotient.{u2} Y _inst_2) (SemilatticeInf.toPartialOrder.{u2} (DiscreteQuotient.{u2} Y _inst_2) (DiscreteQuotient.semilatticeInf.{u2} Y _inst_2)))) B B') -> (DiscreteQuotient.LeComap.{u1, u2} X Y _inst_1 _inst_2 f A' B')
+  forall {X : Type.{u1}} {Y : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} X] [_inst_2 : TopologicalSpace.{u2} Y] {f : ContinuousMap.{u1, u2} X Y _inst_1 _inst_2} {A : DiscreteQuotient.{u1} X _inst_1} {A' : DiscreteQuotient.{u1} X _inst_1} {B : DiscreteQuotient.{u2} Y _inst_2} {B' : DiscreteQuotient.{u2} Y _inst_2}, (DiscreteQuotient.LEComap.{u1, u2} X Y _inst_1 _inst_2 f A B) -> (LE.le.{u1} (DiscreteQuotient.{u1} X _inst_1) (Preorder.toLE.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.semilatticeInf.{u1} X _inst_1)))) A' A) -> (LE.le.{u2} (DiscreteQuotient.{u2} Y _inst_2) (Preorder.toLE.{u2} (DiscreteQuotient.{u2} Y _inst_2) (PartialOrder.toPreorder.{u2} (DiscreteQuotient.{u2} Y _inst_2) (SemilatticeInf.toPartialOrder.{u2} (DiscreteQuotient.{u2} Y _inst_2) (DiscreteQuotient.semilatticeInf.{u2} Y _inst_2)))) B B') -> (DiscreteQuotient.LEComap.{u1, u2} X Y _inst_1 _inst_2 f A' B')
 but is expected to have type
-  forall {X : Type.{u2}} {Y : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} X] [_inst_2 : TopologicalSpace.{u1} Y] {f : ContinuousMap.{u2, u1} X Y _inst_1 _inst_2} {A : DiscreteQuotient.{u2} X _inst_1} {A' : DiscreteQuotient.{u2} X _inst_1} {B : DiscreteQuotient.{u1} Y _inst_2} {B' : DiscreteQuotient.{u1} Y _inst_2}, (DiscreteQuotient.LeComap.{u2, u1} X Y _inst_1 _inst_2 f A B) -> (LE.le.{u2} (DiscreteQuotient.{u2} X _inst_1) (Preorder.toLE.{u2} (DiscreteQuotient.{u2} X _inst_1) (PartialOrder.toPreorder.{u2} (DiscreteQuotient.{u2} X _inst_1) (SemilatticeInf.toPartialOrder.{u2} (DiscreteQuotient.{u2} X _inst_1) (DiscreteQuotient.instSemilatticeInfDiscreteQuotient.{u2} X _inst_1)))) A' A) -> (LE.le.{u1} (DiscreteQuotient.{u1} Y _inst_2) (Preorder.toLE.{u1} (DiscreteQuotient.{u1} Y _inst_2) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} Y _inst_2) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} Y _inst_2) (DiscreteQuotient.instSemilatticeInfDiscreteQuotient.{u1} Y _inst_2)))) B B') -> (DiscreteQuotient.LeComap.{u2, u1} X Y _inst_1 _inst_2 f A' B')
-Case conversion may be inaccurate. Consider using '#align discrete_quotient.le_comap.mono DiscreteQuotient.LeComap.monoₓ'. -/
-theorem LeComap.mono (h : LeComap f A B) (hA : A' ≤ A) (hB : B ≤ B') : LeComap f A' B' :=
+  forall {X : Type.{u2}} {Y : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} X] [_inst_2 : TopologicalSpace.{u1} Y] {f : ContinuousMap.{u2, u1} X Y _inst_1 _inst_2} {A : DiscreteQuotient.{u2} X _inst_1} {A' : DiscreteQuotient.{u2} X _inst_1} {B : DiscreteQuotient.{u1} Y _inst_2} {B' : DiscreteQuotient.{u1} Y _inst_2}, (DiscreteQuotient.LEComap.{u2, u1} X Y _inst_1 _inst_2 f A B) -> (LE.le.{u2} (DiscreteQuotient.{u2} X _inst_1) (Preorder.toLE.{u2} (DiscreteQuotient.{u2} X _inst_1) (PartialOrder.toPreorder.{u2} (DiscreteQuotient.{u2} X _inst_1) (SemilatticeInf.toPartialOrder.{u2} (DiscreteQuotient.{u2} X _inst_1) (DiscreteQuotient.instSemilatticeInfDiscreteQuotient.{u2} X _inst_1)))) A' A) -> (LE.le.{u1} (DiscreteQuotient.{u1} Y _inst_2) (Preorder.toLE.{u1} (DiscreteQuotient.{u1} Y _inst_2) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} Y _inst_2) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} Y _inst_2) (DiscreteQuotient.instSemilatticeInfDiscreteQuotient.{u1} Y _inst_2)))) B B') -> (DiscreteQuotient.LEComap.{u2, u1} X Y _inst_1 _inst_2 f A' B')
+Case conversion may be inaccurate. Consider using '#align discrete_quotient.le_comap.mono DiscreteQuotient.LEComap.monoₓ'. -/
+theorem LEComap.mono (h : LEComap f A B) (hA : A' ≤ A) (hB : B ≤ B') : LEComap f A' B' :=
   hA.trans <| le_trans h <| comap_mono _ hB
-#align discrete_quotient.le_comap.mono DiscreteQuotient.LeComap.mono
+#align discrete_quotient.le_comap.mono DiscreteQuotient.LEComap.mono
 
 #print DiscreteQuotient.map /-
 /-- Map a discrete quotient along a continuous map. -/
-def map (f : C(X, Y)) (cond : LeComap f A B) : A → B :=
+def map (f : C(X, Y)) (cond : LEComap f A B) : A → B :=
   Quotient.map' f cond
 #align discrete_quotient.map DiscreteQuotient.map
 -/
 
 /- warning: discrete_quotient.map_continuous -> DiscreteQuotient.map_continuous is a dubious translation:
 lean 3 declaration is
-  forall {X : Type.{u1}} {Y : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} X] [_inst_2 : TopologicalSpace.{u2} Y] {f : ContinuousMap.{u1, u2} X Y _inst_1 _inst_2} {A : DiscreteQuotient.{u1} X _inst_1} {B : DiscreteQuotient.{u2} Y _inst_2} (cond : DiscreteQuotient.LeComap.{u1, u2} X Y _inst_1 _inst_2 f A B), Continuous.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) A) (coeSort.{succ u2, succ (succ u2)} (DiscreteQuotient.{u2} Y _inst_2) Type.{u2} (DiscreteQuotient.hasCoeToSort.{u2} Y _inst_2) B) (DiscreteQuotient.topologicalSpace.{u1} X _inst_1 A) (DiscreteQuotient.topologicalSpace.{u2} Y _inst_2 B) (DiscreteQuotient.map.{u1, u2} X Y _inst_1 _inst_2 A B f cond)
+  forall {X : Type.{u1}} {Y : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} X] [_inst_2 : TopologicalSpace.{u2} Y] {f : ContinuousMap.{u1, u2} X Y _inst_1 _inst_2} {A : DiscreteQuotient.{u1} X _inst_1} {B : DiscreteQuotient.{u2} Y _inst_2} (cond : DiscreteQuotient.LEComap.{u1, u2} X Y _inst_1 _inst_2 f A B), Continuous.{u1, u2} (coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) A) (coeSort.{succ u2, succ (succ u2)} (DiscreteQuotient.{u2} Y _inst_2) Type.{u2} (DiscreteQuotient.hasCoeToSort.{u2} Y _inst_2) B) (DiscreteQuotient.topologicalSpace.{u1} X _inst_1 A) (DiscreteQuotient.topologicalSpace.{u2} Y _inst_2 B) (DiscreteQuotient.map.{u1, u2} X Y _inst_1 _inst_2 A B f cond)
 but is expected to have type
-  forall {X : Type.{u2}} {Y : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} X] [_inst_2 : TopologicalSpace.{u1} Y] {f : ContinuousMap.{u2, u1} X Y _inst_1 _inst_2} {A : DiscreteQuotient.{u2} X _inst_1} {B : DiscreteQuotient.{u1} Y _inst_2} (cond : DiscreteQuotient.LeComap.{u2, u1} X Y _inst_1 _inst_2 f A B), Continuous.{u2, u1} (Quotient.{succ u2} X (DiscreteQuotient.toSetoid.{u2} X _inst_1 A)) (Quotient.{succ u1} Y (DiscreteQuotient.toSetoid.{u1} Y _inst_2 B)) (DiscreteQuotient.instTopologicalSpaceQuotientToSetoid.{u2} X _inst_1 A) (DiscreteQuotient.instTopologicalSpaceQuotientToSetoid.{u1} Y _inst_2 B) (DiscreteQuotient.map.{u2, u1} X Y _inst_1 _inst_2 A B f cond)
+  forall {X : Type.{u2}} {Y : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} X] [_inst_2 : TopologicalSpace.{u1} Y] {f : ContinuousMap.{u2, u1} X Y _inst_1 _inst_2} {A : DiscreteQuotient.{u2} X _inst_1} {B : DiscreteQuotient.{u1} Y _inst_2} (cond : DiscreteQuotient.LEComap.{u2, u1} X Y _inst_1 _inst_2 f A B), Continuous.{u2, u1} (Quotient.{succ u2} X (DiscreteQuotient.toSetoid.{u2} X _inst_1 A)) (Quotient.{succ u1} Y (DiscreteQuotient.toSetoid.{u1} Y _inst_2 B)) (DiscreteQuotient.instTopologicalSpaceQuotientToSetoid.{u2} X _inst_1 A) (DiscreteQuotient.instTopologicalSpaceQuotientToSetoid.{u1} Y _inst_2 B) (DiscreteQuotient.map.{u2, u1} X Y _inst_1 _inst_2 A B f cond)
 Case conversion may be inaccurate. Consider using '#align discrete_quotient.map_continuous DiscreteQuotient.map_continuousₓ'. -/
-theorem map_continuous (cond : LeComap f A B) : Continuous (map f cond) :=
+theorem map_continuous (cond : LEComap f A B) : Continuous (map f cond) :=
   continuous_of_discreteTopology
 #align discrete_quotient.map_continuous DiscreteQuotient.map_continuous
 
 /- warning: discrete_quotient.map_comp_proj -> DiscreteQuotient.map_comp_proj is a dubious translation:
 lean 3 declaration is
-  forall {X : Type.{u1}} {Y : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} X] [_inst_2 : TopologicalSpace.{u2} Y] {f : ContinuousMap.{u1, u2} X Y _inst_1 _inst_2} {A : DiscreteQuotient.{u1} X _inst_1} {B : DiscreteQuotient.{u2} Y _inst_2} (cond : DiscreteQuotient.LeComap.{u1, u2} X Y _inst_1 _inst_2 f A B), Eq.{max (succ u1) (succ u2)} (X -> (coeSort.{succ u2, succ (succ u2)} (DiscreteQuotient.{u2} Y _inst_2) Type.{u2} (DiscreteQuotient.hasCoeToSort.{u2} Y _inst_2) B)) (Function.comp.{succ u1, succ u1, succ u2} X (coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) A) (coeSort.{succ u2, succ (succ u2)} (DiscreteQuotient.{u2} Y _inst_2) Type.{u2} (DiscreteQuotient.hasCoeToSort.{u2} Y _inst_2) B) (DiscreteQuotient.map.{u1, u2} X Y _inst_1 _inst_2 A B f cond) (DiscreteQuotient.proj.{u1} X _inst_1 A)) (Function.comp.{succ u1, succ u2, succ u2} X Y (coeSort.{succ u2, succ (succ u2)} (DiscreteQuotient.{u2} Y _inst_2) Type.{u2} (DiscreteQuotient.hasCoeToSort.{u2} Y _inst_2) B) (DiscreteQuotient.proj.{u2} Y _inst_2 B) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (ContinuousMap.{u1, u2} X Y _inst_1 _inst_2) (fun (_x : ContinuousMap.{u1, u2} X Y _inst_1 _inst_2) => X -> Y) (ContinuousMap.hasCoeToFun.{u1, u2} X Y _inst_1 _inst_2) f))
+  forall {X : Type.{u1}} {Y : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} X] [_inst_2 : TopologicalSpace.{u2} Y] {f : ContinuousMap.{u1, u2} X Y _inst_1 _inst_2} {A : DiscreteQuotient.{u1} X _inst_1} {B : DiscreteQuotient.{u2} Y _inst_2} (cond : DiscreteQuotient.LEComap.{u1, u2} X Y _inst_1 _inst_2 f A B), Eq.{max (succ u1) (succ u2)} (X -> (coeSort.{succ u2, succ (succ u2)} (DiscreteQuotient.{u2} Y _inst_2) Type.{u2} (DiscreteQuotient.hasCoeToSort.{u2} Y _inst_2) B)) (Function.comp.{succ u1, succ u1, succ u2} X (coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) A) (coeSort.{succ u2, succ (succ u2)} (DiscreteQuotient.{u2} Y _inst_2) Type.{u2} (DiscreteQuotient.hasCoeToSort.{u2} Y _inst_2) B) (DiscreteQuotient.map.{u1, u2} X Y _inst_1 _inst_2 A B f cond) (DiscreteQuotient.proj.{u1} X _inst_1 A)) (Function.comp.{succ u1, succ u2, succ u2} X Y (coeSort.{succ u2, succ (succ u2)} (DiscreteQuotient.{u2} Y _inst_2) Type.{u2} (DiscreteQuotient.hasCoeToSort.{u2} Y _inst_2) B) (DiscreteQuotient.proj.{u2} Y _inst_2 B) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (ContinuousMap.{u1, u2} X Y _inst_1 _inst_2) (fun (_x : ContinuousMap.{u1, u2} X Y _inst_1 _inst_2) => X -> Y) (ContinuousMap.hasCoeToFun.{u1, u2} X Y _inst_1 _inst_2) f))
 but is expected to have type
-  forall {X : Type.{u2}} {Y : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} X] [_inst_2 : TopologicalSpace.{u1} Y] {f : ContinuousMap.{u2, u1} X Y _inst_1 _inst_2} {A : DiscreteQuotient.{u2} X _inst_1} {B : DiscreteQuotient.{u1} Y _inst_2} (cond : DiscreteQuotient.LeComap.{u2, u1} X Y _inst_1 _inst_2 f A B), Eq.{max (succ u2) (succ u1)} (X -> (Quotient.{succ u1} Y (DiscreteQuotient.toSetoid.{u1} Y _inst_2 B))) (Function.comp.{succ u2, succ u2, succ u1} X (Quotient.{succ u2} X (DiscreteQuotient.toSetoid.{u2} X _inst_1 A)) (Quotient.{succ u1} Y (DiscreteQuotient.toSetoid.{u1} Y _inst_2 B)) (DiscreteQuotient.map.{u2, u1} X Y _inst_1 _inst_2 A B f cond) (DiscreteQuotient.proj.{u2} X _inst_1 A)) (Function.comp.{succ u2, succ u1, succ u1} X Y (Quotient.{succ u1} Y (DiscreteQuotient.toSetoid.{u1} Y _inst_2 B)) (DiscreteQuotient.proj.{u1} Y _inst_2 B) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (ContinuousMap.{u2, u1} X Y _inst_1 _inst_2) X (fun (_x : X) => (fun (x._@.Mathlib.Topology.ContinuousFunction.Basic._hyg.699 : X) => Y) _x) (ContinuousMapClass.toFunLike.{max u2 u1, u2, u1} (ContinuousMap.{u2, u1} X Y _inst_1 _inst_2) X Y _inst_1 _inst_2 (ContinuousMap.instContinuousMapClassContinuousMap.{u2, u1} X Y _inst_1 _inst_2)) f))
+  forall {X : Type.{u2}} {Y : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} X] [_inst_2 : TopologicalSpace.{u1} Y] {f : ContinuousMap.{u2, u1} X Y _inst_1 _inst_2} {A : DiscreteQuotient.{u2} X _inst_1} {B : DiscreteQuotient.{u1} Y _inst_2} (cond : DiscreteQuotient.LEComap.{u2, u1} X Y _inst_1 _inst_2 f A B), Eq.{max (succ u2) (succ u1)} (X -> (Quotient.{succ u1} Y (DiscreteQuotient.toSetoid.{u1} Y _inst_2 B))) (Function.comp.{succ u2, succ u2, succ u1} X (Quotient.{succ u2} X (DiscreteQuotient.toSetoid.{u2} X _inst_1 A)) (Quotient.{succ u1} Y (DiscreteQuotient.toSetoid.{u1} Y _inst_2 B)) (DiscreteQuotient.map.{u2, u1} X Y _inst_1 _inst_2 A B f cond) (DiscreteQuotient.proj.{u2} X _inst_1 A)) (Function.comp.{succ u2, succ u1, succ u1} X Y (Quotient.{succ u1} Y (DiscreteQuotient.toSetoid.{u1} Y _inst_2 B)) (DiscreteQuotient.proj.{u1} Y _inst_2 B) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (ContinuousMap.{u2, u1} X Y _inst_1 _inst_2) X (fun (_x : X) => (fun (x._@.Mathlib.Topology.ContinuousFunction.Basic._hyg.699 : X) => Y) _x) (ContinuousMapClass.toFunLike.{max u2 u1, u2, u1} (ContinuousMap.{u2, u1} X Y _inst_1 _inst_2) X Y _inst_1 _inst_2 (ContinuousMap.instContinuousMapClassContinuousMap.{u2, u1} X Y _inst_1 _inst_2)) f))
 Case conversion may be inaccurate. Consider using '#align discrete_quotient.map_comp_proj DiscreteQuotient.map_comp_projₓ'. -/
 @[simp]
-theorem map_comp_proj (cond : LeComap f A B) : map f cond ∘ A.proj = B.proj ∘ f :=
+theorem map_comp_proj (cond : LEComap f A B) : map f cond ∘ A.proj = B.proj ∘ f :=
   rfl
 #align discrete_quotient.map_comp_proj DiscreteQuotient.map_comp_proj
 
 /- warning: discrete_quotient.map_proj -> DiscreteQuotient.map_proj is a dubious translation:
 lean 3 declaration is
-  forall {X : Type.{u1}} {Y : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} X] [_inst_2 : TopologicalSpace.{u2} Y] {f : ContinuousMap.{u1, u2} X Y _inst_1 _inst_2} {A : DiscreteQuotient.{u1} X _inst_1} {B : DiscreteQuotient.{u2} Y _inst_2} (cond : DiscreteQuotient.LeComap.{u1, u2} X Y _inst_1 _inst_2 f A B) (x : X), Eq.{succ u2} (coeSort.{succ u2, succ (succ u2)} (DiscreteQuotient.{u2} Y _inst_2) Type.{u2} (DiscreteQuotient.hasCoeToSort.{u2} Y _inst_2) B) (DiscreteQuotient.map.{u1, u2} X Y _inst_1 _inst_2 A B f cond (DiscreteQuotient.proj.{u1} X _inst_1 A x)) (DiscreteQuotient.proj.{u2} Y _inst_2 B (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (ContinuousMap.{u1, u2} X Y _inst_1 _inst_2) (fun (_x : ContinuousMap.{u1, u2} X Y _inst_1 _inst_2) => X -> Y) (ContinuousMap.hasCoeToFun.{u1, u2} X Y _inst_1 _inst_2) f x))
+  forall {X : Type.{u1}} {Y : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} X] [_inst_2 : TopologicalSpace.{u2} Y] {f : ContinuousMap.{u1, u2} X Y _inst_1 _inst_2} {A : DiscreteQuotient.{u1} X _inst_1} {B : DiscreteQuotient.{u2} Y _inst_2} (cond : DiscreteQuotient.LEComap.{u1, u2} X Y _inst_1 _inst_2 f A B) (x : X), Eq.{succ u2} (coeSort.{succ u2, succ (succ u2)} (DiscreteQuotient.{u2} Y _inst_2) Type.{u2} (DiscreteQuotient.hasCoeToSort.{u2} Y _inst_2) B) (DiscreteQuotient.map.{u1, u2} X Y _inst_1 _inst_2 A B f cond (DiscreteQuotient.proj.{u1} X _inst_1 A x)) (DiscreteQuotient.proj.{u2} Y _inst_2 B (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (ContinuousMap.{u1, u2} X Y _inst_1 _inst_2) (fun (_x : ContinuousMap.{u1, u2} X Y _inst_1 _inst_2) => X -> Y) (ContinuousMap.hasCoeToFun.{u1, u2} X Y _inst_1 _inst_2) f x))
 but is expected to have type
-  forall {X : Type.{u2}} {Y : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} X] [_inst_2 : TopologicalSpace.{u1} Y] {f : ContinuousMap.{u2, u1} X Y _inst_1 _inst_2} {A : DiscreteQuotient.{u2} X _inst_1} {B : DiscreteQuotient.{u1} Y _inst_2} (cond : DiscreteQuotient.LeComap.{u2, u1} X Y _inst_1 _inst_2 f A B) (x : X), Eq.{succ u1} (Quotient.{succ u1} Y (DiscreteQuotient.toSetoid.{u1} Y _inst_2 B)) (DiscreteQuotient.map.{u2, u1} X Y _inst_1 _inst_2 A B f cond (DiscreteQuotient.proj.{u2} X _inst_1 A x)) (DiscreteQuotient.proj.{u1} Y _inst_2 B (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (ContinuousMap.{u2, u1} X Y _inst_1 _inst_2) X (fun (_x : X) => (fun (x._@.Mathlib.Topology.ContinuousFunction.Basic._hyg.699 : X) => Y) _x) (ContinuousMapClass.toFunLike.{max u2 u1, u2, u1} (ContinuousMap.{u2, u1} X Y _inst_1 _inst_2) X Y _inst_1 _inst_2 (ContinuousMap.instContinuousMapClassContinuousMap.{u2, u1} X Y _inst_1 _inst_2)) f x))
+  forall {X : Type.{u2}} {Y : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} X] [_inst_2 : TopologicalSpace.{u1} Y] {f : ContinuousMap.{u2, u1} X Y _inst_1 _inst_2} {A : DiscreteQuotient.{u2} X _inst_1} {B : DiscreteQuotient.{u1} Y _inst_2} (cond : DiscreteQuotient.LEComap.{u2, u1} X Y _inst_1 _inst_2 f A B) (x : X), Eq.{succ u1} (Quotient.{succ u1} Y (DiscreteQuotient.toSetoid.{u1} Y _inst_2 B)) (DiscreteQuotient.map.{u2, u1} X Y _inst_1 _inst_2 A B f cond (DiscreteQuotient.proj.{u2} X _inst_1 A x)) (DiscreteQuotient.proj.{u1} Y _inst_2 B (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (ContinuousMap.{u2, u1} X Y _inst_1 _inst_2) X (fun (_x : X) => (fun (x._@.Mathlib.Topology.ContinuousFunction.Basic._hyg.699 : X) => Y) _x) (ContinuousMapClass.toFunLike.{max u2 u1, u2, u1} (ContinuousMap.{u2, u1} X Y _inst_1 _inst_2) X Y _inst_1 _inst_2 (ContinuousMap.instContinuousMapClassContinuousMap.{u2, u1} X Y _inst_1 _inst_2)) f x))
 Case conversion may be inaccurate. Consider using '#align discrete_quotient.map_proj DiscreteQuotient.map_projₓ'. -/
 @[simp]
-theorem map_proj (cond : LeComap f A B) (x : X) : map f cond (A.proj x) = B.proj (f x) :=
+theorem map_proj (cond : LEComap f A B) (x : X) : map f cond (A.proj x) = B.proj (f x) :=
   rfl
 #align discrete_quotient.map_proj DiscreteQuotient.map_proj
 
@@ -501,69 +501,69 @@ theorem map_id : map _ (leComap_id A) = id := by ext ⟨⟩ <;> rfl
 
 /- warning: discrete_quotient.map_comp -> DiscreteQuotient.map_comp is a dubious translation:
 lean 3 declaration is
-  forall {X : Type.{u1}} {Y : Type.{u2}} {Z : Type.{u3}} [_inst_1 : TopologicalSpace.{u1} X] [_inst_2 : TopologicalSpace.{u2} Y] [_inst_3 : TopologicalSpace.{u3} Z] {f : ContinuousMap.{u1, u2} X Y _inst_1 _inst_2} {A : DiscreteQuotient.{u1} X _inst_1} {B : DiscreteQuotient.{u2} Y _inst_2} {g : ContinuousMap.{u2, u3} Y Z _inst_2 _inst_3} {C : DiscreteQuotient.{u3} Z _inst_3} (h1 : DiscreteQuotient.LeComap.{u2, u3} Y Z _inst_2 _inst_3 g B C) (h2 : DiscreteQuotient.LeComap.{u1, u2} X Y _inst_1 _inst_2 f A B), Eq.{max (succ u1) (succ u3)} ((coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) A) -> (coeSort.{succ u3, succ (succ u3)} (DiscreteQuotient.{u3} Z _inst_3) Type.{u3} (DiscreteQuotient.hasCoeToSort.{u3} Z _inst_3) C)) (DiscreteQuotient.map.{u1, u3} X Z _inst_1 _inst_3 A C (ContinuousMap.comp.{u1, u2, u3} X Y Z _inst_1 _inst_2 _inst_3 g f) (DiscreteQuotient.LeComap.comp.{u1, u2, u3} X Y Z _inst_1 _inst_2 _inst_3 f A B g C h1 h2)) (Function.comp.{succ u1, succ u2, succ u3} (coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) A) (coeSort.{succ u2, succ (succ u2)} (DiscreteQuotient.{u2} Y _inst_2) Type.{u2} (DiscreteQuotient.hasCoeToSort.{u2} Y _inst_2) B) (coeSort.{succ u3, succ (succ u3)} (DiscreteQuotient.{u3} Z _inst_3) Type.{u3} (DiscreteQuotient.hasCoeToSort.{u3} Z _inst_3) C) (DiscreteQuotient.map.{u2, u3} Y Z _inst_2 _inst_3 B C g h1) (DiscreteQuotient.map.{u1, u2} X Y _inst_1 _inst_2 A B f h2))
+  forall {X : Type.{u1}} {Y : Type.{u2}} {Z : Type.{u3}} [_inst_1 : TopologicalSpace.{u1} X] [_inst_2 : TopologicalSpace.{u2} Y] [_inst_3 : TopologicalSpace.{u3} Z] {f : ContinuousMap.{u1, u2} X Y _inst_1 _inst_2} {A : DiscreteQuotient.{u1} X _inst_1} {B : DiscreteQuotient.{u2} Y _inst_2} {g : ContinuousMap.{u2, u3} Y Z _inst_2 _inst_3} {C : DiscreteQuotient.{u3} Z _inst_3} (h1 : DiscreteQuotient.LEComap.{u2, u3} Y Z _inst_2 _inst_3 g B C) (h2 : DiscreteQuotient.LEComap.{u1, u2} X Y _inst_1 _inst_2 f A B), Eq.{max (succ u1) (succ u3)} ((coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) A) -> (coeSort.{succ u3, succ (succ u3)} (DiscreteQuotient.{u3} Z _inst_3) Type.{u3} (DiscreteQuotient.hasCoeToSort.{u3} Z _inst_3) C)) (DiscreteQuotient.map.{u1, u3} X Z _inst_1 _inst_3 A C (ContinuousMap.comp.{u1, u2, u3} X Y Z _inst_1 _inst_2 _inst_3 g f) (DiscreteQuotient.LEComap.comp.{u1, u2, u3} X Y Z _inst_1 _inst_2 _inst_3 f A B g C h1 h2)) (Function.comp.{succ u1, succ u2, succ u3} (coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) A) (coeSort.{succ u2, succ (succ u2)} (DiscreteQuotient.{u2} Y _inst_2) Type.{u2} (DiscreteQuotient.hasCoeToSort.{u2} Y _inst_2) B) (coeSort.{succ u3, succ (succ u3)} (DiscreteQuotient.{u3} Z _inst_3) Type.{u3} (DiscreteQuotient.hasCoeToSort.{u3} Z _inst_3) C) (DiscreteQuotient.map.{u2, u3} Y Z _inst_2 _inst_3 B C g h1) (DiscreteQuotient.map.{u1, u2} X Y _inst_1 _inst_2 A B f h2))
 but is expected to have type
-  forall {X : Type.{u1}} {Y : Type.{u3}} {Z : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} X] [_inst_2 : TopologicalSpace.{u3} Y] [_inst_3 : TopologicalSpace.{u2} Z] {f : ContinuousMap.{u1, u3} X Y _inst_1 _inst_2} {A : DiscreteQuotient.{u1} X _inst_1} {B : DiscreteQuotient.{u3} Y _inst_2} {g : ContinuousMap.{u3, u2} Y Z _inst_2 _inst_3} {C : DiscreteQuotient.{u2} Z _inst_3} (h1 : DiscreteQuotient.LeComap.{u3, u2} Y Z _inst_2 _inst_3 g B C) (h2 : DiscreteQuotient.LeComap.{u1, u3} X Y _inst_1 _inst_2 f A B), Eq.{max (succ u1) (succ u2)} ((Quotient.{succ u1} X (DiscreteQuotient.toSetoid.{u1} X _inst_1 A)) -> (Quotient.{succ u2} Z (DiscreteQuotient.toSetoid.{u2} Z _inst_3 C))) (DiscreteQuotient.map.{u1, u2} X Z _inst_1 _inst_3 A C (ContinuousMap.comp.{u1, u3, u2} X Y Z _inst_1 _inst_2 _inst_3 g f) (DiscreteQuotient.LeComap.comp.{u1, u2, u3} X Y Z _inst_1 _inst_2 _inst_3 f A B g C h1 h2)) (Function.comp.{succ u1, succ u3, succ u2} (Quotient.{succ u1} X (DiscreteQuotient.toSetoid.{u1} X _inst_1 A)) (Quotient.{succ u3} Y (DiscreteQuotient.toSetoid.{u3} Y _inst_2 B)) (Quotient.{succ u2} Z (DiscreteQuotient.toSetoid.{u2} Z _inst_3 C)) (DiscreteQuotient.map.{u3, u2} Y Z _inst_2 _inst_3 B C g h1) (DiscreteQuotient.map.{u1, u3} X Y _inst_1 _inst_2 A B f h2))
+  forall {X : Type.{u1}} {Y : Type.{u3}} {Z : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} X] [_inst_2 : TopologicalSpace.{u3} Y] [_inst_3 : TopologicalSpace.{u2} Z] {f : ContinuousMap.{u1, u3} X Y _inst_1 _inst_2} {A : DiscreteQuotient.{u1} X _inst_1} {B : DiscreteQuotient.{u3} Y _inst_2} {g : ContinuousMap.{u3, u2} Y Z _inst_2 _inst_3} {C : DiscreteQuotient.{u2} Z _inst_3} (h1 : DiscreteQuotient.LEComap.{u3, u2} Y Z _inst_2 _inst_3 g B C) (h2 : DiscreteQuotient.LEComap.{u1, u3} X Y _inst_1 _inst_2 f A B), Eq.{max (succ u1) (succ u2)} ((Quotient.{succ u1} X (DiscreteQuotient.toSetoid.{u1} X _inst_1 A)) -> (Quotient.{succ u2} Z (DiscreteQuotient.toSetoid.{u2} Z _inst_3 C))) (DiscreteQuotient.map.{u1, u2} X Z _inst_1 _inst_3 A C (ContinuousMap.comp.{u1, u3, u2} X Y Z _inst_1 _inst_2 _inst_3 g f) (DiscreteQuotient.LEComap.comp.{u1, u2, u3} X Y Z _inst_1 _inst_2 _inst_3 f A B g C h1 h2)) (Function.comp.{succ u1, succ u3, succ u2} (Quotient.{succ u1} X (DiscreteQuotient.toSetoid.{u1} X _inst_1 A)) (Quotient.{succ u3} Y (DiscreteQuotient.toSetoid.{u3} Y _inst_2 B)) (Quotient.{succ u2} Z (DiscreteQuotient.toSetoid.{u2} Z _inst_3 C)) (DiscreteQuotient.map.{u3, u2} Y Z _inst_2 _inst_3 B C g h1) (DiscreteQuotient.map.{u1, u3} X Y _inst_1 _inst_2 A B f h2))
 Case conversion may be inaccurate. Consider using '#align discrete_quotient.map_comp DiscreteQuotient.map_compₓ'. -/
 @[simp]
-theorem map_comp (h1 : LeComap g B C) (h2 : LeComap f A B) :
+theorem map_comp (h1 : LEComap g B C) (h2 : LEComap f A B) :
     map (g.comp f) (h1.comp h2) = map g h1 ∘ map f h2 :=
   by
   ext ⟨⟩
   rfl
 #align discrete_quotient.map_comp DiscreteQuotient.map_comp
 
-/- warning: discrete_quotient.of_le_map -> DiscreteQuotient.ofLe_map is a dubious translation:
+/- warning: discrete_quotient.of_le_map -> DiscreteQuotient.ofLE_map is a dubious translation:
 lean 3 declaration is
-  forall {X : Type.{u1}} {Y : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} X] [_inst_2 : TopologicalSpace.{u2} Y] {f : ContinuousMap.{u1, u2} X Y _inst_1 _inst_2} {A : DiscreteQuotient.{u1} X _inst_1} {B : DiscreteQuotient.{u2} Y _inst_2} {B' : DiscreteQuotient.{u2} Y _inst_2} (cond : DiscreteQuotient.LeComap.{u1, u2} X Y _inst_1 _inst_2 f A B) (h : LE.le.{u2} (DiscreteQuotient.{u2} Y _inst_2) (Preorder.toLE.{u2} (DiscreteQuotient.{u2} Y _inst_2) (PartialOrder.toPreorder.{u2} (DiscreteQuotient.{u2} Y _inst_2) (SemilatticeInf.toPartialOrder.{u2} (DiscreteQuotient.{u2} Y _inst_2) (DiscreteQuotient.semilatticeInf.{u2} Y _inst_2)))) B B') (a : coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) A), Eq.{succ u2} (coeSort.{succ u2, succ (succ u2)} (DiscreteQuotient.{u2} Y _inst_2) Type.{u2} (DiscreteQuotient.hasCoeToSort.{u2} Y _inst_2) B') (DiscreteQuotient.ofLe.{u2} Y _inst_2 B B' h (DiscreteQuotient.map.{u1, u2} X Y _inst_1 _inst_2 A B f cond a)) (DiscreteQuotient.map.{u1, u2} X Y _inst_1 _inst_2 A B' f (DiscreteQuotient.LeComap.mono.{u1, u2} X Y _inst_1 _inst_2 f A A B B' cond (le_rfl.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.semilatticeInf.{u1} X _inst_1))) A) h) a)
+  forall {X : Type.{u1}} {Y : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} X] [_inst_2 : TopologicalSpace.{u2} Y] {f : ContinuousMap.{u1, u2} X Y _inst_1 _inst_2} {A : DiscreteQuotient.{u1} X _inst_1} {B : DiscreteQuotient.{u2} Y _inst_2} {B' : DiscreteQuotient.{u2} Y _inst_2} (cond : DiscreteQuotient.LEComap.{u1, u2} X Y _inst_1 _inst_2 f A B) (h : LE.le.{u2} (DiscreteQuotient.{u2} Y _inst_2) (Preorder.toLE.{u2} (DiscreteQuotient.{u2} Y _inst_2) (PartialOrder.toPreorder.{u2} (DiscreteQuotient.{u2} Y _inst_2) (SemilatticeInf.toPartialOrder.{u2} (DiscreteQuotient.{u2} Y _inst_2) (DiscreteQuotient.semilatticeInf.{u2} Y _inst_2)))) B B') (a : coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) A), Eq.{succ u2} (coeSort.{succ u2, succ (succ u2)} (DiscreteQuotient.{u2} Y _inst_2) Type.{u2} (DiscreteQuotient.hasCoeToSort.{u2} Y _inst_2) B') (DiscreteQuotient.ofLE.{u2} Y _inst_2 B B' h (DiscreteQuotient.map.{u1, u2} X Y _inst_1 _inst_2 A B f cond a)) (DiscreteQuotient.map.{u1, u2} X Y _inst_1 _inst_2 A B' f (DiscreteQuotient.LEComap.mono.{u1, u2} X Y _inst_1 _inst_2 f A A B B' cond (le_rfl.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.semilatticeInf.{u1} X _inst_1))) A) h) a)
 but is expected to have type
-  forall {X : Type.{u2}} {Y : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} X] [_inst_2 : TopologicalSpace.{u1} Y] {f : ContinuousMap.{u2, u1} X Y _inst_1 _inst_2} {A : DiscreteQuotient.{u2} X _inst_1} {B : DiscreteQuotient.{u1} Y _inst_2} {B' : DiscreteQuotient.{u1} Y _inst_2} (cond : DiscreteQuotient.LeComap.{u2, u1} X Y _inst_1 _inst_2 f A B) (h : LE.le.{u1} (DiscreteQuotient.{u1} Y _inst_2) (Preorder.toLE.{u1} (DiscreteQuotient.{u1} Y _inst_2) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} Y _inst_2) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} Y _inst_2) (DiscreteQuotient.instSemilatticeInfDiscreteQuotient.{u1} Y _inst_2)))) B B') (a : Quotient.{succ u2} X (DiscreteQuotient.toSetoid.{u2} X _inst_1 A)), Eq.{succ u1} (Quotient.{succ u1} Y (DiscreteQuotient.toSetoid.{u1} Y _inst_2 B')) (DiscreteQuotient.ofLe.{u1} Y _inst_2 B B' h (DiscreteQuotient.map.{u2, u1} X Y _inst_1 _inst_2 A B f cond a)) (DiscreteQuotient.map.{u2, u1} X Y _inst_1 _inst_2 A B' f (DiscreteQuotient.LeComap.mono.{u1, u2} X Y _inst_1 _inst_2 f A A B B' cond (le_rfl.{u2} (DiscreteQuotient.{u2} X _inst_1) (PartialOrder.toPreorder.{u2} (DiscreteQuotient.{u2} X _inst_1) (SemilatticeInf.toPartialOrder.{u2} (DiscreteQuotient.{u2} X _inst_1) (DiscreteQuotient.instSemilatticeInfDiscreteQuotient.{u2} X _inst_1))) A) h) a)
-Case conversion may be inaccurate. Consider using '#align discrete_quotient.of_le_map DiscreteQuotient.ofLe_mapₓ'. -/
+  forall {X : Type.{u2}} {Y : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} X] [_inst_2 : TopologicalSpace.{u1} Y] {f : ContinuousMap.{u2, u1} X Y _inst_1 _inst_2} {A : DiscreteQuotient.{u2} X _inst_1} {B : DiscreteQuotient.{u1} Y _inst_2} {B' : DiscreteQuotient.{u1} Y _inst_2} (cond : DiscreteQuotient.LEComap.{u2, u1} X Y _inst_1 _inst_2 f A B) (h : LE.le.{u1} (DiscreteQuotient.{u1} Y _inst_2) (Preorder.toLE.{u1} (DiscreteQuotient.{u1} Y _inst_2) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} Y _inst_2) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} Y _inst_2) (DiscreteQuotient.instSemilatticeInfDiscreteQuotient.{u1} Y _inst_2)))) B B') (a : Quotient.{succ u2} X (DiscreteQuotient.toSetoid.{u2} X _inst_1 A)), Eq.{succ u1} (Quotient.{succ u1} Y (DiscreteQuotient.toSetoid.{u1} Y _inst_2 B')) (DiscreteQuotient.ofLE.{u1} Y _inst_2 B B' h (DiscreteQuotient.map.{u2, u1} X Y _inst_1 _inst_2 A B f cond a)) (DiscreteQuotient.map.{u2, u1} X Y _inst_1 _inst_2 A B' f (DiscreteQuotient.LEComap.mono.{u1, u2} X Y _inst_1 _inst_2 f A A B B' cond (le_rfl.{u2} (DiscreteQuotient.{u2} X _inst_1) (PartialOrder.toPreorder.{u2} (DiscreteQuotient.{u2} X _inst_1) (SemilatticeInf.toPartialOrder.{u2} (DiscreteQuotient.{u2} X _inst_1) (DiscreteQuotient.instSemilatticeInfDiscreteQuotient.{u2} X _inst_1))) A) h) a)
+Case conversion may be inaccurate. Consider using '#align discrete_quotient.of_le_map DiscreteQuotient.ofLE_mapₓ'. -/
 @[simp]
-theorem ofLe_map (cond : LeComap f A B) (h : B ≤ B') (a : A) :
-    ofLe h (map f cond a) = map f (cond.mono le_rfl h) a :=
+theorem ofLE_map (cond : LEComap f A B) (h : B ≤ B') (a : A) :
+    ofLE h (map f cond a) = map f (cond.mono le_rfl h) a :=
   by
   rcases a with ⟨⟩
   rfl
-#align discrete_quotient.of_le_map DiscreteQuotient.ofLe_map
+#align discrete_quotient.of_le_map DiscreteQuotient.ofLE_map
 
-/- warning: discrete_quotient.of_le_comp_map -> DiscreteQuotient.ofLe_comp_map is a dubious translation:
+/- warning: discrete_quotient.of_le_comp_map -> DiscreteQuotient.ofLE_comp_map is a dubious translation:
 lean 3 declaration is
-  forall {X : Type.{u1}} {Y : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} X] [_inst_2 : TopologicalSpace.{u2} Y] {f : ContinuousMap.{u1, u2} X Y _inst_1 _inst_2} {A : DiscreteQuotient.{u1} X _inst_1} {B : DiscreteQuotient.{u2} Y _inst_2} {B' : DiscreteQuotient.{u2} Y _inst_2} (cond : DiscreteQuotient.LeComap.{u1, u2} X Y _inst_1 _inst_2 f A B) (h : LE.le.{u2} (DiscreteQuotient.{u2} Y _inst_2) (Preorder.toLE.{u2} (DiscreteQuotient.{u2} Y _inst_2) (PartialOrder.toPreorder.{u2} (DiscreteQuotient.{u2} Y _inst_2) (SemilatticeInf.toPartialOrder.{u2} (DiscreteQuotient.{u2} Y _inst_2) (DiscreteQuotient.semilatticeInf.{u2} Y _inst_2)))) B B'), Eq.{max (succ u1) (succ u2)} ((coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) A) -> (coeSort.{succ u2, succ (succ u2)} (DiscreteQuotient.{u2} Y _inst_2) Type.{u2} (DiscreteQuotient.hasCoeToSort.{u2} Y _inst_2) B')) (Function.comp.{succ u1, succ u2, succ u2} (coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) A) (coeSort.{succ u2, succ (succ u2)} (DiscreteQuotient.{u2} Y _inst_2) Type.{u2} (DiscreteQuotient.hasCoeToSort.{u2} Y _inst_2) B) (coeSort.{succ u2, succ (succ u2)} (DiscreteQuotient.{u2} Y _inst_2) Type.{u2} (DiscreteQuotient.hasCoeToSort.{u2} Y _inst_2) B') (DiscreteQuotient.ofLe.{u2} Y _inst_2 B B' h) (DiscreteQuotient.map.{u1, u2} X Y _inst_1 _inst_2 A B f cond)) (DiscreteQuotient.map.{u1, u2} X Y _inst_1 _inst_2 A B' f (DiscreteQuotient.LeComap.mono.{u1, u2} X Y _inst_1 _inst_2 f A A B B' cond (le_rfl.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.semilatticeInf.{u1} X _inst_1))) A) h))
+  forall {X : Type.{u1}} {Y : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} X] [_inst_2 : TopologicalSpace.{u2} Y] {f : ContinuousMap.{u1, u2} X Y _inst_1 _inst_2} {A : DiscreteQuotient.{u1} X _inst_1} {B : DiscreteQuotient.{u2} Y _inst_2} {B' : DiscreteQuotient.{u2} Y _inst_2} (cond : DiscreteQuotient.LEComap.{u1, u2} X Y _inst_1 _inst_2 f A B) (h : LE.le.{u2} (DiscreteQuotient.{u2} Y _inst_2) (Preorder.toLE.{u2} (DiscreteQuotient.{u2} Y _inst_2) (PartialOrder.toPreorder.{u2} (DiscreteQuotient.{u2} Y _inst_2) (SemilatticeInf.toPartialOrder.{u2} (DiscreteQuotient.{u2} Y _inst_2) (DiscreteQuotient.semilatticeInf.{u2} Y _inst_2)))) B B'), Eq.{max (succ u1) (succ u2)} ((coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) A) -> (coeSort.{succ u2, succ (succ u2)} (DiscreteQuotient.{u2} Y _inst_2) Type.{u2} (DiscreteQuotient.hasCoeToSort.{u2} Y _inst_2) B')) (Function.comp.{succ u1, succ u2, succ u2} (coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) A) (coeSort.{succ u2, succ (succ u2)} (DiscreteQuotient.{u2} Y _inst_2) Type.{u2} (DiscreteQuotient.hasCoeToSort.{u2} Y _inst_2) B) (coeSort.{succ u2, succ (succ u2)} (DiscreteQuotient.{u2} Y _inst_2) Type.{u2} (DiscreteQuotient.hasCoeToSort.{u2} Y _inst_2) B') (DiscreteQuotient.ofLE.{u2} Y _inst_2 B B' h) (DiscreteQuotient.map.{u1, u2} X Y _inst_1 _inst_2 A B f cond)) (DiscreteQuotient.map.{u1, u2} X Y _inst_1 _inst_2 A B' f (DiscreteQuotient.LEComap.mono.{u1, u2} X Y _inst_1 _inst_2 f A A B B' cond (le_rfl.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.semilatticeInf.{u1} X _inst_1))) A) h))
 but is expected to have type
-  forall {X : Type.{u2}} {Y : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} X] [_inst_2 : TopologicalSpace.{u1} Y] {f : ContinuousMap.{u2, u1} X Y _inst_1 _inst_2} {A : DiscreteQuotient.{u2} X _inst_1} {B : DiscreteQuotient.{u1} Y _inst_2} {B' : DiscreteQuotient.{u1} Y _inst_2} (cond : DiscreteQuotient.LeComap.{u2, u1} X Y _inst_1 _inst_2 f A B) (h : LE.le.{u1} (DiscreteQuotient.{u1} Y _inst_2) (Preorder.toLE.{u1} (DiscreteQuotient.{u1} Y _inst_2) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} Y _inst_2) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} Y _inst_2) (DiscreteQuotient.instSemilatticeInfDiscreteQuotient.{u1} Y _inst_2)))) B B'), Eq.{max (succ u2) (succ u1)} ((Quotient.{succ u2} X (DiscreteQuotient.toSetoid.{u2} X _inst_1 A)) -> (Quotient.{succ u1} Y (DiscreteQuotient.toSetoid.{u1} Y _inst_2 B'))) (Function.comp.{succ u2, succ u1, succ u1} (Quotient.{succ u2} X (DiscreteQuotient.toSetoid.{u2} X _inst_1 A)) (Quotient.{succ u1} Y (DiscreteQuotient.toSetoid.{u1} Y _inst_2 B)) (Quotient.{succ u1} Y (DiscreteQuotient.toSetoid.{u1} Y _inst_2 B')) (DiscreteQuotient.ofLe.{u1} Y _inst_2 B B' h) (DiscreteQuotient.map.{u2, u1} X Y _inst_1 _inst_2 A B f cond)) (DiscreteQuotient.map.{u2, u1} X Y _inst_1 _inst_2 A B' f (DiscreteQuotient.LeComap.mono.{u1, u2} X Y _inst_1 _inst_2 f A A B B' cond (le_rfl.{u2} (DiscreteQuotient.{u2} X _inst_1) (PartialOrder.toPreorder.{u2} (DiscreteQuotient.{u2} X _inst_1) (SemilatticeInf.toPartialOrder.{u2} (DiscreteQuotient.{u2} X _inst_1) (DiscreteQuotient.instSemilatticeInfDiscreteQuotient.{u2} X _inst_1))) A) h))
-Case conversion may be inaccurate. Consider using '#align discrete_quotient.of_le_comp_map DiscreteQuotient.ofLe_comp_mapₓ'. -/
+  forall {X : Type.{u2}} {Y : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} X] [_inst_2 : TopologicalSpace.{u1} Y] {f : ContinuousMap.{u2, u1} X Y _inst_1 _inst_2} {A : DiscreteQuotient.{u2} X _inst_1} {B : DiscreteQuotient.{u1} Y _inst_2} {B' : DiscreteQuotient.{u1} Y _inst_2} (cond : DiscreteQuotient.LEComap.{u2, u1} X Y _inst_1 _inst_2 f A B) (h : LE.le.{u1} (DiscreteQuotient.{u1} Y _inst_2) (Preorder.toLE.{u1} (DiscreteQuotient.{u1} Y _inst_2) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} Y _inst_2) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} Y _inst_2) (DiscreteQuotient.instSemilatticeInfDiscreteQuotient.{u1} Y _inst_2)))) B B'), Eq.{max (succ u2) (succ u1)} ((Quotient.{succ u2} X (DiscreteQuotient.toSetoid.{u2} X _inst_1 A)) -> (Quotient.{succ u1} Y (DiscreteQuotient.toSetoid.{u1} Y _inst_2 B'))) (Function.comp.{succ u2, succ u1, succ u1} (Quotient.{succ u2} X (DiscreteQuotient.toSetoid.{u2} X _inst_1 A)) (Quotient.{succ u1} Y (DiscreteQuotient.toSetoid.{u1} Y _inst_2 B)) (Quotient.{succ u1} Y (DiscreteQuotient.toSetoid.{u1} Y _inst_2 B')) (DiscreteQuotient.ofLE.{u1} Y _inst_2 B B' h) (DiscreteQuotient.map.{u2, u1} X Y _inst_1 _inst_2 A B f cond)) (DiscreteQuotient.map.{u2, u1} X Y _inst_1 _inst_2 A B' f (DiscreteQuotient.LEComap.mono.{u1, u2} X Y _inst_1 _inst_2 f A A B B' cond (le_rfl.{u2} (DiscreteQuotient.{u2} X _inst_1) (PartialOrder.toPreorder.{u2} (DiscreteQuotient.{u2} X _inst_1) (SemilatticeInf.toPartialOrder.{u2} (DiscreteQuotient.{u2} X _inst_1) (DiscreteQuotient.instSemilatticeInfDiscreteQuotient.{u2} X _inst_1))) A) h))
+Case conversion may be inaccurate. Consider using '#align discrete_quotient.of_le_comp_map DiscreteQuotient.ofLE_comp_mapₓ'. -/
 @[simp]
-theorem ofLe_comp_map (cond : LeComap f A B) (h : B ≤ B') :
-    ofLe h ∘ map f cond = map f (cond.mono le_rfl h) :=
-  funext <| ofLe_map cond h
-#align discrete_quotient.of_le_comp_map DiscreteQuotient.ofLe_comp_map
+theorem ofLE_comp_map (cond : LEComap f A B) (h : B ≤ B') :
+    ofLE h ∘ map f cond = map f (cond.mono le_rfl h) :=
+  funext <| ofLE_map cond h
+#align discrete_quotient.of_le_comp_map DiscreteQuotient.ofLE_comp_map
 
-/- warning: discrete_quotient.map_of_le -> DiscreteQuotient.map_ofLe is a dubious translation:
+/- warning: discrete_quotient.map_of_le -> DiscreteQuotient.map_ofLE is a dubious translation:
 lean 3 declaration is
-  forall {X : Type.{u1}} {Y : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} X] [_inst_2 : TopologicalSpace.{u2} Y] {f : ContinuousMap.{u1, u2} X Y _inst_1 _inst_2} {A : DiscreteQuotient.{u1} X _inst_1} {A' : DiscreteQuotient.{u1} X _inst_1} {B : DiscreteQuotient.{u2} Y _inst_2} (cond : DiscreteQuotient.LeComap.{u1, u2} X Y _inst_1 _inst_2 f A B) (h : LE.le.{u1} (DiscreteQuotient.{u1} X _inst_1) (Preorder.toLE.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.semilatticeInf.{u1} X _inst_1)))) A' A) (c : coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) A'), Eq.{succ u2} (coeSort.{succ u2, succ (succ u2)} (DiscreteQuotient.{u2} Y _inst_2) Type.{u2} (DiscreteQuotient.hasCoeToSort.{u2} Y _inst_2) B) (DiscreteQuotient.map.{u1, u2} X Y _inst_1 _inst_2 A B f cond (DiscreteQuotient.ofLe.{u1} X _inst_1 A' A h c)) (DiscreteQuotient.map.{u1, u2} X Y _inst_1 _inst_2 A' B f (DiscreteQuotient.LeComap.mono.{u1, u2} X Y _inst_1 _inst_2 f A A' B B cond h (le_rfl.{u2} (DiscreteQuotient.{u2} Y _inst_2) (PartialOrder.toPreorder.{u2} (DiscreteQuotient.{u2} Y _inst_2) (SemilatticeInf.toPartialOrder.{u2} (DiscreteQuotient.{u2} Y _inst_2) (DiscreteQuotient.semilatticeInf.{u2} Y _inst_2))) B)) c)
+  forall {X : Type.{u1}} {Y : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} X] [_inst_2 : TopologicalSpace.{u2} Y] {f : ContinuousMap.{u1, u2} X Y _inst_1 _inst_2} {A : DiscreteQuotient.{u1} X _inst_1} {A' : DiscreteQuotient.{u1} X _inst_1} {B : DiscreteQuotient.{u2} Y _inst_2} (cond : DiscreteQuotient.LEComap.{u1, u2} X Y _inst_1 _inst_2 f A B) (h : LE.le.{u1} (DiscreteQuotient.{u1} X _inst_1) (Preorder.toLE.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.semilatticeInf.{u1} X _inst_1)))) A' A) (c : coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) A'), Eq.{succ u2} (coeSort.{succ u2, succ (succ u2)} (DiscreteQuotient.{u2} Y _inst_2) Type.{u2} (DiscreteQuotient.hasCoeToSort.{u2} Y _inst_2) B) (DiscreteQuotient.map.{u1, u2} X Y _inst_1 _inst_2 A B f cond (DiscreteQuotient.ofLE.{u1} X _inst_1 A' A h c)) (DiscreteQuotient.map.{u1, u2} X Y _inst_1 _inst_2 A' B f (DiscreteQuotient.LEComap.mono.{u1, u2} X Y _inst_1 _inst_2 f A A' B B cond h (le_rfl.{u2} (DiscreteQuotient.{u2} Y _inst_2) (PartialOrder.toPreorder.{u2} (DiscreteQuotient.{u2} Y _inst_2) (SemilatticeInf.toPartialOrder.{u2} (DiscreteQuotient.{u2} Y _inst_2) (DiscreteQuotient.semilatticeInf.{u2} Y _inst_2))) B)) c)
 but is expected to have type
-  forall {X : Type.{u2}} {Y : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} X] [_inst_2 : TopologicalSpace.{u1} Y] {f : ContinuousMap.{u2, u1} X Y _inst_1 _inst_2} {A : DiscreteQuotient.{u2} X _inst_1} {A' : DiscreteQuotient.{u2} X _inst_1} {B : DiscreteQuotient.{u1} Y _inst_2} (cond : DiscreteQuotient.LeComap.{u2, u1} X Y _inst_1 _inst_2 f A B) (h : LE.le.{u2} (DiscreteQuotient.{u2} X _inst_1) (Preorder.toLE.{u2} (DiscreteQuotient.{u2} X _inst_1) (PartialOrder.toPreorder.{u2} (DiscreteQuotient.{u2} X _inst_1) (SemilatticeInf.toPartialOrder.{u2} (DiscreteQuotient.{u2} X _inst_1) (DiscreteQuotient.instSemilatticeInfDiscreteQuotient.{u2} X _inst_1)))) A' A) (c : Quotient.{succ u2} X (DiscreteQuotient.toSetoid.{u2} X _inst_1 A')), Eq.{succ u1} (Quotient.{succ u1} Y (DiscreteQuotient.toSetoid.{u1} Y _inst_2 B)) (DiscreteQuotient.map.{u2, u1} X Y _inst_1 _inst_2 A B f cond (DiscreteQuotient.ofLe.{u2} X _inst_1 A' A h c)) (DiscreteQuotient.map.{u2, u1} X Y _inst_1 _inst_2 A' B f (DiscreteQuotient.LeComap.mono.{u1, u2} X Y _inst_1 _inst_2 f A A' B B cond h (le_rfl.{u1} (DiscreteQuotient.{u1} Y _inst_2) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} Y _inst_2) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} Y _inst_2) (DiscreteQuotient.instSemilatticeInfDiscreteQuotient.{u1} Y _inst_2))) B)) c)
-Case conversion may be inaccurate. Consider using '#align discrete_quotient.map_of_le DiscreteQuotient.map_ofLeₓ'. -/
+  forall {X : Type.{u2}} {Y : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} X] [_inst_2 : TopologicalSpace.{u1} Y] {f : ContinuousMap.{u2, u1} X Y _inst_1 _inst_2} {A : DiscreteQuotient.{u2} X _inst_1} {A' : DiscreteQuotient.{u2} X _inst_1} {B : DiscreteQuotient.{u1} Y _inst_2} (cond : DiscreteQuotient.LEComap.{u2, u1} X Y _inst_1 _inst_2 f A B) (h : LE.le.{u2} (DiscreteQuotient.{u2} X _inst_1) (Preorder.toLE.{u2} (DiscreteQuotient.{u2} X _inst_1) (PartialOrder.toPreorder.{u2} (DiscreteQuotient.{u2} X _inst_1) (SemilatticeInf.toPartialOrder.{u2} (DiscreteQuotient.{u2} X _inst_1) (DiscreteQuotient.instSemilatticeInfDiscreteQuotient.{u2} X _inst_1)))) A' A) (c : Quotient.{succ u2} X (DiscreteQuotient.toSetoid.{u2} X _inst_1 A')), Eq.{succ u1} (Quotient.{succ u1} Y (DiscreteQuotient.toSetoid.{u1} Y _inst_2 B)) (DiscreteQuotient.map.{u2, u1} X Y _inst_1 _inst_2 A B f cond (DiscreteQuotient.ofLE.{u2} X _inst_1 A' A h c)) (DiscreteQuotient.map.{u2, u1} X Y _inst_1 _inst_2 A' B f (DiscreteQuotient.LEComap.mono.{u1, u2} X Y _inst_1 _inst_2 f A A' B B cond h (le_rfl.{u1} (DiscreteQuotient.{u1} Y _inst_2) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} Y _inst_2) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} Y _inst_2) (DiscreteQuotient.instSemilatticeInfDiscreteQuotient.{u1} Y _inst_2))) B)) c)
+Case conversion may be inaccurate. Consider using '#align discrete_quotient.map_of_le DiscreteQuotient.map_ofLEₓ'. -/
 @[simp]
-theorem map_ofLe (cond : LeComap f A B) (h : A' ≤ A) (c : A') :
-    map f cond (ofLe h c) = map f (cond.mono h le_rfl) c :=
+theorem map_ofLE (cond : LEComap f A B) (h : A' ≤ A) (c : A') :
+    map f cond (ofLE h c) = map f (cond.mono h le_rfl) c :=
   by
   rcases c with ⟨⟩
   rfl
-#align discrete_quotient.map_of_le DiscreteQuotient.map_ofLe
+#align discrete_quotient.map_of_le DiscreteQuotient.map_ofLE
 
-/- warning: discrete_quotient.map_comp_of_le -> DiscreteQuotient.map_comp_ofLe is a dubious translation:
+/- warning: discrete_quotient.map_comp_of_le -> DiscreteQuotient.map_comp_ofLE is a dubious translation:
 lean 3 declaration is
-  forall {X : Type.{u1}} {Y : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} X] [_inst_2 : TopologicalSpace.{u2} Y] {f : ContinuousMap.{u1, u2} X Y _inst_1 _inst_2} {A : DiscreteQuotient.{u1} X _inst_1} {A' : DiscreteQuotient.{u1} X _inst_1} {B : DiscreteQuotient.{u2} Y _inst_2} (cond : DiscreteQuotient.LeComap.{u1, u2} X Y _inst_1 _inst_2 f A B) (h : LE.le.{u1} (DiscreteQuotient.{u1} X _inst_1) (Preorder.toLE.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.semilatticeInf.{u1} X _inst_1)))) A' A), Eq.{max (succ u1) (succ u2)} ((coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) A') -> (coeSort.{succ u2, succ (succ u2)} (DiscreteQuotient.{u2} Y _inst_2) Type.{u2} (DiscreteQuotient.hasCoeToSort.{u2} Y _inst_2) B)) (Function.comp.{succ u1, succ u1, succ u2} (coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) A') (coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) A) (coeSort.{succ u2, succ (succ u2)} (DiscreteQuotient.{u2} Y _inst_2) Type.{u2} (DiscreteQuotient.hasCoeToSort.{u2} Y _inst_2) B) (DiscreteQuotient.map.{u1, u2} X Y _inst_1 _inst_2 A B f cond) (DiscreteQuotient.ofLe.{u1} X _inst_1 A' A h)) (DiscreteQuotient.map.{u1, u2} X Y _inst_1 _inst_2 A' B f (DiscreteQuotient.LeComap.mono.{u1, u2} X Y _inst_1 _inst_2 f A A' B B cond h (le_rfl.{u2} (DiscreteQuotient.{u2} Y _inst_2) (PartialOrder.toPreorder.{u2} (DiscreteQuotient.{u2} Y _inst_2) (SemilatticeInf.toPartialOrder.{u2} (DiscreteQuotient.{u2} Y _inst_2) (DiscreteQuotient.semilatticeInf.{u2} Y _inst_2))) B)))
+  forall {X : Type.{u1}} {Y : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} X] [_inst_2 : TopologicalSpace.{u2} Y] {f : ContinuousMap.{u1, u2} X Y _inst_1 _inst_2} {A : DiscreteQuotient.{u1} X _inst_1} {A' : DiscreteQuotient.{u1} X _inst_1} {B : DiscreteQuotient.{u2} Y _inst_2} (cond : DiscreteQuotient.LEComap.{u1, u2} X Y _inst_1 _inst_2 f A B) (h : LE.le.{u1} (DiscreteQuotient.{u1} X _inst_1) (Preorder.toLE.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.semilatticeInf.{u1} X _inst_1)))) A' A), Eq.{max (succ u1) (succ u2)} ((coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) A') -> (coeSort.{succ u2, succ (succ u2)} (DiscreteQuotient.{u2} Y _inst_2) Type.{u2} (DiscreteQuotient.hasCoeToSort.{u2} Y _inst_2) B)) (Function.comp.{succ u1, succ u1, succ u2} (coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) A') (coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) A) (coeSort.{succ u2, succ (succ u2)} (DiscreteQuotient.{u2} Y _inst_2) Type.{u2} (DiscreteQuotient.hasCoeToSort.{u2} Y _inst_2) B) (DiscreteQuotient.map.{u1, u2} X Y _inst_1 _inst_2 A B f cond) (DiscreteQuotient.ofLE.{u1} X _inst_1 A' A h)) (DiscreteQuotient.map.{u1, u2} X Y _inst_1 _inst_2 A' B f (DiscreteQuotient.LEComap.mono.{u1, u2} X Y _inst_1 _inst_2 f A A' B B cond h (le_rfl.{u2} (DiscreteQuotient.{u2} Y _inst_2) (PartialOrder.toPreorder.{u2} (DiscreteQuotient.{u2} Y _inst_2) (SemilatticeInf.toPartialOrder.{u2} (DiscreteQuotient.{u2} Y _inst_2) (DiscreteQuotient.semilatticeInf.{u2} Y _inst_2))) B)))
 but is expected to have type
-  forall {X : Type.{u2}} {Y : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} X] [_inst_2 : TopologicalSpace.{u1} Y] {f : ContinuousMap.{u2, u1} X Y _inst_1 _inst_2} {A : DiscreteQuotient.{u2} X _inst_1} {A' : DiscreteQuotient.{u2} X _inst_1} {B : DiscreteQuotient.{u1} Y _inst_2} (cond : DiscreteQuotient.LeComap.{u2, u1} X Y _inst_1 _inst_2 f A B) (h : LE.le.{u2} (DiscreteQuotient.{u2} X _inst_1) (Preorder.toLE.{u2} (DiscreteQuotient.{u2} X _inst_1) (PartialOrder.toPreorder.{u2} (DiscreteQuotient.{u2} X _inst_1) (SemilatticeInf.toPartialOrder.{u2} (DiscreteQuotient.{u2} X _inst_1) (DiscreteQuotient.instSemilatticeInfDiscreteQuotient.{u2} X _inst_1)))) A' A), Eq.{max (succ u2) (succ u1)} ((Quotient.{succ u2} X (DiscreteQuotient.toSetoid.{u2} X _inst_1 A')) -> (Quotient.{succ u1} Y (DiscreteQuotient.toSetoid.{u1} Y _inst_2 B))) (Function.comp.{succ u2, succ u2, succ u1} (Quotient.{succ u2} X (DiscreteQuotient.toSetoid.{u2} X _inst_1 A')) (Quotient.{succ u2} X (DiscreteQuotient.toSetoid.{u2} X _inst_1 A)) (Quotient.{succ u1} Y (DiscreteQuotient.toSetoid.{u1} Y _inst_2 B)) (DiscreteQuotient.map.{u2, u1} X Y _inst_1 _inst_2 A B f cond) (DiscreteQuotient.ofLe.{u2} X _inst_1 A' A h)) (DiscreteQuotient.map.{u2, u1} X Y _inst_1 _inst_2 A' B f (DiscreteQuotient.LeComap.mono.{u1, u2} X Y _inst_1 _inst_2 f A A' B B cond h (le_rfl.{u1} (DiscreteQuotient.{u1} Y _inst_2) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} Y _inst_2) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} Y _inst_2) (DiscreteQuotient.instSemilatticeInfDiscreteQuotient.{u1} Y _inst_2))) B)))
-Case conversion may be inaccurate. Consider using '#align discrete_quotient.map_comp_of_le DiscreteQuotient.map_comp_ofLeₓ'. -/
+  forall {X : Type.{u2}} {Y : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} X] [_inst_2 : TopologicalSpace.{u1} Y] {f : ContinuousMap.{u2, u1} X Y _inst_1 _inst_2} {A : DiscreteQuotient.{u2} X _inst_1} {A' : DiscreteQuotient.{u2} X _inst_1} {B : DiscreteQuotient.{u1} Y _inst_2} (cond : DiscreteQuotient.LEComap.{u2, u1} X Y _inst_1 _inst_2 f A B) (h : LE.le.{u2} (DiscreteQuotient.{u2} X _inst_1) (Preorder.toLE.{u2} (DiscreteQuotient.{u2} X _inst_1) (PartialOrder.toPreorder.{u2} (DiscreteQuotient.{u2} X _inst_1) (SemilatticeInf.toPartialOrder.{u2} (DiscreteQuotient.{u2} X _inst_1) (DiscreteQuotient.instSemilatticeInfDiscreteQuotient.{u2} X _inst_1)))) A' A), Eq.{max (succ u2) (succ u1)} ((Quotient.{succ u2} X (DiscreteQuotient.toSetoid.{u2} X _inst_1 A')) -> (Quotient.{succ u1} Y (DiscreteQuotient.toSetoid.{u1} Y _inst_2 B))) (Function.comp.{succ u2, succ u2, succ u1} (Quotient.{succ u2} X (DiscreteQuotient.toSetoid.{u2} X _inst_1 A')) (Quotient.{succ u2} X (DiscreteQuotient.toSetoid.{u2} X _inst_1 A)) (Quotient.{succ u1} Y (DiscreteQuotient.toSetoid.{u1} Y _inst_2 B)) (DiscreteQuotient.map.{u2, u1} X Y _inst_1 _inst_2 A B f cond) (DiscreteQuotient.ofLE.{u2} X _inst_1 A' A h)) (DiscreteQuotient.map.{u2, u1} X Y _inst_1 _inst_2 A' B f (DiscreteQuotient.LEComap.mono.{u1, u2} X Y _inst_1 _inst_2 f A A' B B cond h (le_rfl.{u1} (DiscreteQuotient.{u1} Y _inst_2) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} Y _inst_2) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} Y _inst_2) (DiscreteQuotient.instSemilatticeInfDiscreteQuotient.{u1} Y _inst_2))) B)))
+Case conversion may be inaccurate. Consider using '#align discrete_quotient.map_comp_of_le DiscreteQuotient.map_comp_ofLEₓ'. -/
 @[simp]
-theorem map_comp_ofLe (cond : LeComap f A B) (h : A' ≤ A) :
-    map f cond ∘ ofLe h = map f (cond.mono h le_rfl) :=
-  funext <| map_ofLe cond h
-#align discrete_quotient.map_comp_of_le DiscreteQuotient.map_comp_ofLe
+theorem map_comp_ofLE (cond : LEComap f A B) (h : A' ≤ A) :
+    map f cond ∘ ofLE h = map f (cond.mono h le_rfl) :=
+  funext <| map_ofLE cond h
+#align discrete_quotient.map_comp_of_le DiscreteQuotient.map_comp_ofLE
 
 end Map
 
@@ -578,28 +578,28 @@ theorem eq_of_forall_proj_eq [T2Space X] [CompactSpace X] [disc : TotallyDisconn
 #align discrete_quotient.eq_of_forall_proj_eq DiscreteQuotient.eq_of_forall_proj_eq
 -/
 
-/- warning: discrete_quotient.fiber_subset_of_le -> DiscreteQuotient.fiber_subset_ofLe is a dubious translation:
+/- warning: discrete_quotient.fiber_subset_of_le -> DiscreteQuotient.fiber_subset_ofLE is a dubious translation:
 lean 3 declaration is
-  forall {X : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} X] {A : DiscreteQuotient.{u1} X _inst_1} {B : DiscreteQuotient.{u1} X _inst_1} (h : LE.le.{u1} (DiscreteQuotient.{u1} X _inst_1) (Preorder.toLE.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.semilatticeInf.{u1} X _inst_1)))) A B) (a : coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) A), HasSubset.Subset.{u1} (Set.{u1} X) (Set.hasSubset.{u1} X) (Set.preimage.{u1, u1} X (coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) A) (DiscreteQuotient.proj.{u1} X _inst_1 A) (Singleton.singleton.{u1, u1} (coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) A) (Set.{u1} (coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) A)) (Set.hasSingleton.{u1} (coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) A)) a)) (Set.preimage.{u1, u1} X (coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) B) (DiscreteQuotient.proj.{u1} X _inst_1 B) (Singleton.singleton.{u1, u1} (coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) B) (Set.{u1} (coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) B)) (Set.hasSingleton.{u1} (coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) B)) (DiscreteQuotient.ofLe.{u1} X _inst_1 A B h a)))
+  forall {X : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} X] {A : DiscreteQuotient.{u1} X _inst_1} {B : DiscreteQuotient.{u1} X _inst_1} (h : LE.le.{u1} (DiscreteQuotient.{u1} X _inst_1) (Preorder.toLE.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.semilatticeInf.{u1} X _inst_1)))) A B) (a : coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) A), HasSubset.Subset.{u1} (Set.{u1} X) (Set.hasSubset.{u1} X) (Set.preimage.{u1, u1} X (coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) A) (DiscreteQuotient.proj.{u1} X _inst_1 A) (Singleton.singleton.{u1, u1} (coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) A) (Set.{u1} (coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) A)) (Set.hasSingleton.{u1} (coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) A)) a)) (Set.preimage.{u1, u1} X (coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) B) (DiscreteQuotient.proj.{u1} X _inst_1 B) (Singleton.singleton.{u1, u1} (coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) B) (Set.{u1} (coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) B)) (Set.hasSingleton.{u1} (coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) B)) (DiscreteQuotient.ofLE.{u1} X _inst_1 A B h a)))
 but is expected to have type
-  forall {X : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} X] {A : DiscreteQuotient.{u1} X _inst_1} {B : DiscreteQuotient.{u1} X _inst_1} (h : LE.le.{u1} (DiscreteQuotient.{u1} X _inst_1) (Preorder.toLE.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.instSemilatticeInfDiscreteQuotient.{u1} X _inst_1)))) A B) (a : Quotient.{succ u1} X (DiscreteQuotient.toSetoid.{u1} X _inst_1 A)), HasSubset.Subset.{u1} (Set.{u1} X) (Set.instHasSubsetSet.{u1} X) (Set.preimage.{u1, u1} X (Quotient.{succ u1} X (DiscreteQuotient.toSetoid.{u1} X _inst_1 A)) (DiscreteQuotient.proj.{u1} X _inst_1 A) (Singleton.singleton.{u1, u1} (Quotient.{succ u1} X (DiscreteQuotient.toSetoid.{u1} X _inst_1 A)) (Set.{u1} (Quotient.{succ u1} X (DiscreteQuotient.toSetoid.{u1} X _inst_1 A))) (Set.instSingletonSet.{u1} (Quotient.{succ u1} X (DiscreteQuotient.toSetoid.{u1} X _inst_1 A))) a)) (Set.preimage.{u1, u1} X (Quotient.{succ u1} X (DiscreteQuotient.toSetoid.{u1} X _inst_1 B)) (DiscreteQuotient.proj.{u1} X _inst_1 B) (Singleton.singleton.{u1, u1} (Quotient.{succ u1} X (DiscreteQuotient.toSetoid.{u1} X _inst_1 B)) (Set.{u1} (Quotient.{succ u1} X (DiscreteQuotient.toSetoid.{u1} X _inst_1 B))) (Set.instSingletonSet.{u1} (Quotient.{succ u1} X (DiscreteQuotient.toSetoid.{u1} X _inst_1 B))) (DiscreteQuotient.ofLe.{u1} X _inst_1 A B h a)))
-Case conversion may be inaccurate. Consider using '#align discrete_quotient.fiber_subset_of_le DiscreteQuotient.fiber_subset_ofLeₓ'. -/
-theorem fiber_subset_ofLe {A B : DiscreteQuotient X} (h : A ≤ B) (a : A) :
-    A.proj ⁻¹' {a} ⊆ B.proj ⁻¹' {ofLe h a} :=
+  forall {X : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} X] {A : DiscreteQuotient.{u1} X _inst_1} {B : DiscreteQuotient.{u1} X _inst_1} (h : LE.le.{u1} (DiscreteQuotient.{u1} X _inst_1) (Preorder.toLE.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.instSemilatticeInfDiscreteQuotient.{u1} X _inst_1)))) A B) (a : Quotient.{succ u1} X (DiscreteQuotient.toSetoid.{u1} X _inst_1 A)), HasSubset.Subset.{u1} (Set.{u1} X) (Set.instHasSubsetSet.{u1} X) (Set.preimage.{u1, u1} X (Quotient.{succ u1} X (DiscreteQuotient.toSetoid.{u1} X _inst_1 A)) (DiscreteQuotient.proj.{u1} X _inst_1 A) (Singleton.singleton.{u1, u1} (Quotient.{succ u1} X (DiscreteQuotient.toSetoid.{u1} X _inst_1 A)) (Set.{u1} (Quotient.{succ u1} X (DiscreteQuotient.toSetoid.{u1} X _inst_1 A))) (Set.instSingletonSet.{u1} (Quotient.{succ u1} X (DiscreteQuotient.toSetoid.{u1} X _inst_1 A))) a)) (Set.preimage.{u1, u1} X (Quotient.{succ u1} X (DiscreteQuotient.toSetoid.{u1} X _inst_1 B)) (DiscreteQuotient.proj.{u1} X _inst_1 B) (Singleton.singleton.{u1, u1} (Quotient.{succ u1} X (DiscreteQuotient.toSetoid.{u1} X _inst_1 B)) (Set.{u1} (Quotient.{succ u1} X (DiscreteQuotient.toSetoid.{u1} X _inst_1 B))) (Set.instSingletonSet.{u1} (Quotient.{succ u1} X (DiscreteQuotient.toSetoid.{u1} X _inst_1 B))) (DiscreteQuotient.ofLE.{u1} X _inst_1 A B h a)))
+Case conversion may be inaccurate. Consider using '#align discrete_quotient.fiber_subset_of_le DiscreteQuotient.fiber_subset_ofLEₓ'. -/
+theorem fiber_subset_ofLE {A B : DiscreteQuotient X} (h : A ≤ B) (a : A) :
+    A.proj ⁻¹' {a} ⊆ B.proj ⁻¹' {ofLE h a} :=
   by
   rcases A.proj_surjective a with ⟨a, rfl⟩
   rw [fiber_eq, of_le_proj, fiber_eq]
   exact fun _ h' => h h'
-#align discrete_quotient.fiber_subset_of_le DiscreteQuotient.fiber_subset_ofLe
+#align discrete_quotient.fiber_subset_of_le DiscreteQuotient.fiber_subset_ofLE
 
 /- warning: discrete_quotient.exists_of_compat -> DiscreteQuotient.exists_of_compat is a dubious translation:
 lean 3 declaration is
-  forall {X : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} X] [_inst_4 : CompactSpace.{u1} X _inst_1] (Qs : forall (Q : DiscreteQuotient.{u1} X _inst_1), coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) Q), (forall (A : DiscreteQuotient.{u1} X _inst_1) (B : DiscreteQuotient.{u1} X _inst_1) (h : LE.le.{u1} (DiscreteQuotient.{u1} X _inst_1) (Preorder.toLE.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.semilatticeInf.{u1} X _inst_1)))) A B), Eq.{succ u1} (coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) B) (DiscreteQuotient.ofLe.{u1} X _inst_1 A B h (Qs A)) (Qs B)) -> (Exists.{succ u1} X (fun (x : X) => forall (Q : DiscreteQuotient.{u1} X _inst_1), Eq.{succ u1} (coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) Q) (DiscreteQuotient.proj.{u1} X _inst_1 Q x) (Qs Q)))
+  forall {X : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} X] [_inst_4 : CompactSpace.{u1} X _inst_1] (Qs : forall (Q : DiscreteQuotient.{u1} X _inst_1), coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) Q), (forall (A : DiscreteQuotient.{u1} X _inst_1) (B : DiscreteQuotient.{u1} X _inst_1) (h : LE.le.{u1} (DiscreteQuotient.{u1} X _inst_1) (Preorder.toLE.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.semilatticeInf.{u1} X _inst_1)))) A B), Eq.{succ u1} (coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) B) (DiscreteQuotient.ofLE.{u1} X _inst_1 A B h (Qs A)) (Qs B)) -> (Exists.{succ u1} X (fun (x : X) => forall (Q : DiscreteQuotient.{u1} X _inst_1), Eq.{succ u1} (coeSort.{succ u1, succ (succ u1)} (DiscreteQuotient.{u1} X _inst_1) Type.{u1} (DiscreteQuotient.hasCoeToSort.{u1} X _inst_1) Q) (DiscreteQuotient.proj.{u1} X _inst_1 Q x) (Qs Q)))
 but is expected to have type
-  forall {X : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} X] [_inst_4 : CompactSpace.{u1} X _inst_1] (Qs : forall (Q : DiscreteQuotient.{u1} X _inst_1), Quotient.{succ u1} X (DiscreteQuotient.toSetoid.{u1} X _inst_1 Q)), (forall (A : DiscreteQuotient.{u1} X _inst_1) (B : DiscreteQuotient.{u1} X _inst_1) (h : LE.le.{u1} (DiscreteQuotient.{u1} X _inst_1) (Preorder.toLE.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.instSemilatticeInfDiscreteQuotient.{u1} X _inst_1)))) A B), Eq.{succ u1} (Quotient.{succ u1} X (DiscreteQuotient.toSetoid.{u1} X _inst_1 B)) (DiscreteQuotient.ofLe.{u1} X _inst_1 A B h (Qs A)) (Qs B)) -> (Exists.{succ u1} X (fun (x : X) => forall (Q : DiscreteQuotient.{u1} X _inst_1), Eq.{succ u1} (Quotient.{succ u1} X (DiscreteQuotient.toSetoid.{u1} X _inst_1 Q)) (DiscreteQuotient.proj.{u1} X _inst_1 Q x) (Qs Q)))
+  forall {X : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} X] [_inst_4 : CompactSpace.{u1} X _inst_1] (Qs : forall (Q : DiscreteQuotient.{u1} X _inst_1), Quotient.{succ u1} X (DiscreteQuotient.toSetoid.{u1} X _inst_1 Q)), (forall (A : DiscreteQuotient.{u1} X _inst_1) (B : DiscreteQuotient.{u1} X _inst_1) (h : LE.le.{u1} (DiscreteQuotient.{u1} X _inst_1) (Preorder.toLE.{u1} (DiscreteQuotient.{u1} X _inst_1) (PartialOrder.toPreorder.{u1} (DiscreteQuotient.{u1} X _inst_1) (SemilatticeInf.toPartialOrder.{u1} (DiscreteQuotient.{u1} X _inst_1) (DiscreteQuotient.instSemilatticeInfDiscreteQuotient.{u1} X _inst_1)))) A B), Eq.{succ u1} (Quotient.{succ u1} X (DiscreteQuotient.toSetoid.{u1} X _inst_1 B)) (DiscreteQuotient.ofLE.{u1} X _inst_1 A B h (Qs A)) (Qs B)) -> (Exists.{succ u1} X (fun (x : X) => forall (Q : DiscreteQuotient.{u1} X _inst_1), Eq.{succ u1} (Quotient.{succ u1} X (DiscreteQuotient.toSetoid.{u1} X _inst_1 Q)) (DiscreteQuotient.proj.{u1} X _inst_1 Q x) (Qs Q)))
 Case conversion may be inaccurate. Consider using '#align discrete_quotient.exists_of_compat DiscreteQuotient.exists_of_compatₓ'. -/
 theorem exists_of_compat [CompactSpace X] (Qs : ∀ Q : DiscreteQuotient X, Q)
-    (compat : ∀ (A B : DiscreteQuotient X) (h : A ≤ B), ofLe h (Qs _) = Qs _) :
+    (compat : ∀ (A B : DiscreteQuotient X) (h : A ≤ B), ofLE h (Qs _) = Qs _) :
     ∃ x : X, ∀ Q : DiscreteQuotient X, Q.proj x = Qs _ :=
   by
   obtain ⟨x, hx⟩ : (⋂ Q, proj Q ⁻¹' {Qs Q}).Nonempty :=
Diff
@@ -645,7 +645,7 @@ def lift : LocallyConstant f.DiscreteQuotient α :=
 lean 3 declaration is
   forall {α : Type.{u1}} {X : Type.{u2}} [_inst_1 : TopologicalSpace.{u2} X] (f : LocallyConstant.{u2, u1} X α _inst_1), Eq.{max (succ u2) (succ u1)} (X -> α) (Function.comp.{succ u2, succ u2, succ u1} X (coeSort.{succ u2, succ (succ u2)} (DiscreteQuotient.{u2} X _inst_1) Type.{u2} (DiscreteQuotient.hasCoeToSort.{u2} X _inst_1) (LocallyConstant.discreteQuotient.{u1, u2} α X _inst_1 f)) α (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (LocallyConstant.{u2, u1} (coeSort.{succ u2, succ (succ u2)} (DiscreteQuotient.{u2} X _inst_1) Type.{u2} (DiscreteQuotient.hasCoeToSort.{u2} X _inst_1) (LocallyConstant.discreteQuotient.{u1, u2} α X _inst_1 f)) α (DiscreteQuotient.topologicalSpace.{u2} X _inst_1 (LocallyConstant.discreteQuotient.{u1, u2} α X _inst_1 f))) (fun (_x : LocallyConstant.{u2, u1} (coeSort.{succ u2, succ (succ u2)} (DiscreteQuotient.{u2} X _inst_1) Type.{u2} (DiscreteQuotient.hasCoeToSort.{u2} X _inst_1) (LocallyConstant.discreteQuotient.{u1, u2} α X _inst_1 f)) α (DiscreteQuotient.topologicalSpace.{u2} X _inst_1 (LocallyConstant.discreteQuotient.{u1, u2} α X _inst_1 f))) => (coeSort.{succ u2, succ (succ u2)} (DiscreteQuotient.{u2} X _inst_1) Type.{u2} (DiscreteQuotient.hasCoeToSort.{u2} X _inst_1) (LocallyConstant.discreteQuotient.{u1, u2} α X _inst_1 f)) -> α) (LocallyConstant.hasCoeToFun.{u2, u1} (coeSort.{succ u2, succ (succ u2)} (DiscreteQuotient.{u2} X _inst_1) Type.{u2} (DiscreteQuotient.hasCoeToSort.{u2} X _inst_1) (LocallyConstant.discreteQuotient.{u1, u2} α X _inst_1 f)) α (DiscreteQuotient.topologicalSpace.{u2} X _inst_1 (LocallyConstant.discreteQuotient.{u1, u2} α X _inst_1 f))) (LocallyConstant.lift.{u1, u2} α X _inst_1 f)) (DiscreteQuotient.proj.{u2} X _inst_1 (LocallyConstant.discreteQuotient.{u1, u2} α X _inst_1 f))) (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (LocallyConstant.{u2, u1} X α _inst_1) (fun (_x : LocallyConstant.{u2, u1} X α _inst_1) => X -> α) (LocallyConstant.hasCoeToFun.{u2, u1} X α _inst_1) f)
 but is expected to have type
-  forall {α : Type.{u2}} {X : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} X] (f : LocallyConstant.{u1, u2} X α _inst_1), Eq.{max (succ u2) (succ u1)} (X -> α) (Function.comp.{succ u1, succ u1, succ u2} X (Quotient.{succ u1} X (DiscreteQuotient.toSetoid.{u1} X _inst_1 (LocallyConstant.discreteQuotient.{u2, u1} α X _inst_1 f))) α (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (LocallyConstant.{u1, u2} (Quotient.{succ u1} X (DiscreteQuotient.toSetoid.{u1} X _inst_1 (LocallyConstant.discreteQuotient.{u2, u1} α X _inst_1 f))) α (DiscreteQuotient.instTopologicalSpaceQuotientToSetoid.{u1} X _inst_1 (LocallyConstant.discreteQuotient.{u2, u1} α X _inst_1 f))) (Quotient.{succ u1} X (DiscreteQuotient.toSetoid.{u1} X _inst_1 (LocallyConstant.discreteQuotient.{u2, u1} α X _inst_1 f))) (fun (_x : Quotient.{succ u1} X (DiscreteQuotient.toSetoid.{u1} X _inst_1 (LocallyConstant.discreteQuotient.{u2, u1} α X _inst_1 f))) => (fun (x._@.Mathlib.Topology.LocallyConstant.Basic._hyg.2185 : Quotient.{succ u1} X (DiscreteQuotient.toSetoid.{u1} X _inst_1 (LocallyConstant.discreteQuotient.{u2, u1} α X _inst_1 f))) => α) _x) (LocallyConstant.instFunLikeLocallyConstant.{u1, u2} (Quotient.{succ u1} X (DiscreteQuotient.toSetoid.{u1} X _inst_1 (LocallyConstant.discreteQuotient.{u2, u1} α X _inst_1 f))) α (DiscreteQuotient.instTopologicalSpaceQuotientToSetoid.{u1} X _inst_1 (LocallyConstant.discreteQuotient.{u2, u1} α X _inst_1 f))) (LocallyConstant.lift.{u2, u1} α X _inst_1 f)) (DiscreteQuotient.proj.{u1} X _inst_1 (LocallyConstant.discreteQuotient.{u2, u1} α X _inst_1 f))) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (LocallyConstant.{u1, u2} X α _inst_1) X (fun (_x : X) => (fun (x._@.Mathlib.Topology.LocallyConstant.Basic._hyg.2185 : X) => α) _x) (LocallyConstant.instFunLikeLocallyConstant.{u1, u2} X α _inst_1) f)
+  forall {α : Type.{u2}} {X : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} X] (f : LocallyConstant.{u1, u2} X α _inst_1), Eq.{max (succ u2) (succ u1)} (X -> α) (Function.comp.{succ u1, succ u1, succ u2} X (Quotient.{succ u1} X (DiscreteQuotient.toSetoid.{u1} X _inst_1 (LocallyConstant.discreteQuotient.{u2, u1} α X _inst_1 f))) α (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (LocallyConstant.{u1, u2} (Quotient.{succ u1} X (DiscreteQuotient.toSetoid.{u1} X _inst_1 (LocallyConstant.discreteQuotient.{u2, u1} α X _inst_1 f))) α (DiscreteQuotient.instTopologicalSpaceQuotientToSetoid.{u1} X _inst_1 (LocallyConstant.discreteQuotient.{u2, u1} α X _inst_1 f))) (Quotient.{succ u1} X (DiscreteQuotient.toSetoid.{u1} X _inst_1 (LocallyConstant.discreteQuotient.{u2, u1} α X _inst_1 f))) (fun (_x : Quotient.{succ u1} X (DiscreteQuotient.toSetoid.{u1} X _inst_1 (LocallyConstant.discreteQuotient.{u2, u1} α X _inst_1 f))) => (fun (x._@.Mathlib.Topology.LocallyConstant.Basic._hyg.5691 : Quotient.{succ u1} X (DiscreteQuotient.toSetoid.{u1} X _inst_1 (LocallyConstant.discreteQuotient.{u2, u1} α X _inst_1 f))) => α) _x) (LocallyConstant.instFunLikeLocallyConstant.{u1, u2} (Quotient.{succ u1} X (DiscreteQuotient.toSetoid.{u1} X _inst_1 (LocallyConstant.discreteQuotient.{u2, u1} α X _inst_1 f))) α (DiscreteQuotient.instTopologicalSpaceQuotientToSetoid.{u1} X _inst_1 (LocallyConstant.discreteQuotient.{u2, u1} α X _inst_1 f))) (LocallyConstant.lift.{u2, u1} α X _inst_1 f)) (DiscreteQuotient.proj.{u1} X _inst_1 (LocallyConstant.discreteQuotient.{u2, u1} α X _inst_1 f))) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (LocallyConstant.{u1, u2} X α _inst_1) X (fun (_x : X) => (fun (x._@.Mathlib.Topology.LocallyConstant.Basic._hyg.5691 : X) => α) _x) (LocallyConstant.instFunLikeLocallyConstant.{u1, u2} X α _inst_1) f)
 Case conversion may be inaccurate. Consider using '#align locally_constant.lift_comp_proj LocallyConstant.lift_comp_projₓ'. -/
 @[simp]
 theorem lift_comp_proj : f.lift ∘ f.DiscreteQuotient.proj = f :=
Diff
@@ -192,7 +192,7 @@ theorem isClopen_setOf_rel (x : X) : IsClopen (setOf (S.Rel x)) :=
 #align discrete_quotient.is_clopen_set_of_rel DiscreteQuotient.isClopen_setOf_rel
 -/
 
-instance : HasInf (DiscreteQuotient X) :=
+instance : Inf (DiscreteQuotient X) :=
   ⟨fun S₁ S₂ => ⟨S₁.1 ⊓ S₂.1, fun x => (S₁.2 x).inter (S₂.2 x)⟩⟩
 
 instance : SemilatticeInf (DiscreteQuotient X) :=

Changes in mathlib4

mathlib3
mathlib4
feat(LightProfinite): being light is a property of a profinite space (#10391)

This PR defines the class Profinite.IsLight which is the property of a profinite space to have countably many clopens. We prove that such a profinite space gives rise to a LightProfinite, and the underlying profinite space of a LightProfinite is light.

Diff
@@ -3,6 +3,7 @@ Copyright (c) 2021 Adam Topaz. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Calle Sönne, Adam Topaz
 -/
+import Mathlib.Data.Setoid.Partition
 import Mathlib.Topology.Separation
 import Mathlib.Topology.LocallyConstant.Basic
 
@@ -62,7 +63,7 @@ of finite discrete spaces.
 -/
 
 
-open Set Function
+open Set Function TopologicalSpace
 
 variable {α X Y Z : Type*} [TopologicalSpace X] [TopologicalSpace Y] [TopologicalSpace Z]
 
@@ -394,6 +395,54 @@ instance [CompactSpace X] : Finite S := by
   have : CompactSpace S := Quotient.compactSpace
   rwa [← isCompact_univ_iff, isCompact_iff_finite, finite_univ_iff] at this
 
+variable (X)
+
+open Classical in
+/--
+If `X` is a compact space, then we associate to any discrete quotient on `X` a finite set of
+clopen subsets of `X`, given by the fibers of `proj`.
+
+TODO: prove that these form a partition of `X` 
+-/
+noncomputable def finsetClopens [CompactSpace X]
+    (d : DiscreteQuotient X) : Finset (Clopens X) := have : Fintype d := Fintype.ofFinite _
+  (Set.range (fun (x : d) ↦ ⟨_, d.isClopen_preimage {x}⟩) : Set (Clopens X)).toFinset
+
+/-- A helper lemma to prove that `finsetClopens X` is injective, see `finsetClopens_inj`. -/
+lemma comp_finsetClopens [CompactSpace X] :
+    (Set.image (fun (t : Clopens X) ↦ t.carrier) ∘ Finset.toSet) ∘
+      finsetClopens X = fun ⟨f, _⟩ ↦ f.classes := by
+  ext d
+  simp only [Setoid.classes, Setoid.Rel, Set.mem_setOf_eq, Function.comp_apply,
+    finsetClopens, Set.coe_toFinset, Set.mem_image, Set.mem_range,
+    exists_exists_eq_and]
+  constructor
+  · refine fun ⟨y, h⟩ ↦ ⟨Quotient.out (s := d.toSetoid) y, ?_⟩
+    ext
+    simpa [← h] using Quotient.mk_eq_iff_out (s := d.toSetoid)
+  · exact fun ⟨y, h⟩ ↦ ⟨d.proj y, by ext; simp [h, proj]⟩
+
+/-- `finsetClopens X` is injective. -/
+theorem finsetClopens_inj [CompactSpace X] :
+    (finsetClopens X).Injective := by
+  apply Function.Injective.of_comp (f := Set.image (fun (t : Clopens X) ↦ t.carrier) ∘ Finset.toSet)
+  rw [comp_finsetClopens]
+  intro ⟨_, _⟩ ⟨_, _⟩ h
+  congr
+  rw [Setoid.classes_inj]
+  exact h
+
+/--
+The discrete quotients of a compact space are in bijection with a subtype of the type of
+`Finset (Clopens X)`.
+
+TODO: show that this is precisely those finsets of clopens which form a partition of `X`.
+-/
+noncomputable
+def equivFinsetClopens [CompactSpace X] := Equiv.ofInjective _ (finsetClopens_inj X)
+
+variable {X}
+
 end DiscreteQuotient
 
 namespace LocallyConstant
fix(Topology): typo in a docstring in DiscreteQuotient/Basic (#11269)
Diff
@@ -69,7 +69,7 @@ variable {α X Y Z : Type*} [TopologicalSpace X] [TopologicalSpace Y] [Topologic
 /-- The type of discrete quotients of a topological space. -/
 @[ext] -- Porting note: in Lean 4, uses projection to `r` instead of `Setoid`.
 structure DiscreteQuotient (X : Type*) [TopologicalSpace X] extends Setoid X where
-  /-- For every point `x`, the set `{ y | Rel x y }` is a clopen set. -/
+  /-- For every point `x`, the set `{ y | Rel x y }` is an open set. -/
   protected isOpen_setOf_rel : ∀ x, IsOpen (setOf (toSetoid.Rel x))
 #align discrete_quotient DiscreteQuotient
 
chore: classify new lemma porting notes (#11217)

Classifies by adding issue number #10756 to porting notes claiming anything semantically equivalent to:

  • "new lemma"
  • "added lemma"
Diff
@@ -77,7 +77,7 @@ namespace DiscreteQuotient
 
 variable (S : DiscreteQuotient X)
 
--- Porting note: new lemma
+-- Porting note (#10756): new lemma
 lemma toSetoid_injective : Function.Injective (@toSetoid X _)
   | ⟨_, _⟩, ⟨_, _⟩, _ => by congr
 
@@ -169,7 +169,7 @@ instance inhabitedQuotient [Inhabited X] : Inhabited S := ⟨S.proj default⟩
 -- Porting note (#11215): TODO: add instances about `Nonempty (Quot _)`/`Nonempty (Quotient _)`
 instance [Nonempty X] : Nonempty S := Nonempty.map S.proj ‹_›
 
--- Porting note: new lemma
+-- Porting note (#10756): new lemma
 /-- The quotient by `⊤ : DiscreteQuotient X` is a `Subsingleton`. -/
 instance : Subsingleton (⊤ : DiscreteQuotient X) where
   allEq := by rintro ⟨_⟩ ⟨_⟩; exact Quotient.sound trivial
chore: classify todo porting notes (#11216)

Classifies by adding issue number #11215 to porting notes claiming "TODO".

Diff
@@ -166,7 +166,7 @@ instance : Inhabited (DiscreteQuotient X) := ⟨⊤⟩
 instance inhabitedQuotient [Inhabited X] : Inhabited S := ⟨S.proj default⟩
 #align discrete_quotient.inhabited_quotient DiscreteQuotient.inhabitedQuotient
 
--- Porting note: TODO: add instances about `Nonempty (Quot _)`/`Nonempty (Quotient _)`
+-- Porting note (#11215): TODO: add instances about `Nonempty (Quot _)`/`Nonempty (Quotient _)`
 instance [Nonempty X] : Nonempty S := Nonempty.map S.proj ‹_›
 
 -- Porting note: new lemma
@@ -325,7 +325,7 @@ theorem map_proj (cond : LEComap f A B) (x : X) : map f cond (A.proj x) = B.proj
 theorem map_id : map _ (leComap_id A) = id := by ext ⟨⟩; rfl
 #align discrete_quotient.map_id DiscreteQuotient.map_id
 
--- Porting note: todo: figure out why `simpNF` says this is a bad `@[simp]` lemma
+-- Porting note (#11215): TODO: figure out why `simpNF` says this is a bad `@[simp]` lemma
 theorem map_comp (h1 : LEComap g B C) (h2 : LEComap f A B) :
     map (g.comp f) (h1.comp h2) = map g h1 ∘ map f h2 := by
   ext ⟨⟩
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
@@ -67,7 +67,7 @@ open Set Function
 variable {α X Y Z : Type*} [TopologicalSpace X] [TopologicalSpace Y] [TopologicalSpace Z]
 
 /-- The type of discrete quotients of a topological space. -/
-@[ext] -- porting note: in Lean 4, uses projection to `r` instead of `Setoid`.
+@[ext] -- Porting note: in Lean 4, uses projection to `r` instead of `Setoid`.
 structure DiscreteQuotient (X : Type*) [TopologicalSpace X] extends Setoid X where
   /-- For every point `x`, the set `{ y | Rel x y }` is a clopen set. -/
   protected isOpen_setOf_rel : ∀ x, IsOpen (setOf (toSetoid.Rel x))
@@ -77,7 +77,7 @@ namespace DiscreteQuotient
 
 variable (S : DiscreteQuotient X)
 
--- porting note: new lemma
+-- Porting note: new lemma
 lemma toSetoid_injective : Function.Injective (@toSetoid X _)
   | ⟨_, _⟩, ⟨_, _⟩, _ => by congr
 
@@ -166,10 +166,10 @@ instance : Inhabited (DiscreteQuotient X) := ⟨⊤⟩
 instance inhabitedQuotient [Inhabited X] : Inhabited S := ⟨S.proj default⟩
 #align discrete_quotient.inhabited_quotient DiscreteQuotient.inhabitedQuotient
 
--- porting note: TODO: add instances about `Nonempty (Quot _)`/`Nonempty (Quotient _)`
+-- Porting note: TODO: add instances about `Nonempty (Quot _)`/`Nonempty (Quotient _)`
 instance [Nonempty X] : Nonempty S := Nonempty.map S.proj ‹_›
 
--- porting note: new lemma
+-- Porting note: new lemma
 /-- The quotient by `⊤ : DiscreteQuotient X` is a `Subsingleton`. -/
 instance : Subsingleton (⊤ : DiscreteQuotient X) where
   allEq := by rintro ⟨_⟩ ⟨_⟩; exact Quotient.sound trivial
@@ -325,7 +325,7 @@ theorem map_proj (cond : LEComap f A B) (x : X) : map f cond (A.proj x) = B.proj
 theorem map_id : map _ (leComap_id A) = id := by ext ⟨⟩; rfl
 #align discrete_quotient.map_id DiscreteQuotient.map_id
 
--- porting note: todo: figure out why `simpNF` says this is a bad `@[simp]` lemma
+-- Porting note: todo: figure out why `simpNF` says this is a bad `@[simp]` lemma
 theorem map_comp (h1 : LEComap g B C) (h2 : LEComap f A B) :
     map (g.comp f) (h1.comp h2) = map g h1 ∘ map f h2 := by
   ext ⟨⟩
feat(Mathlib.Topology.Compactness.Compact): add sInter version of Cantor's intersection theorem (#10956)

The iInter version of Cantor's intersection theorem is already present: IsCompact.nonempty_iInter_of_directed_nonempty_compact_closed. The proof of the added sInter version takes advantage of the iInter version.

Much of the addition due to conversation with Sebastien Gouezel on Zulip.

Open in Gitpod

Diff
@@ -382,7 +382,7 @@ theorem exists_of_compat [CompactSpace X] (Qs : (Q : DiscreteQuotient X) → Q)
     rw [← compat _ _ h]
     exact fiber_subset_ofLE _ _
   obtain ⟨x, hx⟩ : Set.Nonempty (⋂ Q, proj Q ⁻¹' {Qs Q}) :=
-    IsCompact.nonempty_iInter_of_directed_nonempty_compact_closed
+    IsCompact.nonempty_iInter_of_directed_nonempty_isCompact_isClosed
       (fun Q : DiscreteQuotient X => Q.proj ⁻¹' {Qs _}) (directed_of_isDirected_ge H₁)
       (fun Q => (singleton_nonempty _).preimage Q.proj_surjective)
       (fun Q => (Q.isClosed_preimage {Qs _}).isCompact) fun Q => Q.isClosed_preimage _
refactor(Topology/Clopen): order of open and closed (#9957)

Co-authored-by: Moritz Firsching <firsching@google.com>

Diff
@@ -139,11 +139,11 @@ theorem isClopen_preimage (A : Set S) : IsClopen (S.proj ⁻¹' A) :=
 #align discrete_quotient.is_clopen_preimage DiscreteQuotient.isClopen_preimage
 
 theorem isOpen_preimage (A : Set S) : IsOpen (S.proj ⁻¹' A) :=
-  (S.isClopen_preimage A).1
+  (S.isClopen_preimage A).2
 #align discrete_quotient.is_open_preimage DiscreteQuotient.isOpen_preimage
 
 theorem isClosed_preimage (A : Set S) : IsClosed (S.proj ⁻¹' A) :=
-  (S.isClopen_preimage A).2
+  (S.isClopen_preimage A).1
 #align discrete_quotient.is_closed_preimage DiscreteQuotient.isClosed_preimage
 
 theorem isClopen_setOf_rel (x : X) : IsClopen (setOf (S.Rel x)) := by
chore: rename most lemmas involving clopen to isClopen (#8720)

This PR renames the field Clopens.clopen' -> Clopens.isClopen', and the lemmas

  • preimage_closed_of_closed -> ContinuousOn.preimage_isClosed_of_isClosed

as well as: ClopenUpperSet.clopen -> ClopenUpperSet.isClopen connectedComponent_eq_iInter_clopen -> connectedComponent_eq_iInter_isClopen connectedComponent_subset_iInter_clopen -> connectedComponent_subset_iInter_isClopen continuous_boolIndicator_iff_clopen -> continuous_boolIndicator_iff_isClopen continuousOn_boolIndicator_iff_clopen -> continuousOn_boolIndicator_iff_isClopen DiscreteQuotient.ofClopen -> DiscreteQuotient.ofIsClopen disjoint_or_subset_of_clopen -> disjoint_or_subset_of_isClopen exists_clopen_{lower,upper}of_not_le -> exists_isClopen{lower,upper}_of_not_le exists_clopen_of_cofiltered -> exists_isClopen_of_cofiltered exists_clopen_of_totally_separated -> exists_isClopen_of_totally_separated exists_clopen_upper_or_lower_of_ne -> exists_isClopen_upper_or_lower_of_ne IsPreconnected.subset_clopen -> IsPreconnected.subset_isClopen isTotallyDisconnected_of_clopen_set -> isTotallyDisconnected_of_isClopen_set LocallyConstant.ofClopen_fiber_one -> LocallyConstant.ofIsClopen_fiber_one LocallyConstant.ofClopen_fiber_zero -> LocallyConstant.ofIsClopen_fiber_zero LocallyConstant.ofClopen -> LocallyConstant.ofIsClopen preimage_clopen_of_clopen -> preimage_isClopen_of_isClopen TopologicalSpace.Clopens.clopen -> TopologicalSpace.Clopens.isClopen

Diff
@@ -82,10 +82,10 @@ lemma toSetoid_injective : Function.Injective (@toSetoid X _)
   | ⟨_, _⟩, ⟨_, _⟩, _ => by congr
 
 /-- Construct a discrete quotient from a clopen set. -/
-def ofClopen {A : Set X} (h : IsClopen A) : DiscreteQuotient X where
+def ofIsClopen {A : Set X} (h : IsClopen A) : DiscreteQuotient X where
   toSetoid := ⟨fun x y => x ∈ A ↔ y ∈ A, fun _ => Iff.rfl, Iff.symm, Iff.trans⟩
   isOpen_setOf_rel x := by by_cases hx : x ∈ A <;> simp [Setoid.Rel, hx, h.1, h.2, ← compl_setOf]
-#align discrete_quotient.of_clopen DiscreteQuotient.ofClopen
+#align discrete_quotient.of_clopen DiscreteQuotient.ofIsClopen
 
 theorem refl : ∀ x, S.Rel x x := S.refl'
 #align discrete_quotient.refl DiscreteQuotient.refl
@@ -362,10 +362,10 @@ end Map
 
 theorem eq_of_forall_proj_eq [T2Space X] [CompactSpace X] [disc : TotallyDisconnectedSpace X]
     {x y : X} (h : ∀ Q : DiscreteQuotient X, Q.proj x = Q.proj y) : x = y := by
-  rw [← mem_singleton_iff, ← connectedComponent_eq_singleton, connectedComponent_eq_iInter_clopen,
+  rw [← mem_singleton_iff, ← connectedComponent_eq_singleton, connectedComponent_eq_iInter_isClopen,
     mem_iInter]
   rintro ⟨U, hU1, hU2⟩
-  exact (Quotient.exact' (h (ofClopen hU1))).mpr hU2
+  exact (Quotient.exact' (h (ofIsClopen hU1))).mpr hU2
 #align discrete_quotient.eq_of_forall_proj_eq DiscreteQuotient.eq_of_forall_proj_eq
 
 theorem fiber_subset_ofLE {A B : DiscreteQuotient X} (h : A ≤ B) (a : A) :
feat: generalize some lemmas to directed types (#7852)

New lemmas / instances

  • An archimedean ordered semiring is directed upwards.
  • Filter.hasAntitoneBasis_atTop;
  • Filter.HasAntitoneBasis.iInf_principal;

Fix typos

  • Docstrings: "if the agree" -> "if they agree".
  • ProbabilityTheory.measure_eq_zero_or_one_of_indepSetCat_self -> ProbabilityTheory.measure_eq_zero_or_one_of_indepSet_self.

Weaken typeclass assumptions

From a semilattice to a directed type

  • MeasureTheory.tendsto_measure_iUnion;
  • MeasureTheory.tendsto_measure_iInter;
  • Monotone.directed_le, Monotone.directed_ge;
  • Antitone.directed_le, Antitone.directed_ge;
  • directed_of_sup, renamed to directed_of_isDirected_le;
  • directed_of_inf, renamed to directed_of_isDirected_ge;

From a strict ordered semiring to an ordered semiring

  • tendsto_nat_cast_atTop_atTop;
  • Filter.Eventually.nat_cast_atTop;
  • atTop_hasAntitoneBasis_of_archimedean;
Diff
@@ -383,7 +383,7 @@ theorem exists_of_compat [CompactSpace X] (Qs : (Q : DiscreteQuotient X) → Q)
     exact fiber_subset_ofLE _ _
   obtain ⟨x, hx⟩ : Set.Nonempty (⋂ Q, proj Q ⁻¹' {Qs Q}) :=
     IsCompact.nonempty_iInter_of_directed_nonempty_compact_closed
-      (fun Q : DiscreteQuotient X => Q.proj ⁻¹' {Qs _}) (directed_of_inf H₁)
+      (fun Q : DiscreteQuotient X => Q.proj ⁻¹' {Qs _}) (directed_of_isDirected_ge H₁)
       (fun Q => (singleton_nonempty _).preimage Q.proj_surjective)
       (fun Q => (Q.isClosed_preimage {Qs _}).isCompact) fun Q => Q.isClosed_preimage _
   exact ⟨x, mem_iInter.1 hx⟩
chore(Topology/SubsetProperties): Refactor SubsetProperties.lean (#7628)

Split up the 2000-line Topology/SubsetProperties.lean into several smaller files. Not only is it too huge, but the name is very unhelpful, since actually about 90% of the file is about compactness; I've moved this material into various files inside a new subdirectory Topology/Compactness/.

Diff
@@ -4,7 +4,6 @@ Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Calle Sönne, Adam Topaz
 -/
 import Mathlib.Topology.Separation
-import Mathlib.Topology.SubsetProperties
 import Mathlib.Topology.LocallyConstant.Basic
 
 #align_import topology.discrete_quotient from "leanprover-community/mathlib"@"d101e93197bb5f6ea89bd7ba386b7f7dff1f3903"
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
@@ -65,11 +65,11 @@ of finite discrete spaces.
 
 open Set Function
 
-variable {α X Y Z : Type _} [TopologicalSpace X] [TopologicalSpace Y] [TopologicalSpace Z]
+variable {α X Y Z : Type*} [TopologicalSpace X] [TopologicalSpace Y] [TopologicalSpace Z]
 
 /-- The type of discrete quotients of a topological space. -/
 @[ext] -- porting note: in Lean 4, uses projection to `r` instead of `Setoid`.
-structure DiscreteQuotient (X : Type _) [TopologicalSpace X] extends Setoid X where
+structure DiscreteQuotient (X : Type*) [TopologicalSpace X] extends Setoid X where
   /-- For every point `x`, the set `{ y | Rel x y }` is a clopen set. -/
   protected isOpen_setOf_rel : ∀ x, IsOpen (setOf (toSetoid.Rel x))
 #align discrete_quotient DiscreteQuotient
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) 2021 Adam Topaz. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Calle Sönne, Adam Topaz
-
-! This file was ported from Lean 3 source module topology.discrete_quotient
-! leanprover-community/mathlib commit d101e93197bb5f6ea89bd7ba386b7f7dff1f3903
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
 -/
 import Mathlib.Topology.Separation
 import Mathlib.Topology.SubsetProperties
 import Mathlib.Topology.LocallyConstant.Basic
 
+#align_import topology.discrete_quotient from "leanprover-community/mathlib"@"d101e93197bb5f6ea89bd7ba386b7f7dff1f3903"
+
 /-!
 
 # Discrete quotients of a topological space.
chore: cleanup whitespace (#5988)

Grepping for [^ .:{-] [^ :] and reviewing the results. Once I started I couldn't stop. :-)

Co-authored-by: Scott Morrison <scott.morrison@gmail.com>

Diff
@@ -87,7 +87,7 @@ lemma toSetoid_injective : Function.Injective (@toSetoid X _)
 
 /-- Construct a discrete quotient from a clopen set. -/
 def ofClopen {A : Set X} (h : IsClopen A) : DiscreteQuotient X where
-  toSetoid := ⟨fun x y => x ∈ A ↔ y ∈ A, fun _ => Iff.rfl,  Iff.symm,  Iff.trans⟩
+  toSetoid := ⟨fun x y => x ∈ A ↔ y ∈ A, fun _ => Iff.rfl, Iff.symm, Iff.trans⟩
   isOpen_setOf_rel x := by by_cases hx : x ∈ A <;> simp [Setoid.Rel, hx, h.1, h.2, ← compl_setOf]
 #align discrete_quotient.of_clopen DiscreteQuotient.ofClopen
 
chore: fix backtick in docs (#5077)

I wrote a script to find lines that contain an odd number of backticks

Diff
@@ -43,8 +43,8 @@ i.e., `x ~ y` means that `x` and `y` belong to the same connected component. In
 is a discrete topological space, then `x ~ y` is equivalent (propositionally, not definitionally) to
 `x = y`.
 
-Given `f : C(X, Y)`, we define a predicate `DiscreteQuotient.LEComap f A B` for `A :
-DiscreteQuotient X` and `B : DiscreteQuotient Y`, asserting that `f` descends to `A → B`.  If
+Given `f : C(X, Y)`, we define a predicate `DiscreteQuotient.LEComap f A B` for
+`A : DiscreteQuotient X` and `B : DiscreteQuotient Y`, asserting that `f` descends to `A → B`. If
 `cond : DiscreteQuotient.LEComap h A B`, the function `A → B` is obtained by
 `DiscreteQuotient.map f cond`.
 
chore: fix grammar 3/3 (#5003)

Part 3 of #5001

Diff
@@ -38,7 +38,7 @@ The top element `⊤` is the trivial quotient, meaning that every element of `X`
 to a point. Given `h : A ≤ B`, the map `A → B` is `DiscreteQuotient.ofLE h`.
 
 Whenever `X` is a locally connected space, the type `DiscreteQuotient X` is also endowed with an
-instance of a `OrderBot`, where the bot element `⊥` is given by the `connectedComponentSetoid`,
+instance of an `OrderBot`, where the bot element `⊥` is given by the `connectedComponentSetoid`,
 i.e., `x ~ y` means that `x` and `y` belong to the same connected component. In particular, if `X`
 is a discrete topological space, then `x ~ y` is equivalent (propositionally, not definitionally) to
 `x = y`.
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
@@ -366,8 +366,8 @@ end Map
 
 theorem eq_of_forall_proj_eq [T2Space X] [CompactSpace X] [disc : TotallyDisconnectedSpace X]
     {x y : X} (h : ∀ Q : DiscreteQuotient X, Q.proj x = Q.proj y) : x = y := by
-  rw [← mem_singleton_iff, ← connectedComponent_eq_singleton, connectedComponent_eq_interᵢ_clopen,
-    mem_interᵢ]
+  rw [← mem_singleton_iff, ← connectedComponent_eq_singleton, connectedComponent_eq_iInter_clopen,
+    mem_iInter]
   rintro ⟨U, hU1, hU2⟩
   exact (Quotient.exact' (h (ofClopen hU1))).mpr hU2
 #align discrete_quotient.eq_of_forall_proj_eq DiscreteQuotient.eq_of_forall_proj_eq
@@ -386,11 +386,11 @@ theorem exists_of_compat [CompactSpace X] (Qs : (Q : DiscreteQuotient X) → Q)
     rw [← compat _ _ h]
     exact fiber_subset_ofLE _ _
   obtain ⟨x, hx⟩ : Set.Nonempty (⋂ Q, proj Q ⁻¹' {Qs Q}) :=
-    IsCompact.nonempty_interᵢ_of_directed_nonempty_compact_closed
+    IsCompact.nonempty_iInter_of_directed_nonempty_compact_closed
       (fun Q : DiscreteQuotient X => Q.proj ⁻¹' {Qs _}) (directed_of_inf H₁)
       (fun Q => (singleton_nonempty _).preimage Q.proj_surjective)
       (fun Q => (Q.isClosed_preimage {Qs _}).isCompact) fun Q => Q.isClosed_preimage _
-  exact ⟨x, mem_interᵢ.1 hx⟩
+  exact ⟨x, mem_iInter.1 hx⟩
 #align discrete_quotient.exists_of_compat DiscreteQuotient.exists_of_compat
 
 /-- If `X` is a compact space, then any discrete quotient of `X` is finite. -/
chore: bye-bye, solo bys! (#3825)

This PR puts, with one exception, every single remaining by that lies all by itself on its own line to the previous line, thus matching the current behaviour of start-port.sh. The exception is when the by begins the second or later argument to a tuple or anonymous constructor; see https://github.com/leanprover-community/mathlib4/pull/3825#discussion_r1186702599.

Essentially this is s/\n *by$/ by/g, but with manual editing to satisfy the linter's max-100-char-line requirement. The Python style linter is also modified to catch these "isolated bys".

Diff
@@ -222,8 +222,8 @@ theorem ofLE_refl_apply (a : A) : ofLE (le_refl A) a = a := by simp
 #align discrete_quotient.of_le_refl_apply DiscreteQuotient.ofLE_refl_apply
 
 @[simp]
-theorem ofLE_ofLE (h₁ : A ≤ B) (h₂ : B ≤ C) (x : A) : ofLE h₂ (ofLE h₁ x) = ofLE (h₁.trans h₂) x :=
-  by
+theorem ofLE_ofLE (h₁ : A ≤ B) (h₂ : B ≤ C) (x : A) :
+    ofLE h₂ (ofLE h₁ x) = ofLE (h₁.trans h₂) x := by
   rcases x with ⟨⟩
   rfl
 #align discrete_quotient.of_le_of_le DiscreteQuotient.ofLE_ofLE
chore: tidy various files (#3718)
Diff
@@ -203,7 +203,7 @@ theorem comap_mono {A B : DiscreteQuotient Y} (h : A ≤ B) : A.comap f ≤ B.co
 
 end Comap
 
-section OfLe
+section OfLE
 
 variable {A B C : DiscreteQuotient X}
 
@@ -247,7 +247,7 @@ theorem ofLE_comp_proj (h : A ≤ B) : ofLE h ∘ A.proj = B.proj :=
   funext <| ofLE_proj _
 #align discrete_quotient.of_le_comp_proj DiscreteQuotient.ofLE_comp_proj
 
-end OfLe
+end OfLE
 
 /-- When `X` is a locally connected space, there is an `OrderBot` instance on
 `DiscreteQuotient X`. The bottom element is given by `connectedComponentSetoid X`
chore: fix names in DiscreteQuotient (#3481)
Diff
@@ -35,7 +35,7 @@ quotients as setoids whose equivalence classes are clopen.
 The type `DiscreteQuotient X` is endowed with an instance of a `SemilatticeInf` with `OrderTop`.
 The partial ordering `A ≤ B` mathematically means that `B.proj` factors through `A.proj`.
 The top element `⊤` is the trivial quotient, meaning that every element of `X` is collapsed
-to a point. Given `h : A ≤ B`, the map `A → B` is `DiscreteQuotient.ofLe h`.
+to a point. Given `h : A ≤ B`, the map `A → B` is `DiscreteQuotient.ofLE h`.
 
 Whenever `X` is a locally connected space, the type `DiscreteQuotient X` is also endowed with an
 instance of a `OrderBot`, where the bot element `⊥` is given by the `connectedComponentSetoid`,
@@ -43,9 +43,9 @@ i.e., `x ~ y` means that `x` and `y` belong to the same connected component. In
 is a discrete topological space, then `x ~ y` is equivalent (propositionally, not definitionally) to
 `x = y`.
 
-Given `f : C(X, Y)`, we define a predicate `DiscreteQuotient.LeComap f A B` for `A :
+Given `f : C(X, Y)`, we define a predicate `DiscreteQuotient.LEComap f A B` for `A :
 DiscreteQuotient X` and `B : DiscreteQuotient Y`, asserting that `f` descends to `A → B`.  If
-`cond : DiscreteQuotient.LeComap h A B`, the function `A → B` is obtained by
+`cond : DiscreteQuotient.LEComap h A B`, the function `A → B` is obtained by
 `DiscreteQuotient.map f cond`.
 
 ## Theorems
@@ -58,7 +58,7 @@ The two main results proved in this file are:
 
 2. `DiscreteQuotient.exists_of_compat` which states that when `X` is compact, then any
   system of elements of `Q` as `Q : DiscreteQuotient X` varies, which is compatible with
-  respect to `DiscreteQuotient.ofLe`, must arise from some element of `X`.
+  respect to `DiscreteQuotient.ofLE`, must arise from some element of `X`.
 
 ## Remarks
 The constructions in this file will be used to show that any profinite space is a limit
@@ -208,44 +208,44 @@ section OfLe
 variable {A B C : DiscreteQuotient X}
 
 /-- The map induced by a refinement of a discrete quotient. -/
-def ofLe (h : A ≤ B) : A → B :=
+def ofLE (h : A ≤ B) : A → B :=
   Quotient.map' (fun x => x) h
-#align discrete_quotient.of_le DiscreteQuotient.ofLe
+#align discrete_quotient.of_le DiscreteQuotient.ofLE
 
 @[simp]
-theorem ofLe_refl : ofLe (le_refl A) = id := by
+theorem ofLE_refl : ofLE (le_refl A) = id := by
   ext ⟨⟩
   rfl
-#align discrete_quotient.of_le_refl DiscreteQuotient.ofLe_refl
+#align discrete_quotient.of_le_refl DiscreteQuotient.ofLE_refl
 
-theorem ofLe_refl_apply (a : A) : ofLe (le_refl A) a = a := by simp
-#align discrete_quotient.of_le_refl_apply DiscreteQuotient.ofLe_refl_apply
+theorem ofLE_refl_apply (a : A) : ofLE (le_refl A) a = a := by simp
+#align discrete_quotient.of_le_refl_apply DiscreteQuotient.ofLE_refl_apply
 
 @[simp]
-theorem ofLe_ofLe (h₁ : A ≤ B) (h₂ : B ≤ C) (x : A) : ofLe h₂ (ofLe h₁ x) = ofLe (h₁.trans h₂) x :=
+theorem ofLE_ofLE (h₁ : A ≤ B) (h₂ : B ≤ C) (x : A) : ofLE h₂ (ofLE h₁ x) = ofLE (h₁.trans h₂) x :=
   by
   rcases x with ⟨⟩
   rfl
-#align discrete_quotient.of_le_of_le DiscreteQuotient.ofLe_ofLe
+#align discrete_quotient.of_le_of_le DiscreteQuotient.ofLE_ofLE
 
 @[simp]
-theorem ofLe_comp_ofLe (h₁ : A ≤ B) (h₂ : B ≤ C) : ofLe h₂ ∘ ofLe h₁ = ofLe (le_trans h₁ h₂) :=
-  funext <| ofLe_ofLe _ _
-#align discrete_quotient.of_le_comp_of_le DiscreteQuotient.ofLe_comp_ofLe
+theorem ofLE_comp_ofLE (h₁ : A ≤ B) (h₂ : B ≤ C) : ofLE h₂ ∘ ofLE h₁ = ofLE (le_trans h₁ h₂) :=
+  funext <| ofLE_ofLE _ _
+#align discrete_quotient.of_le_comp_of_le DiscreteQuotient.ofLE_comp_ofLE
 
-theorem ofLe_continuous (h : A ≤ B) : Continuous (ofLe h) :=
+theorem ofLE_continuous (h : A ≤ B) : Continuous (ofLE h) :=
   continuous_of_discreteTopology
-#align discrete_quotient.of_le_continuous DiscreteQuotient.ofLe_continuous
+#align discrete_quotient.of_le_continuous DiscreteQuotient.ofLE_continuous
 
 @[simp]
-theorem ofLe_proj (h : A ≤ B) (x : X) : ofLe h (A.proj x) = B.proj x :=
+theorem ofLE_proj (h : A ≤ B) (x : X) : ofLE h (A.proj x) = B.proj x :=
   Quotient.sound' (B.refl _)
-#align discrete_quotient.of_le_proj DiscreteQuotient.ofLe_proj
+#align discrete_quotient.of_le_proj DiscreteQuotient.ofLE_proj
 
 @[simp]
-theorem ofLe_comp_proj (h : A ≤ B) : ofLe h ∘ A.proj = B.proj :=
-  funext <| ofLe_proj _
-#align discrete_quotient.of_le_comp_proj DiscreteQuotient.ofLe_comp_proj
+theorem ofLE_comp_proj (h : A ≤ B) : ofLE h ∘ A.proj = B.proj :=
+  funext <| ofLE_proj _
+#align discrete_quotient.of_le_comp_proj DiscreteQuotient.ofLE_comp_proj
 
 end OfLe
 
@@ -283,45 +283,45 @@ section Map
 
 variable (f : C(X, Y)) (A A' : DiscreteQuotient X) (B B' : DiscreteQuotient Y)
 
-/-- Given `f : C(X, Y)`, `DiscreteQuotient.LeComap f A B` is defined as
+/-- Given `f : C(X, Y)`, `DiscreteQuotient.LEComap f A B` is defined as
 `A ≤ B.comap f`. Mathematically this means that `f` descends to a morphism `A → B`. -/
-def LeComap : Prop :=
+def LEComap : Prop :=
   A ≤ B.comap f
-#align discrete_quotient.le_comap DiscreteQuotient.LeComap
+#align discrete_quotient.le_comap DiscreteQuotient.LEComap
 
-theorem leComap_id : LeComap (.id X) A A := le_rfl
+theorem leComap_id : LEComap (.id X) A A := le_rfl
 #align discrete_quotient.le_comap_id DiscreteQuotient.leComap_id
 
 variable {A A' B B'} {f} {g : C(Y, Z)} {C : DiscreteQuotient Z}
 
 @[simp]
-theorem leComap_id_iff : LeComap (ContinuousMap.id X) A A' ↔ A ≤ A' :=
+theorem leComap_id_iff : LEComap (ContinuousMap.id X) A A' ↔ A ≤ A' :=
   Iff.rfl
 #align discrete_quotient.le_comap_id_iff DiscreteQuotient.leComap_id_iff
 
-theorem LeComap.comp : LeComap g B C → LeComap f A B → LeComap (g.comp f) A C := by tauto
-#align discrete_quotient.le_comap.comp DiscreteQuotient.LeComap.comp
+theorem LEComap.comp : LEComap g B C → LEComap f A B → LEComap (g.comp f) A C := by tauto
+#align discrete_quotient.le_comap.comp DiscreteQuotient.LEComap.comp
 
 @[mono]
-theorem LeComap.mono (h : LeComap f A B) (hA : A' ≤ A) (hB : B ≤ B') : LeComap f A' B' :=
+theorem LEComap.mono (h : LEComap f A B) (hA : A' ≤ A) (hB : B ≤ B') : LEComap f A' B' :=
   hA.trans <| h.trans <| comap_mono _ hB
-#align discrete_quotient.le_comap.mono DiscreteQuotient.LeComap.mono
+#align discrete_quotient.le_comap.mono DiscreteQuotient.LEComap.mono
 
 /-- Map a discrete quotient along a continuous map. -/
-def map (f : C(X, Y)) (cond : LeComap f A B) : A → B := Quotient.map' f cond
+def map (f : C(X, Y)) (cond : LEComap f A B) : A → B := Quotient.map' f cond
 #align discrete_quotient.map DiscreteQuotient.map
 
-theorem map_continuous (cond : LeComap f A B) : Continuous (map f cond) :=
+theorem map_continuous (cond : LEComap f A B) : Continuous (map f cond) :=
   continuous_of_discreteTopology
 #align discrete_quotient.map_continuous DiscreteQuotient.map_continuous
 
 @[simp]
-theorem map_comp_proj (cond : LeComap f A B) : map f cond ∘ A.proj = B.proj ∘ f :=
+theorem map_comp_proj (cond : LEComap f A B) : map f cond ∘ A.proj = B.proj ∘ f :=
   rfl
 #align discrete_quotient.map_comp_proj DiscreteQuotient.map_comp_proj
 
 @[simp]
-theorem map_proj (cond : LeComap f A B) (x : X) : map f cond (A.proj x) = B.proj (f x) :=
+theorem map_proj (cond : LEComap f A B) (x : X) : map f cond (A.proj x) = B.proj (f x) :=
   rfl
 #align discrete_quotient.map_proj DiscreteQuotient.map_proj
 
@@ -330,37 +330,37 @@ theorem map_id : map _ (leComap_id A) = id := by ext ⟨⟩; rfl
 #align discrete_quotient.map_id DiscreteQuotient.map_id
 
 -- porting note: todo: figure out why `simpNF` says this is a bad `@[simp]` lemma
-theorem map_comp (h1 : LeComap g B C) (h2 : LeComap f A B) :
+theorem map_comp (h1 : LEComap g B C) (h2 : LEComap f A B) :
     map (g.comp f) (h1.comp h2) = map g h1 ∘ map f h2 := by
   ext ⟨⟩
   rfl
 #align discrete_quotient.map_comp DiscreteQuotient.map_comp
 
 @[simp]
-theorem ofLe_map (cond : LeComap f A B) (h : B ≤ B') (a : A) :
-    ofLe h (map f cond a) = map f (cond.mono le_rfl h) a := by
+theorem ofLE_map (cond : LEComap f A B) (h : B ≤ B') (a : A) :
+    ofLE h (map f cond a) = map f (cond.mono le_rfl h) a := by
   rcases a with ⟨⟩
   rfl
-#align discrete_quotient.of_le_map DiscreteQuotient.ofLe_map
+#align discrete_quotient.of_le_map DiscreteQuotient.ofLE_map
 
 @[simp]
-theorem ofLe_comp_map (cond : LeComap f A B) (h : B ≤ B') :
-    ofLe h ∘ map f cond = map f (cond.mono le_rfl h) :=
-  funext <| ofLe_map cond h
-#align discrete_quotient.of_le_comp_map DiscreteQuotient.ofLe_comp_map
+theorem ofLE_comp_map (cond : LEComap f A B) (h : B ≤ B') :
+    ofLE h ∘ map f cond = map f (cond.mono le_rfl h) :=
+  funext <| ofLE_map cond h
+#align discrete_quotient.of_le_comp_map DiscreteQuotient.ofLE_comp_map
 
 @[simp]
-theorem map_ofLe (cond : LeComap f A B) (h : A' ≤ A) (c : A') :
-    map f cond (ofLe h c) = map f (cond.mono h le_rfl) c := by
+theorem map_ofLE (cond : LEComap f A B) (h : A' ≤ A) (c : A') :
+    map f cond (ofLE h c) = map f (cond.mono h le_rfl) c := by
   rcases c with ⟨⟩
   rfl
-#align discrete_quotient.map_of_le DiscreteQuotient.map_ofLe
+#align discrete_quotient.map_of_le DiscreteQuotient.map_ofLE
 
 @[simp]
-theorem map_comp_ofLe (cond : LeComap f A B) (h : A' ≤ A) :
-    map f cond ∘ ofLe h = map f (cond.mono h le_rfl) :=
-  funext <| map_ofLe cond h
-#align discrete_quotient.map_comp_of_le DiscreteQuotient.map_comp_ofLe
+theorem map_comp_ofLE (cond : LEComap f A B) (h : A' ≤ A) :
+    map f cond ∘ ofLE h = map f (cond.mono h le_rfl) :=
+  funext <| map_ofLE cond h
+#align discrete_quotient.map_comp_of_le DiscreteQuotient.map_comp_ofLE
 
 end Map
 
@@ -372,19 +372,19 @@ theorem eq_of_forall_proj_eq [T2Space X] [CompactSpace X] [disc : TotallyDisconn
   exact (Quotient.exact' (h (ofClopen hU1))).mpr hU2
 #align discrete_quotient.eq_of_forall_proj_eq DiscreteQuotient.eq_of_forall_proj_eq
 
-theorem fiber_subset_ofLe {A B : DiscreteQuotient X} (h : A ≤ B) (a : A) :
-    A.proj ⁻¹' {a} ⊆ B.proj ⁻¹' {ofLe h a} := by
+theorem fiber_subset_ofLE {A B : DiscreteQuotient X} (h : A ≤ B) (a : A) :
+    A.proj ⁻¹' {a} ⊆ B.proj ⁻¹' {ofLE h a} := by
   rcases A.proj_surjective a with ⟨a, rfl⟩
-  rw [fiber_eq, ofLe_proj, fiber_eq]
+  rw [fiber_eq, ofLE_proj, fiber_eq]
   exact fun _ h' => h h'
-#align discrete_quotient.fiber_subset_of_le DiscreteQuotient.fiber_subset_ofLe
+#align discrete_quotient.fiber_subset_of_le DiscreteQuotient.fiber_subset_ofLE
 
 theorem exists_of_compat [CompactSpace X] (Qs : (Q : DiscreteQuotient X) → Q)
-    (compat : ∀ (A B : DiscreteQuotient X) (h : A ≤ B), ofLe h (Qs _) = Qs _) :
+    (compat : ∀ (A B : DiscreteQuotient X) (h : A ≤ B), ofLE h (Qs _) = Qs _) :
     ∃ x : X, ∀ Q : DiscreteQuotient X, Q.proj x = Qs _ := by
   have H₁ : ∀ Q₁ Q₂, Q₁ ≤ Q₂ → proj Q₁ ⁻¹' {Qs Q₁} ⊆ proj Q₂ ⁻¹' {Qs Q₂} := fun _ _ h => by
     rw [← compat _ _ h]
-    exact fiber_subset_ofLe _ _
+    exact fiber_subset_ofLE _ _
   obtain ⟨x, hx⟩ : Set.Nonempty (⋂ Q, proj Q ⁻¹' {Qs Q}) :=
     IsCompact.nonempty_interᵢ_of_directed_nonempty_compact_closed
       (fun Q : DiscreteQuotient X => Q.proj ⁻¹' {Qs _}) (directed_of_inf H₁)
chore: Restore most of the mono attribute (#2491)

Restore most of the mono attribute now that #1740 is merged.

I think I got all of the monos.

Diff
@@ -197,7 +197,7 @@ theorem comap_comp (S : DiscreteQuotient Z) : S.comap (g.comp f) = (S.comap g).c
   rfl
 #align discrete_quotient.comap_comp DiscreteQuotient.comap_comp
 
--- porting note: todo: add `@[mono]`
+@[mono]
 theorem comap_mono {A B : DiscreteQuotient Y} (h : A ≤ B) : A.comap f ≤ B.comap f := by tauto
 #align discrete_quotient.comap_mono DiscreteQuotient.comap_mono
 
@@ -302,7 +302,7 @@ theorem leComap_id_iff : LeComap (ContinuousMap.id X) A A' ↔ A ≤ A' :=
 theorem LeComap.comp : LeComap g B C → LeComap f A B → LeComap (g.comp f) A C := by tauto
 #align discrete_quotient.le_comap.comp DiscreteQuotient.LeComap.comp
 
--- porting note: todo: add `@[mono]`
+@[mono]
 theorem LeComap.mono (h : LeComap f A B) (hA : A' ≤ A) (hB : B ≤ B') : LeComap f A' B' :=
   hA.trans <| h.trans <| comap_mono _ hB
 #align discrete_quotient.le_comap.mono DiscreteQuotient.LeComap.mono
refactor: rename HasSup/HasInf to Sup/Inf (#2475)

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

Diff
@@ -155,7 +155,7 @@ theorem isClopen_setOf_rel (x : X) : IsClopen (setOf (S.Rel x)) := by
   apply isClopen_preimage
 #align discrete_quotient.is_clopen_set_of_rel DiscreteQuotient.isClopen_setOf_rel
 
-instance : HasInf (DiscreteQuotient X) :=
+instance : Inf (DiscreteQuotient X) :=
   ⟨fun S₁ S₂ => ⟨S₁.1 ⊓ S₂.1, fun x => (S₁.2 x).inter (S₂.2 x)⟩⟩
 
 instance : SemilatticeInf (DiscreteQuotient X) :=
feat: port Topology.DiscreteQuotient (#2157)

Also sync SHA in Topology.Connected. The changes in Mathlib 3 were backported from this branch, see

Dependencies 8 + 310

311 files ported (97.5%)
136268 lines ported (96.5%)
Show graph

The unported dependencies are