topology.bornology.homMathlib.Topology.Bornology.Hom

This file has been ported!

Changes since the initial port

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

Changes in mathlib3

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(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
@@ -47,7 +47,7 @@ section
 
 You should extend this class when you extend `locally_bounded_map`. -/
 class LocallyBoundedMapClass (F : Type _) (α β : outParam <| Type _) [Bornology α]
-    [Bornology β] extends FunLike F α fun _ => β where
+    [Bornology β] extends DFunLike F α fun _ => β where
   comap_cobounded_le (f : F) : (cobounded β).comap f ≤ cobounded α
 #align locally_bounded_map_class LocallyBoundedMapClass
 -/
@@ -80,7 +80,7 @@ instance : LocallyBoundedMapClass (LocallyBoundedMap α β) α β
 /-- Helper instance for when there's too many metavariables to apply `fun_like.has_coe_to_fun`
 directly. -/
 instance : CoeFun (LocallyBoundedMap α β) fun _ => α → β :=
-  FunLike.hasCoeToFun
+  DFunLike.hasCoeToFun
 
 @[simp]
 theorem toFun_eq_coe {f : LocallyBoundedMap α β} : f.toFun = (f : α → β) :=
@@ -90,7 +90,7 @@ theorem toFun_eq_coe {f : LocallyBoundedMap α β} : f.toFun = (f : α → β) :
 #print LocallyBoundedMap.ext /-
 @[ext]
 theorem ext {f g : LocallyBoundedMap α β} (h : ∀ a, f a = g a) : f = g :=
-  FunLike.ext f g h
+  DFunLike.ext f g h
 #align locally_bounded_map.ext LocallyBoundedMap.ext
 -/
 
@@ -111,7 +111,7 @@ theorem coe_copy (f : LocallyBoundedMap α β) (f' : α → β) (h : f' = f) : 
 
 #print LocallyBoundedMap.copy_eq /-
 theorem copy_eq (f : LocallyBoundedMap α β) (f' : α → β) (h : f' = f) : f.copy f' h = f :=
-  FunLike.ext' h
+  DFunLike.ext' h
 #align locally_bounded_map.copy_eq LocallyBoundedMap.copy_eq
 -/
 
@@ -215,7 +215,7 @@ theorem id_comp (f : LocallyBoundedMap α β) : (LocallyBoundedMap.id β).comp f
 #print LocallyBoundedMap.cancel_right /-
 theorem cancel_right {g₁ g₂ : LocallyBoundedMap β γ} {f : LocallyBoundedMap α β}
     (hf : Surjective f) : g₁.comp f = g₂.comp f ↔ g₁ = g₂ :=
-  ⟨fun h => ext <| hf.forall.2 <| FunLike.ext_iff.1 h, congr_arg _⟩
+  ⟨fun h => ext <| hf.forall.2 <| DFunLike.ext_iff.1 h, congr_arg _⟩
 #align locally_bounded_map.cancel_right LocallyBoundedMap.cancel_right
 -/
 
Diff
@@ -3,7 +3,7 @@ Copyright (c) 2022 Yaël Dillies. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Yaël Dillies
 -/
-import Mathbin.Topology.Bornology.Basic
+import Topology.Bornology.Basic
 
 #align_import topology.bornology.hom from "leanprover-community/mathlib"@"fac369018417f980cec5fcdafc766a69f88d8cfe"
 
Diff
@@ -56,11 +56,11 @@ end
 
 export LocallyBoundedMapClass (comap_cobounded_le)
 
-#print IsBounded.image /-
-theorem IsBounded.image [Bornology α] [Bornology β] [LocallyBoundedMapClass F α β] {f : F}
+#print Bornology.IsBounded.image /-
+theorem Bornology.IsBounded.image [Bornology α] [Bornology β] [LocallyBoundedMapClass F α β] {f : F}
     {s : Set α} (hs : IsBounded s) : IsBounded (f '' s) :=
   comap_cobounded_le_iff.1 (comap_cobounded_le f) hs
-#align is_bounded.image IsBounded.image
+#align is_bounded.image Bornology.IsBounded.image
 -/
 
 instance [Bornology α] [Bornology β] [LocallyBoundedMapClass F α β] :
Diff
@@ -2,14 +2,11 @@
 Copyright (c) 2022 Yaël Dillies. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Yaël Dillies
-
-! This file was ported from Lean 3 source module topology.bornology.hom
-! leanprover-community/mathlib commit fac369018417f980cec5fcdafc766a69f88d8cfe
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
 -/
 import Mathbin.Topology.Bornology.Basic
 
+#align_import topology.bornology.hom from "leanprover-community/mathlib"@"fac369018417f980cec5fcdafc766a69f88d8cfe"
+
 /-!
 # Locally bounded maps
 
Diff
@@ -59,10 +59,12 @@ end
 
 export LocallyBoundedMapClass (comap_cobounded_le)
 
+#print IsBounded.image /-
 theorem IsBounded.image [Bornology α] [Bornology β] [LocallyBoundedMapClass F α β] {f : F}
     {s : Set α} (hs : IsBounded s) : IsBounded (f '' s) :=
   comap_cobounded_le_iff.1 (comap_cobounded_le f) hs
 #align is_bounded.image IsBounded.image
+-/
 
 instance [Bornology α] [Bornology β] [LocallyBoundedMapClass F α β] :
     CoeTC F (LocallyBoundedMap α β) :=
@@ -88,25 +90,33 @@ theorem toFun_eq_coe {f : LocallyBoundedMap α β} : f.toFun = (f : α → β) :
   rfl
 #align locally_bounded_map.to_fun_eq_coe LocallyBoundedMap.toFun_eq_coe
 
+#print LocallyBoundedMap.ext /-
 @[ext]
 theorem ext {f g : LocallyBoundedMap α β} (h : ∀ a, f a = g a) : f = g :=
   FunLike.ext f g h
 #align locally_bounded_map.ext LocallyBoundedMap.ext
+-/
 
+#print LocallyBoundedMap.copy /-
 /-- Copy of a `locally_bounded_map` with a new `to_fun` equal to the old one. Useful to fix
 definitional equalities. -/
 protected def copy (f : LocallyBoundedMap α β) (f' : α → β) (h : f' = f) : LocallyBoundedMap α β :=
   ⟨f', h.symm ▸ f.comap_cobounded_le'⟩
 #align locally_bounded_map.copy LocallyBoundedMap.copy
+-/
 
+#print LocallyBoundedMap.coe_copy /-
 @[simp]
 theorem coe_copy (f : LocallyBoundedMap α β) (f' : α → β) (h : f' = f) : ⇑(f.copy f' h) = f' :=
   rfl
 #align locally_bounded_map.coe_copy LocallyBoundedMap.coe_copy
+-/
 
+#print LocallyBoundedMap.copy_eq /-
 theorem copy_eq (f : LocallyBoundedMap α β) (f' : α → β) (h : f' = f) : f.copy f' h = f :=
   FunLike.ext' h
 #align locally_bounded_map.copy_eq LocallyBoundedMap.copy_eq
+-/
 
 #print LocallyBoundedMap.ofMapBounded /-
 /-- Construct a `locally_bounded_map` from the fact that the function maps bounded sets to bounded
@@ -116,15 +126,19 @@ def ofMapBounded (f : α → β) (h) : LocallyBoundedMap α β :=
 #align locally_bounded_map.of_map_bounded LocallyBoundedMap.ofMapBounded
 -/
 
+#print LocallyBoundedMap.coe_ofMapBounded /-
 @[simp]
 theorem coe_ofMapBounded (f : α → β) {h} : ⇑(ofMapBounded f h) = f :=
   rfl
 #align locally_bounded_map.coe_of_map_bounded LocallyBoundedMap.coe_ofMapBounded
+-/
 
+#print LocallyBoundedMap.ofMapBounded_apply /-
 @[simp]
 theorem ofMapBounded_apply (f : α → β) {h} (a : α) : ofMapBounded f h a = f a :=
   rfl
 #align locally_bounded_map.of_map_bounded_apply LocallyBoundedMap.ofMapBounded_apply
+-/
 
 variable (α)
 
@@ -138,17 +152,21 @@ protected def id : LocallyBoundedMap α α :=
 instance : Inhabited (LocallyBoundedMap α α) :=
   ⟨LocallyBoundedMap.id α⟩
 
+#print LocallyBoundedMap.coe_id /-
 @[simp]
 theorem coe_id : ⇑(LocallyBoundedMap.id α) = id :=
   rfl
 #align locally_bounded_map.coe_id LocallyBoundedMap.coe_id
+-/
 
 variable {α}
 
+#print LocallyBoundedMap.id_apply /-
 @[simp]
 theorem id_apply (a : α) : LocallyBoundedMap.id α a = a :=
   rfl
 #align locally_bounded_map.id_apply LocallyBoundedMap.id_apply
+-/
 
 #print LocallyBoundedMap.comp /-
 /-- Composition of `locally_bounded_map`s as a `locally_bounded_map`. -/
@@ -160,42 +178,56 @@ def comp (f : LocallyBoundedMap β γ) (g : LocallyBoundedMap α β) : LocallyBo
 #align locally_bounded_map.comp LocallyBoundedMap.comp
 -/
 
+#print LocallyBoundedMap.coe_comp /-
 @[simp]
 theorem coe_comp (f : LocallyBoundedMap β γ) (g : LocallyBoundedMap α β) : ⇑(f.comp g) = f ∘ g :=
   rfl
 #align locally_bounded_map.coe_comp LocallyBoundedMap.coe_comp
+-/
 
+#print LocallyBoundedMap.comp_apply /-
 @[simp]
 theorem comp_apply (f : LocallyBoundedMap β γ) (g : LocallyBoundedMap α β) (a : α) :
     f.comp g a = f (g a) :=
   rfl
 #align locally_bounded_map.comp_apply LocallyBoundedMap.comp_apply
+-/
 
+#print LocallyBoundedMap.comp_assoc /-
 @[simp]
 theorem comp_assoc (f : LocallyBoundedMap γ δ) (g : LocallyBoundedMap β γ)
     (h : LocallyBoundedMap α β) : (f.comp g).comp h = f.comp (g.comp h) :=
   rfl
 #align locally_bounded_map.comp_assoc LocallyBoundedMap.comp_assoc
+-/
 
+#print LocallyBoundedMap.comp_id /-
 @[simp]
 theorem comp_id (f : LocallyBoundedMap α β) : f.comp (LocallyBoundedMap.id α) = f :=
   ext fun a => rfl
 #align locally_bounded_map.comp_id LocallyBoundedMap.comp_id
+-/
 
+#print LocallyBoundedMap.id_comp /-
 @[simp]
 theorem id_comp (f : LocallyBoundedMap α β) : (LocallyBoundedMap.id β).comp f = f :=
   ext fun a => rfl
 #align locally_bounded_map.id_comp LocallyBoundedMap.id_comp
+-/
 
+#print LocallyBoundedMap.cancel_right /-
 theorem cancel_right {g₁ g₂ : LocallyBoundedMap β γ} {f : LocallyBoundedMap α β}
     (hf : Surjective f) : g₁.comp f = g₂.comp f ↔ g₁ = g₂ :=
   ⟨fun h => ext <| hf.forall.2 <| FunLike.ext_iff.1 h, congr_arg _⟩
 #align locally_bounded_map.cancel_right LocallyBoundedMap.cancel_right
+-/
 
+#print LocallyBoundedMap.cancel_left /-
 theorem cancel_left {g : LocallyBoundedMap β γ} {f₁ f₂ : LocallyBoundedMap α β} (hg : Injective g) :
     g.comp f₁ = g.comp f₂ ↔ f₁ = f₂ :=
   ⟨fun h => ext fun a => hg <| by rw [← comp_apply, h, comp_apply], congr_arg _⟩
 #align locally_bounded_map.cancel_left LocallyBoundedMap.cancel_left
+-/
 
 end LocallyBoundedMap
 
Diff
@@ -50,7 +50,7 @@ section
 
 You should extend this class when you extend `locally_bounded_map`. -/
 class LocallyBoundedMapClass (F : Type _) (α β : outParam <| Type _) [Bornology α]
-  [Bornology β] extends FunLike F α fun _ => β where
+    [Bornology β] extends FunLike F α fun _ => β where
   comap_cobounded_le (f : F) : (cobounded β).comap f ≤ cobounded α
 #align locally_bounded_map_class LocallyBoundedMapClass
 -/
Diff
@@ -83,12 +83,10 @@ directly. -/
 instance : CoeFun (LocallyBoundedMap α β) fun _ => α → β :=
   FunLike.hasCoeToFun
 
-/- warning: locally_bounded_map.to_fun_eq_coe clashes with [anonymous] -> [anonymous]
-Case conversion may be inaccurate. Consider using '#align locally_bounded_map.to_fun_eq_coe [anonymous]ₓ'. -/
 @[simp]
-theorem [anonymous] {f : LocallyBoundedMap α β} : f.toFun = (f : α → β) :=
+theorem toFun_eq_coe {f : LocallyBoundedMap α β} : f.toFun = (f : α → β) :=
   rfl
-#align locally_bounded_map.to_fun_eq_coe [anonymous]
+#align locally_bounded_map.to_fun_eq_coe LocallyBoundedMap.toFun_eq_coe
 
 @[ext]
 theorem ext {f g : LocallyBoundedMap α β} (h : ∀ a, f a = g a) : f = g :=
Diff
@@ -59,12 +59,6 @@ end
 
 export LocallyBoundedMapClass (comap_cobounded_le)
 
-/- warning: is_bounded.image -> IsBounded.image is a dubious translation:
-lean 3 declaration is
-  forall {F : Type.{u1}} {α : Type.{u2}} {β : Type.{u3}} [_inst_1 : Bornology.{u2} α] [_inst_2 : Bornology.{u3} β] [_inst_3 : LocallyBoundedMapClass.{u1, u2, u3} F α β _inst_1 _inst_2] {f : F} {s : Set.{u2} α}, (Bornology.IsBounded.{u2} α _inst_1 s) -> (Bornology.IsBounded.{u3} β _inst_2 (Set.image.{u2, u3} α β (coeFn.{succ u1, max (succ u2) (succ u3)} F (fun (_x : F) => α -> β) (FunLike.hasCoeToFun.{succ u1, succ u2, succ u3} F α (fun (_x : α) => β) (LocallyBoundedMapClass.toFunLike.{u1, u2, u3} F α β _inst_1 _inst_2 _inst_3)) f) s))
-but is expected to have type
-  forall {F : Type.{u1}} {α : Type.{u3}} {β : Type.{u2}} [_inst_1 : Bornology.{u3} α] [_inst_2 : Bornology.{u2} β] [_inst_3 : LocallyBoundedMapClass.{u1, u3, u2} F α β _inst_1 _inst_2] {f : F} {s : Set.{u3} α}, (Bornology.IsBounded.{u3} α _inst_1 s) -> (Bornology.IsBounded.{u2} β _inst_2 (Set.image.{u3, u2} α β (FunLike.coe.{succ u1, succ u3, succ u2} F α (fun (_x : α) => (fun (x._@.Mathlib.Topology.Bornology.Hom._hyg.92 : α) => β) _x) (LocallyBoundedMapClass.toFunLike.{u1, u3, u2} F α β _inst_1 _inst_2 _inst_3) f) s))
-Case conversion may be inaccurate. Consider using '#align is_bounded.image IsBounded.imageₓ'. -/
 theorem IsBounded.image [Bornology α] [Bornology β] [LocallyBoundedMapClass F α β] {f : F}
     {s : Set α} (hs : IsBounded s) : IsBounded (f '' s) :=
   comap_cobounded_le_iff.1 (comap_cobounded_le f) hs
@@ -90,57 +84,28 @@ instance : CoeFun (LocallyBoundedMap α β) fun _ => α → β :=
   FunLike.hasCoeToFun
 
 /- warning: locally_bounded_map.to_fun_eq_coe clashes with [anonymous] -> [anonymous]
-warning: locally_bounded_map.to_fun_eq_coe -> [anonymous] is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Bornology.{u1} α] [_inst_2 : Bornology.{u2} β] {f : LocallyBoundedMap.{u1, u2} α β _inst_1 _inst_2}, Eq.{max (succ u1) (succ u2)} (α -> β) (LocallyBoundedMap.toFun.{u1, u2} α β _inst_1 _inst_2 f) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (LocallyBoundedMap.{u1, u2} α β _inst_1 _inst_2) (fun (_x : LocallyBoundedMap.{u1, u2} α β _inst_1 _inst_2) => α -> β) (LocallyBoundedMap.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) f)
-but is expected to have type
-  forall {α : Type.{u1}} {β : Type.{u2}}, (Nat -> α -> β) -> Nat -> (List.{u1} α) -> (List.{u2} β)
 Case conversion may be inaccurate. Consider using '#align locally_bounded_map.to_fun_eq_coe [anonymous]ₓ'. -/
 @[simp]
 theorem [anonymous] {f : LocallyBoundedMap α β} : f.toFun = (f : α → β) :=
   rfl
 #align locally_bounded_map.to_fun_eq_coe [anonymous]
 
-/- warning: locally_bounded_map.ext -> LocallyBoundedMap.ext is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Bornology.{u1} α] [_inst_2 : Bornology.{u2} β] {f : LocallyBoundedMap.{u1, u2} α β _inst_1 _inst_2} {g : LocallyBoundedMap.{u1, u2} α β _inst_1 _inst_2}, (forall (a : α), Eq.{succ u2} β (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (LocallyBoundedMap.{u1, u2} α β _inst_1 _inst_2) (fun (_x : LocallyBoundedMap.{u1, u2} α β _inst_1 _inst_2) => α -> β) (LocallyBoundedMap.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) f a) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (LocallyBoundedMap.{u1, u2} α β _inst_1 _inst_2) (fun (_x : LocallyBoundedMap.{u1, u2} α β _inst_1 _inst_2) => α -> β) (LocallyBoundedMap.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) g a)) -> (Eq.{max (succ u1) (succ u2)} (LocallyBoundedMap.{u1, u2} α β _inst_1 _inst_2) f g)
-but is expected to have type
-  forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : Bornology.{u2} α] [_inst_2 : Bornology.{u1} β] {f : LocallyBoundedMap.{u2, u1} α β _inst_1 _inst_2} {g : LocallyBoundedMap.{u2, u1} α β _inst_1 _inst_2}, (forall (a : α), Eq.{succ u1} ((fun (x._@.Mathlib.Topology.Bornology.Hom._hyg.92 : α) => β) a) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (LocallyBoundedMap.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => (fun (x._@.Mathlib.Topology.Bornology.Hom._hyg.92 : α) => β) _x) (LocallyBoundedMapClass.toFunLike.{max u2 u1, u2, u1} (LocallyBoundedMap.{u2, u1} α β _inst_1 _inst_2) α β _inst_1 _inst_2 (LocallyBoundedMap.instLocallyBoundedMapClassLocallyBoundedMap.{u2, u1} α β _inst_1 _inst_2)) f a) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (LocallyBoundedMap.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => (fun (x._@.Mathlib.Topology.Bornology.Hom._hyg.92 : α) => β) _x) (LocallyBoundedMapClass.toFunLike.{max u2 u1, u2, u1} (LocallyBoundedMap.{u2, u1} α β _inst_1 _inst_2) α β _inst_1 _inst_2 (LocallyBoundedMap.instLocallyBoundedMapClassLocallyBoundedMap.{u2, u1} α β _inst_1 _inst_2)) g a)) -> (Eq.{max (succ u2) (succ u1)} (LocallyBoundedMap.{u2, u1} α β _inst_1 _inst_2) f g)
-Case conversion may be inaccurate. Consider using '#align locally_bounded_map.ext LocallyBoundedMap.extₓ'. -/
 @[ext]
 theorem ext {f g : LocallyBoundedMap α β} (h : ∀ a, f a = g a) : f = g :=
   FunLike.ext f g h
 #align locally_bounded_map.ext LocallyBoundedMap.ext
 
-/- warning: locally_bounded_map.copy -> LocallyBoundedMap.copy is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Bornology.{u1} α] [_inst_2 : Bornology.{u2} β] (f : LocallyBoundedMap.{u1, u2} α β _inst_1 _inst_2) (f' : α -> β), (Eq.{max (succ u1) (succ u2)} (α -> β) f' (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (LocallyBoundedMap.{u1, u2} α β _inst_1 _inst_2) (fun (_x : LocallyBoundedMap.{u1, u2} α β _inst_1 _inst_2) => α -> β) (LocallyBoundedMap.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) f)) -> (LocallyBoundedMap.{u1, u2} α β _inst_1 _inst_2)
-but is expected to have type
-  forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Bornology.{u1} α] [_inst_2 : Bornology.{u2} β] (f : LocallyBoundedMap.{u1, u2} α β _inst_1 _inst_2) (f' : α -> β), (Eq.{max (succ u1) (succ u2)} (α -> β) f' (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (LocallyBoundedMap.{u1, u2} α β _inst_1 _inst_2) α (fun (_x : α) => (fun (x._@.Mathlib.Topology.Bornology.Hom._hyg.92 : α) => β) _x) (LocallyBoundedMapClass.toFunLike.{max u1 u2, u1, u2} (LocallyBoundedMap.{u1, u2} α β _inst_1 _inst_2) α β _inst_1 _inst_2 (LocallyBoundedMap.instLocallyBoundedMapClassLocallyBoundedMap.{u1, u2} α β _inst_1 _inst_2)) f)) -> (LocallyBoundedMap.{u1, u2} α β _inst_1 _inst_2)
-Case conversion may be inaccurate. Consider using '#align locally_bounded_map.copy LocallyBoundedMap.copyₓ'. -/
 /-- Copy of a `locally_bounded_map` with a new `to_fun` equal to the old one. Useful to fix
 definitional equalities. -/
 protected def copy (f : LocallyBoundedMap α β) (f' : α → β) (h : f' = f) : LocallyBoundedMap α β :=
   ⟨f', h.symm ▸ f.comap_cobounded_le'⟩
 #align locally_bounded_map.copy LocallyBoundedMap.copy
 
-/- warning: locally_bounded_map.coe_copy -> LocallyBoundedMap.coe_copy is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Bornology.{u1} α] [_inst_2 : Bornology.{u2} β] (f : LocallyBoundedMap.{u1, u2} α β _inst_1 _inst_2) (f' : α -> β) (h : Eq.{max (succ u1) (succ u2)} (α -> β) f' (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (LocallyBoundedMap.{u1, u2} α β _inst_1 _inst_2) (fun (_x : LocallyBoundedMap.{u1, u2} α β _inst_1 _inst_2) => α -> β) (LocallyBoundedMap.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) f)), Eq.{max (succ u1) (succ u2)} (α -> β) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (LocallyBoundedMap.{u1, u2} α β _inst_1 _inst_2) (fun (_x : LocallyBoundedMap.{u1, u2} α β _inst_1 _inst_2) => α -> β) (LocallyBoundedMap.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) (LocallyBoundedMap.copy.{u1, u2} α β _inst_1 _inst_2 f f' h)) f'
-but is expected to have type
-  forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : Bornology.{u2} α] [_inst_2 : Bornology.{u1} β] (f : LocallyBoundedMap.{u2, u1} α β _inst_1 _inst_2) (f' : α -> β) (h : Eq.{max (succ u2) (succ u1)} (α -> β) f' (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (LocallyBoundedMap.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => (fun (x._@.Mathlib.Topology.Bornology.Hom._hyg.92 : α) => β) _x) (LocallyBoundedMapClass.toFunLike.{max u2 u1, u2, u1} (LocallyBoundedMap.{u2, u1} α β _inst_1 _inst_2) α β _inst_1 _inst_2 (LocallyBoundedMap.instLocallyBoundedMapClassLocallyBoundedMap.{u2, u1} α β _inst_1 _inst_2)) f)), Eq.{max (succ u2) (succ u1)} (forall (ᾰ : α), (fun (x._@.Mathlib.Topology.Bornology.Hom._hyg.92 : α) => β) ᾰ) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (LocallyBoundedMap.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => (fun (x._@.Mathlib.Topology.Bornology.Hom._hyg.92 : α) => β) _x) (LocallyBoundedMapClass.toFunLike.{max u2 u1, u2, u1} (LocallyBoundedMap.{u2, u1} α β _inst_1 _inst_2) α β _inst_1 _inst_2 (LocallyBoundedMap.instLocallyBoundedMapClassLocallyBoundedMap.{u2, u1} α β _inst_1 _inst_2)) (LocallyBoundedMap.copy.{u2, u1} α β _inst_1 _inst_2 f f' h)) f'
-Case conversion may be inaccurate. Consider using '#align locally_bounded_map.coe_copy LocallyBoundedMap.coe_copyₓ'. -/
 @[simp]
 theorem coe_copy (f : LocallyBoundedMap α β) (f' : α → β) (h : f' = f) : ⇑(f.copy f' h) = f' :=
   rfl
 #align locally_bounded_map.coe_copy LocallyBoundedMap.coe_copy
 
-/- warning: locally_bounded_map.copy_eq -> LocallyBoundedMap.copy_eq is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Bornology.{u1} α] [_inst_2 : Bornology.{u2} β] (f : LocallyBoundedMap.{u1, u2} α β _inst_1 _inst_2) (f' : α -> β) (h : Eq.{max (succ u1) (succ u2)} (α -> β) f' (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (LocallyBoundedMap.{u1, u2} α β _inst_1 _inst_2) (fun (_x : LocallyBoundedMap.{u1, u2} α β _inst_1 _inst_2) => α -> β) (LocallyBoundedMap.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) f)), Eq.{max (succ u1) (succ u2)} (LocallyBoundedMap.{u1, u2} α β _inst_1 _inst_2) (LocallyBoundedMap.copy.{u1, u2} α β _inst_1 _inst_2 f f' h) f
-but is expected to have type
-  forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : Bornology.{u2} α] [_inst_2 : Bornology.{u1} β] (f : LocallyBoundedMap.{u2, u1} α β _inst_1 _inst_2) (f' : α -> β) (h : Eq.{max (succ u2) (succ u1)} (α -> β) f' (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (LocallyBoundedMap.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => (fun (x._@.Mathlib.Topology.Bornology.Hom._hyg.92 : α) => β) _x) (LocallyBoundedMapClass.toFunLike.{max u2 u1, u2, u1} (LocallyBoundedMap.{u2, u1} α β _inst_1 _inst_2) α β _inst_1 _inst_2 (LocallyBoundedMap.instLocallyBoundedMapClassLocallyBoundedMap.{u2, u1} α β _inst_1 _inst_2)) f)), Eq.{max (succ u2) (succ u1)} (LocallyBoundedMap.{u2, u1} α β _inst_1 _inst_2) (LocallyBoundedMap.copy.{u2, u1} α β _inst_1 _inst_2 f f' h) f
-Case conversion may be inaccurate. Consider using '#align locally_bounded_map.copy_eq LocallyBoundedMap.copy_eqₓ'. -/
 theorem copy_eq (f : LocallyBoundedMap α β) (f' : α → β) (h : f' = f) : f.copy f' h = f :=
   FunLike.ext' h
 #align locally_bounded_map.copy_eq LocallyBoundedMap.copy_eq
@@ -153,23 +118,11 @@ def ofMapBounded (f : α → β) (h) : LocallyBoundedMap α β :=
 #align locally_bounded_map.of_map_bounded LocallyBoundedMap.ofMapBounded
 -/
 
-/- warning: locally_bounded_map.coe_of_map_bounded -> LocallyBoundedMap.coe_ofMapBounded is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Bornology.{u1} α] [_inst_2 : Bornology.{u2} β] (f : α -> β) {h : forall {{s : Set.{u1} α}}, (Bornology.IsBounded.{u1} α _inst_1 s) -> (Bornology.IsBounded.{u2} β _inst_2 (Set.image.{u1, u2} α β f s))}, Eq.{max (succ u1) (succ u2)} (α -> β) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (LocallyBoundedMap.{u1, u2} α β _inst_1 _inst_2) (fun (_x : LocallyBoundedMap.{u1, u2} α β _inst_1 _inst_2) => α -> β) (LocallyBoundedMap.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) (LocallyBoundedMap.ofMapBounded.{u1, u2} α β _inst_1 _inst_2 f h)) f
-but is expected to have type
-  forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : Bornology.{u2} α] [_inst_2 : Bornology.{u1} β] (f : α -> β) {h : forall {{s : Set.{u2} α}}, (Bornology.IsBounded.{u2} α _inst_1 s) -> (Bornology.IsBounded.{u1} β _inst_2 (Set.image.{u2, u1} α β f s))}, Eq.{max (succ u2) (succ u1)} (forall (ᾰ : α), (fun (x._@.Mathlib.Topology.Bornology.Hom._hyg.92 : α) => β) ᾰ) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (LocallyBoundedMap.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => (fun (x._@.Mathlib.Topology.Bornology.Hom._hyg.92 : α) => β) _x) (LocallyBoundedMapClass.toFunLike.{max u2 u1, u2, u1} (LocallyBoundedMap.{u2, u1} α β _inst_1 _inst_2) α β _inst_1 _inst_2 (LocallyBoundedMap.instLocallyBoundedMapClassLocallyBoundedMap.{u2, u1} α β _inst_1 _inst_2)) (LocallyBoundedMap.ofMapBounded.{u2, u1} α β _inst_1 _inst_2 f h)) f
-Case conversion may be inaccurate. Consider using '#align locally_bounded_map.coe_of_map_bounded LocallyBoundedMap.coe_ofMapBoundedₓ'. -/
 @[simp]
 theorem coe_ofMapBounded (f : α → β) {h} : ⇑(ofMapBounded f h) = f :=
   rfl
 #align locally_bounded_map.coe_of_map_bounded LocallyBoundedMap.coe_ofMapBounded
 
-/- warning: locally_bounded_map.of_map_bounded_apply -> LocallyBoundedMap.ofMapBounded_apply is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Bornology.{u1} α] [_inst_2 : Bornology.{u2} β] (f : α -> β) {h : forall {{s : Set.{u1} α}}, (Bornology.IsBounded.{u1} α _inst_1 s) -> (Bornology.IsBounded.{u2} β _inst_2 (Set.image.{u1, u2} α β f s))} (a : α), Eq.{succ u2} β (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (LocallyBoundedMap.{u1, u2} α β _inst_1 _inst_2) (fun (_x : LocallyBoundedMap.{u1, u2} α β _inst_1 _inst_2) => α -> β) (LocallyBoundedMap.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) (LocallyBoundedMap.ofMapBounded.{u1, u2} α β _inst_1 _inst_2 f h) a) (f a)
-but is expected to have type
-  forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : Bornology.{u2} α] [_inst_2 : Bornology.{u1} β] (f : α -> β) {h : forall {{s : Set.{u2} α}}, (Bornology.IsBounded.{u2} α _inst_1 s) -> (Bornology.IsBounded.{u1} β _inst_2 (Set.image.{u2, u1} α β f s))} (a : α), Eq.{succ u1} ((fun (x._@.Mathlib.Topology.Bornology.Hom._hyg.92 : α) => β) a) (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (LocallyBoundedMap.{u2, u1} α β _inst_1 _inst_2) α (fun (_x : α) => (fun (x._@.Mathlib.Topology.Bornology.Hom._hyg.92 : α) => β) _x) (LocallyBoundedMapClass.toFunLike.{max u2 u1, u2, u1} (LocallyBoundedMap.{u2, u1} α β _inst_1 _inst_2) α β _inst_1 _inst_2 (LocallyBoundedMap.instLocallyBoundedMapClassLocallyBoundedMap.{u2, u1} α β _inst_1 _inst_2)) (LocallyBoundedMap.ofMapBounded.{u2, u1} α β _inst_1 _inst_2 f h) a) (f a)
-Case conversion may be inaccurate. Consider using '#align locally_bounded_map.of_map_bounded_apply LocallyBoundedMap.ofMapBounded_applyₓ'. -/
 @[simp]
 theorem ofMapBounded_apply (f : α → β) {h} (a : α) : ofMapBounded f h a = f a :=
   rfl
@@ -187,12 +140,6 @@ protected def id : LocallyBoundedMap α α :=
 instance : Inhabited (LocallyBoundedMap α α) :=
   ⟨LocallyBoundedMap.id α⟩
 
-/- warning: locally_bounded_map.coe_id -> LocallyBoundedMap.coe_id is a dubious translation:
-lean 3 declaration is
-  forall (α : Type.{u1}) [_inst_1 : Bornology.{u1} α], Eq.{succ u1} (α -> α) (coeFn.{succ u1, succ u1} (LocallyBoundedMap.{u1, u1} α α _inst_1 _inst_1) (fun (_x : LocallyBoundedMap.{u1, u1} α α _inst_1 _inst_1) => α -> α) (LocallyBoundedMap.hasCoeToFun.{u1, u1} α α _inst_1 _inst_1) (LocallyBoundedMap.id.{u1} α _inst_1)) (id.{succ u1} α)
-but is expected to have type
-  forall (α : Type.{u1}) [_inst_1 : Bornology.{u1} α], Eq.{succ u1} (forall (ᾰ : α), (fun (x._@.Mathlib.Topology.Bornology.Hom._hyg.92 : α) => α) ᾰ) (FunLike.coe.{succ u1, succ u1, succ u1} (LocallyBoundedMap.{u1, u1} α α _inst_1 _inst_1) α (fun (_x : α) => (fun (x._@.Mathlib.Topology.Bornology.Hom._hyg.92 : α) => α) _x) (LocallyBoundedMapClass.toFunLike.{u1, u1, u1} (LocallyBoundedMap.{u1, u1} α α _inst_1 _inst_1) α α _inst_1 _inst_1 (LocallyBoundedMap.instLocallyBoundedMapClassLocallyBoundedMap.{u1, u1} α α _inst_1 _inst_1)) (LocallyBoundedMap.id.{u1} α _inst_1)) (id.{succ u1} α)
-Case conversion may be inaccurate. Consider using '#align locally_bounded_map.coe_id LocallyBoundedMap.coe_idₓ'. -/
 @[simp]
 theorem coe_id : ⇑(LocallyBoundedMap.id α) = id :=
   rfl
@@ -200,12 +147,6 @@ theorem coe_id : ⇑(LocallyBoundedMap.id α) = id :=
 
 variable {α}
 
-/- warning: locally_bounded_map.id_apply -> LocallyBoundedMap.id_apply is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : Bornology.{u1} α] (a : α), Eq.{succ u1} α (coeFn.{succ u1, succ u1} (LocallyBoundedMap.{u1, u1} α α _inst_1 _inst_1) (fun (_x : LocallyBoundedMap.{u1, u1} α α _inst_1 _inst_1) => α -> α) (LocallyBoundedMap.hasCoeToFun.{u1, u1} α α _inst_1 _inst_1) (LocallyBoundedMap.id.{u1} α _inst_1) a) a
-but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : Bornology.{u1} α] (a : α), Eq.{succ u1} ((fun (x._@.Mathlib.Topology.Bornology.Hom._hyg.92 : α) => α) a) (FunLike.coe.{succ u1, succ u1, succ u1} (LocallyBoundedMap.{u1, u1} α α _inst_1 _inst_1) α (fun (_x : α) => (fun (x._@.Mathlib.Topology.Bornology.Hom._hyg.92 : α) => α) _x) (LocallyBoundedMapClass.toFunLike.{u1, u1, u1} (LocallyBoundedMap.{u1, u1} α α _inst_1 _inst_1) α α _inst_1 _inst_1 (LocallyBoundedMap.instLocallyBoundedMapClassLocallyBoundedMap.{u1, u1} α α _inst_1 _inst_1)) (LocallyBoundedMap.id.{u1} α _inst_1) a) a
-Case conversion may be inaccurate. Consider using '#align locally_bounded_map.id_apply LocallyBoundedMap.id_applyₓ'. -/
 @[simp]
 theorem id_apply (a : α) : LocallyBoundedMap.id α a = a :=
   rfl
@@ -221,80 +162,38 @@ def comp (f : LocallyBoundedMap β γ) (g : LocallyBoundedMap α β) : LocallyBo
 #align locally_bounded_map.comp LocallyBoundedMap.comp
 -/
 
-/- warning: locally_bounded_map.coe_comp -> LocallyBoundedMap.coe_comp is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} [_inst_1 : Bornology.{u1} α] [_inst_2 : Bornology.{u2} β] [_inst_3 : Bornology.{u3} γ] (f : LocallyBoundedMap.{u2, u3} β γ _inst_2 _inst_3) (g : LocallyBoundedMap.{u1, u2} α β _inst_1 _inst_2), Eq.{max (succ u1) (succ u3)} (α -> γ) (coeFn.{max (succ u1) (succ u3), max (succ u1) (succ u3)} (LocallyBoundedMap.{u1, u3} α γ _inst_1 _inst_3) (fun (_x : LocallyBoundedMap.{u1, u3} α γ _inst_1 _inst_3) => α -> γ) (LocallyBoundedMap.hasCoeToFun.{u1, u3} α γ _inst_1 _inst_3) (LocallyBoundedMap.comp.{u1, u2, u3} α β γ _inst_1 _inst_2 _inst_3 f g)) (Function.comp.{succ u1, succ u2, succ u3} α β γ (coeFn.{max (succ u2) (succ u3), max (succ u2) (succ u3)} (LocallyBoundedMap.{u2, u3} β γ _inst_2 _inst_3) (fun (_x : LocallyBoundedMap.{u2, u3} β γ _inst_2 _inst_3) => β -> γ) (LocallyBoundedMap.hasCoeToFun.{u2, u3} β γ _inst_2 _inst_3) f) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (LocallyBoundedMap.{u1, u2} α β _inst_1 _inst_2) (fun (_x : LocallyBoundedMap.{u1, u2} α β _inst_1 _inst_2) => α -> β) (LocallyBoundedMap.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) g))
-but is expected to have type
-  forall {α : Type.{u1}} {β : Type.{u3}} {γ : Type.{u2}} [_inst_1 : Bornology.{u1} α] [_inst_2 : Bornology.{u3} β] [_inst_3 : Bornology.{u2} γ] (f : LocallyBoundedMap.{u3, u2} β γ _inst_2 _inst_3) (g : LocallyBoundedMap.{u1, u3} α β _inst_1 _inst_2), Eq.{max (succ u1) (succ u2)} (forall (ᾰ : α), (fun (x._@.Mathlib.Topology.Bornology.Hom._hyg.92 : α) => γ) ᾰ) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (LocallyBoundedMap.{u1, u2} α γ _inst_1 _inst_3) α (fun (_x : α) => (fun (x._@.Mathlib.Topology.Bornology.Hom._hyg.92 : α) => γ) _x) (LocallyBoundedMapClass.toFunLike.{max u1 u2, u1, u2} (LocallyBoundedMap.{u1, u2} α γ _inst_1 _inst_3) α γ _inst_1 _inst_3 (LocallyBoundedMap.instLocallyBoundedMapClassLocallyBoundedMap.{u1, u2} α γ _inst_1 _inst_3)) (LocallyBoundedMap.comp.{u1, u3, u2} α β γ _inst_1 _inst_2 _inst_3 f g)) (Function.comp.{succ u1, succ u3, succ u2} α β γ (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (LocallyBoundedMap.{u3, u2} β γ _inst_2 _inst_3) β (fun (_x : β) => (fun (x._@.Mathlib.Topology.Bornology.Hom._hyg.92 : β) => γ) _x) (LocallyBoundedMapClass.toFunLike.{max u3 u2, u3, u2} (LocallyBoundedMap.{u3, u2} β γ _inst_2 _inst_3) β γ _inst_2 _inst_3 (LocallyBoundedMap.instLocallyBoundedMapClassLocallyBoundedMap.{u3, u2} β γ _inst_2 _inst_3)) f) (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} (LocallyBoundedMap.{u1, u3} α β _inst_1 _inst_2) α (fun (_x : α) => (fun (x._@.Mathlib.Topology.Bornology.Hom._hyg.92 : α) => β) _x) (LocallyBoundedMapClass.toFunLike.{max u1 u3, u1, u3} (LocallyBoundedMap.{u1, u3} α β _inst_1 _inst_2) α β _inst_1 _inst_2 (LocallyBoundedMap.instLocallyBoundedMapClassLocallyBoundedMap.{u1, u3} α β _inst_1 _inst_2)) g))
-Case conversion may be inaccurate. Consider using '#align locally_bounded_map.coe_comp LocallyBoundedMap.coe_compₓ'. -/
 @[simp]
 theorem coe_comp (f : LocallyBoundedMap β γ) (g : LocallyBoundedMap α β) : ⇑(f.comp g) = f ∘ g :=
   rfl
 #align locally_bounded_map.coe_comp LocallyBoundedMap.coe_comp
 
-/- warning: locally_bounded_map.comp_apply -> LocallyBoundedMap.comp_apply is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} [_inst_1 : Bornology.{u1} α] [_inst_2 : Bornology.{u2} β] [_inst_3 : Bornology.{u3} γ] (f : LocallyBoundedMap.{u2, u3} β γ _inst_2 _inst_3) (g : LocallyBoundedMap.{u1, u2} α β _inst_1 _inst_2) (a : α), Eq.{succ u3} γ (coeFn.{max (succ u1) (succ u3), max (succ u1) (succ u3)} (LocallyBoundedMap.{u1, u3} α γ _inst_1 _inst_3) (fun (_x : LocallyBoundedMap.{u1, u3} α γ _inst_1 _inst_3) => α -> γ) (LocallyBoundedMap.hasCoeToFun.{u1, u3} α γ _inst_1 _inst_3) (LocallyBoundedMap.comp.{u1, u2, u3} α β γ _inst_1 _inst_2 _inst_3 f g) a) (coeFn.{max (succ u2) (succ u3), max (succ u2) (succ u3)} (LocallyBoundedMap.{u2, u3} β γ _inst_2 _inst_3) (fun (_x : LocallyBoundedMap.{u2, u3} β γ _inst_2 _inst_3) => β -> γ) (LocallyBoundedMap.hasCoeToFun.{u2, u3} β γ _inst_2 _inst_3) f (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (LocallyBoundedMap.{u1, u2} α β _inst_1 _inst_2) (fun (_x : LocallyBoundedMap.{u1, u2} α β _inst_1 _inst_2) => α -> β) (LocallyBoundedMap.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) g a))
-but is expected to have type
-  forall {α : Type.{u1}} {β : Type.{u3}} {γ : Type.{u2}} [_inst_1 : Bornology.{u1} α] [_inst_2 : Bornology.{u3} β] [_inst_3 : Bornology.{u2} γ] (f : LocallyBoundedMap.{u3, u2} β γ _inst_2 _inst_3) (g : LocallyBoundedMap.{u1, u3} α β _inst_1 _inst_2) (a : α), Eq.{succ u2} ((fun (x._@.Mathlib.Topology.Bornology.Hom._hyg.92 : α) => γ) a) (FunLike.coe.{max (succ u1) (succ u2), succ u1, succ u2} (LocallyBoundedMap.{u1, u2} α γ _inst_1 _inst_3) α (fun (_x : α) => (fun (x._@.Mathlib.Topology.Bornology.Hom._hyg.92 : α) => γ) _x) (LocallyBoundedMapClass.toFunLike.{max u1 u2, u1, u2} (LocallyBoundedMap.{u1, u2} α γ _inst_1 _inst_3) α γ _inst_1 _inst_3 (LocallyBoundedMap.instLocallyBoundedMapClassLocallyBoundedMap.{u1, u2} α γ _inst_1 _inst_3)) (LocallyBoundedMap.comp.{u1, u3, u2} α β γ _inst_1 _inst_2 _inst_3 f g) a) (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (LocallyBoundedMap.{u3, u2} β γ _inst_2 _inst_3) β (fun (_x : β) => (fun (x._@.Mathlib.Topology.Bornology.Hom._hyg.92 : β) => γ) _x) (LocallyBoundedMapClass.toFunLike.{max u3 u2, u3, u2} (LocallyBoundedMap.{u3, u2} β γ _inst_2 _inst_3) β γ _inst_2 _inst_3 (LocallyBoundedMap.instLocallyBoundedMapClassLocallyBoundedMap.{u3, u2} β γ _inst_2 _inst_3)) f (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} (LocallyBoundedMap.{u1, u3} α β _inst_1 _inst_2) α (fun (_x : α) => (fun (x._@.Mathlib.Topology.Bornology.Hom._hyg.92 : α) => β) _x) (LocallyBoundedMapClass.toFunLike.{max u1 u3, u1, u3} (LocallyBoundedMap.{u1, u3} α β _inst_1 _inst_2) α β _inst_1 _inst_2 (LocallyBoundedMap.instLocallyBoundedMapClassLocallyBoundedMap.{u1, u3} α β _inst_1 _inst_2)) g a))
-Case conversion may be inaccurate. Consider using '#align locally_bounded_map.comp_apply LocallyBoundedMap.comp_applyₓ'. -/
 @[simp]
 theorem comp_apply (f : LocallyBoundedMap β γ) (g : LocallyBoundedMap α β) (a : α) :
     f.comp g a = f (g a) :=
   rfl
 #align locally_bounded_map.comp_apply LocallyBoundedMap.comp_apply
 
-/- warning: locally_bounded_map.comp_assoc -> LocallyBoundedMap.comp_assoc is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} {δ : Type.{u4}} [_inst_1 : Bornology.{u1} α] [_inst_2 : Bornology.{u2} β] [_inst_3 : Bornology.{u3} γ] [_inst_4 : Bornology.{u4} δ] (f : LocallyBoundedMap.{u3, u4} γ δ _inst_3 _inst_4) (g : LocallyBoundedMap.{u2, u3} β γ _inst_2 _inst_3) (h : LocallyBoundedMap.{u1, u2} α β _inst_1 _inst_2), Eq.{max (succ u1) (succ u4)} (LocallyBoundedMap.{u1, u4} α δ _inst_1 _inst_4) (LocallyBoundedMap.comp.{u1, u2, u4} α β δ _inst_1 _inst_2 _inst_4 (LocallyBoundedMap.comp.{u2, u3, u4} β γ δ _inst_2 _inst_3 _inst_4 f g) h) (LocallyBoundedMap.comp.{u1, u3, u4} α γ δ _inst_1 _inst_3 _inst_4 f (LocallyBoundedMap.comp.{u1, u2, u3} α β γ _inst_1 _inst_2 _inst_3 g h))
-but is expected to have type
-  forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u4}} {δ : Type.{u3}} [_inst_1 : Bornology.{u1} α] [_inst_2 : Bornology.{u2} β] [_inst_3 : Bornology.{u4} γ] [_inst_4 : Bornology.{u3} δ] (f : LocallyBoundedMap.{u4, u3} γ δ _inst_3 _inst_4) (g : LocallyBoundedMap.{u2, u4} β γ _inst_2 _inst_3) (h : LocallyBoundedMap.{u1, u2} α β _inst_1 _inst_2), Eq.{max (succ u1) (succ u3)} (LocallyBoundedMap.{u1, u3} α δ _inst_1 _inst_4) (LocallyBoundedMap.comp.{u1, u2, u3} α β δ _inst_1 _inst_2 _inst_4 (LocallyBoundedMap.comp.{u2, u4, u3} β γ δ _inst_2 _inst_3 _inst_4 f g) h) (LocallyBoundedMap.comp.{u1, u4, u3} α γ δ _inst_1 _inst_3 _inst_4 f (LocallyBoundedMap.comp.{u1, u2, u4} α β γ _inst_1 _inst_2 _inst_3 g h))
-Case conversion may be inaccurate. Consider using '#align locally_bounded_map.comp_assoc LocallyBoundedMap.comp_assocₓ'. -/
 @[simp]
 theorem comp_assoc (f : LocallyBoundedMap γ δ) (g : LocallyBoundedMap β γ)
     (h : LocallyBoundedMap α β) : (f.comp g).comp h = f.comp (g.comp h) :=
   rfl
 #align locally_bounded_map.comp_assoc LocallyBoundedMap.comp_assoc
 
-/- warning: locally_bounded_map.comp_id -> LocallyBoundedMap.comp_id is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Bornology.{u1} α] [_inst_2 : Bornology.{u2} β] (f : LocallyBoundedMap.{u1, u2} α β _inst_1 _inst_2), Eq.{max (succ u1) (succ u2)} (LocallyBoundedMap.{u1, u2} α β _inst_1 _inst_2) (LocallyBoundedMap.comp.{u1, u1, u2} α α β _inst_1 _inst_1 _inst_2 f (LocallyBoundedMap.id.{u1} α _inst_1)) f
-but is expected to have type
-  forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : Bornology.{u2} α] [_inst_2 : Bornology.{u1} β] (f : LocallyBoundedMap.{u2, u1} α β _inst_1 _inst_2), Eq.{max (succ u2) (succ u1)} (LocallyBoundedMap.{u2, u1} α β _inst_1 _inst_2) (LocallyBoundedMap.comp.{u2, u2, u1} α α β _inst_1 _inst_1 _inst_2 f (LocallyBoundedMap.id.{u2} α _inst_1)) f
-Case conversion may be inaccurate. Consider using '#align locally_bounded_map.comp_id LocallyBoundedMap.comp_idₓ'. -/
 @[simp]
 theorem comp_id (f : LocallyBoundedMap α β) : f.comp (LocallyBoundedMap.id α) = f :=
   ext fun a => rfl
 #align locally_bounded_map.comp_id LocallyBoundedMap.comp_id
 
-/- warning: locally_bounded_map.id_comp -> LocallyBoundedMap.id_comp is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Bornology.{u1} α] [_inst_2 : Bornology.{u2} β] (f : LocallyBoundedMap.{u1, u2} α β _inst_1 _inst_2), Eq.{max (succ u1) (succ u2)} (LocallyBoundedMap.{u1, u2} α β _inst_1 _inst_2) (LocallyBoundedMap.comp.{u1, u2, u2} α β β _inst_1 _inst_2 _inst_2 (LocallyBoundedMap.id.{u2} β _inst_2) f) f
-but is expected to have type
-  forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : Bornology.{u2} α] [_inst_2 : Bornology.{u1} β] (f : LocallyBoundedMap.{u2, u1} α β _inst_1 _inst_2), Eq.{max (succ u2) (succ u1)} (LocallyBoundedMap.{u2, u1} α β _inst_1 _inst_2) (LocallyBoundedMap.comp.{u2, u1, u1} α β β _inst_1 _inst_2 _inst_2 (LocallyBoundedMap.id.{u1} β _inst_2) f) f
-Case conversion may be inaccurate. Consider using '#align locally_bounded_map.id_comp LocallyBoundedMap.id_compₓ'. -/
 @[simp]
 theorem id_comp (f : LocallyBoundedMap α β) : (LocallyBoundedMap.id β).comp f = f :=
   ext fun a => rfl
 #align locally_bounded_map.id_comp LocallyBoundedMap.id_comp
 
-/- warning: locally_bounded_map.cancel_right -> LocallyBoundedMap.cancel_right is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} [_inst_1 : Bornology.{u1} α] [_inst_2 : Bornology.{u2} β] [_inst_3 : Bornology.{u3} γ] {g₁ : LocallyBoundedMap.{u2, u3} β γ _inst_2 _inst_3} {g₂ : LocallyBoundedMap.{u2, u3} β γ _inst_2 _inst_3} {f : LocallyBoundedMap.{u1, u2} α β _inst_1 _inst_2}, (Function.Surjective.{succ u1, succ u2} α β (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (LocallyBoundedMap.{u1, u2} α β _inst_1 _inst_2) (fun (_x : LocallyBoundedMap.{u1, u2} α β _inst_1 _inst_2) => α -> β) (LocallyBoundedMap.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) f)) -> (Iff (Eq.{max (succ u1) (succ u3)} (LocallyBoundedMap.{u1, u3} α γ _inst_1 _inst_3) (LocallyBoundedMap.comp.{u1, u2, u3} α β γ _inst_1 _inst_2 _inst_3 g₁ f) (LocallyBoundedMap.comp.{u1, u2, u3} α β γ _inst_1 _inst_2 _inst_3 g₂ f)) (Eq.{max (succ u2) (succ u3)} (LocallyBoundedMap.{u2, u3} β γ _inst_2 _inst_3) g₁ g₂))
-but is expected to have type
-  forall {α : Type.{u1}} {β : Type.{u3}} {γ : Type.{u2}} [_inst_1 : Bornology.{u1} α] [_inst_2 : Bornology.{u3} β] [_inst_3 : Bornology.{u2} γ] {g₁ : LocallyBoundedMap.{u3, u2} β γ _inst_2 _inst_3} {g₂ : LocallyBoundedMap.{u3, u2} β γ _inst_2 _inst_3} {f : LocallyBoundedMap.{u1, u3} α β _inst_1 _inst_2}, (Function.Surjective.{succ u1, succ u3} α β (FunLike.coe.{max (succ u1) (succ u3), succ u1, succ u3} (LocallyBoundedMap.{u1, u3} α β _inst_1 _inst_2) α (fun (_x : α) => (fun (x._@.Mathlib.Topology.Bornology.Hom._hyg.92 : α) => β) _x) (LocallyBoundedMapClass.toFunLike.{max u1 u3, u1, u3} (LocallyBoundedMap.{u1, u3} α β _inst_1 _inst_2) α β _inst_1 _inst_2 (LocallyBoundedMap.instLocallyBoundedMapClassLocallyBoundedMap.{u1, u3} α β _inst_1 _inst_2)) f)) -> (Iff (Eq.{max (succ u1) (succ u2)} (LocallyBoundedMap.{u1, u2} α γ _inst_1 _inst_3) (LocallyBoundedMap.comp.{u1, u3, u2} α β γ _inst_1 _inst_2 _inst_3 g₁ f) (LocallyBoundedMap.comp.{u1, u3, u2} α β γ _inst_1 _inst_2 _inst_3 g₂ f)) (Eq.{max (succ u3) (succ u2)} (LocallyBoundedMap.{u3, u2} β γ _inst_2 _inst_3) g₁ g₂))
-Case conversion may be inaccurate. Consider using '#align locally_bounded_map.cancel_right LocallyBoundedMap.cancel_rightₓ'. -/
 theorem cancel_right {g₁ g₂ : LocallyBoundedMap β γ} {f : LocallyBoundedMap α β}
     (hf : Surjective f) : g₁.comp f = g₂.comp f ↔ g₁ = g₂ :=
   ⟨fun h => ext <| hf.forall.2 <| FunLike.ext_iff.1 h, congr_arg _⟩
 #align locally_bounded_map.cancel_right LocallyBoundedMap.cancel_right
 
-/- warning: locally_bounded_map.cancel_left -> LocallyBoundedMap.cancel_left is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} [_inst_1 : Bornology.{u1} α] [_inst_2 : Bornology.{u2} β] [_inst_3 : Bornology.{u3} γ] {g : LocallyBoundedMap.{u2, u3} β γ _inst_2 _inst_3} {f₁ : LocallyBoundedMap.{u1, u2} α β _inst_1 _inst_2} {f₂ : LocallyBoundedMap.{u1, u2} α β _inst_1 _inst_2}, (Function.Injective.{succ u2, succ u3} β γ (coeFn.{max (succ u2) (succ u3), max (succ u2) (succ u3)} (LocallyBoundedMap.{u2, u3} β γ _inst_2 _inst_3) (fun (_x : LocallyBoundedMap.{u2, u3} β γ _inst_2 _inst_3) => β -> γ) (LocallyBoundedMap.hasCoeToFun.{u2, u3} β γ _inst_2 _inst_3) g)) -> (Iff (Eq.{max (succ u1) (succ u3)} (LocallyBoundedMap.{u1, u3} α γ _inst_1 _inst_3) (LocallyBoundedMap.comp.{u1, u2, u3} α β γ _inst_1 _inst_2 _inst_3 g f₁) (LocallyBoundedMap.comp.{u1, u2, u3} α β γ _inst_1 _inst_2 _inst_3 g f₂)) (Eq.{max (succ u1) (succ u2)} (LocallyBoundedMap.{u1, u2} α β _inst_1 _inst_2) f₁ f₂))
-but is expected to have type
-  forall {α : Type.{u1}} {β : Type.{u3}} {γ : Type.{u2}} [_inst_1 : Bornology.{u1} α] [_inst_2 : Bornology.{u3} β] [_inst_3 : Bornology.{u2} γ] {g : LocallyBoundedMap.{u3, u2} β γ _inst_2 _inst_3} {f₁ : LocallyBoundedMap.{u1, u3} α β _inst_1 _inst_2} {f₂ : LocallyBoundedMap.{u1, u3} α β _inst_1 _inst_2}, (Function.Injective.{succ u3, succ u2} β γ (FunLike.coe.{max (succ u3) (succ u2), succ u3, succ u2} (LocallyBoundedMap.{u3, u2} β γ _inst_2 _inst_3) β (fun (_x : β) => (fun (x._@.Mathlib.Topology.Bornology.Hom._hyg.92 : β) => γ) _x) (LocallyBoundedMapClass.toFunLike.{max u3 u2, u3, u2} (LocallyBoundedMap.{u3, u2} β γ _inst_2 _inst_3) β γ _inst_2 _inst_3 (LocallyBoundedMap.instLocallyBoundedMapClassLocallyBoundedMap.{u3, u2} β γ _inst_2 _inst_3)) g)) -> (Iff (Eq.{max (succ u1) (succ u2)} (LocallyBoundedMap.{u1, u2} α γ _inst_1 _inst_3) (LocallyBoundedMap.comp.{u1, u3, u2} α β γ _inst_1 _inst_2 _inst_3 g f₁) (LocallyBoundedMap.comp.{u1, u3, u2} α β γ _inst_1 _inst_2 _inst_3 g f₂)) (Eq.{max (succ u1) (succ u3)} (LocallyBoundedMap.{u1, u3} α β _inst_1 _inst_2) f₁ f₂))
-Case conversion may be inaccurate. Consider using '#align locally_bounded_map.cancel_left LocallyBoundedMap.cancel_leftₓ'. -/
 theorem cancel_left {g : LocallyBoundedMap β γ} {f₁ f₂ : LocallyBoundedMap α β} (hg : Injective g) :
     g.comp f₁ = g.comp f₂ ↔ f₁ = f₂ :=
   ⟨fun h => ext fun a => hg <| by rw [← comp_apply, h, comp_apply], congr_arg _⟩
Diff
@@ -81,10 +81,7 @@ variable [Bornology α] [Bornology β] [Bornology γ] [Bornology δ]
 instance : LocallyBoundedMapClass (LocallyBoundedMap α β) α β
     where
   coe f := f.toFun
-  coe_injective' f g h := by
-    cases f
-    cases g
-    congr
+  coe_injective' f g h := by cases f; cases g; congr
   comap_cobounded_le f := f.comap_cobounded_le'
 
 /-- Helper instance for when there's too many metavariables to apply `fun_like.has_coe_to_fun`

Changes in mathlib4

mathlib3
mathlib4
style: homogenise porting notes (#11145)

Homogenises porting notes via capitalisation and addition of whitespace.

It makes the following changes:

  • converts "--porting note" into "-- Porting note";
  • converts "porting note" into "Porting note".
Diff
@@ -88,7 +88,7 @@ instance : FunLike (LocallyBoundedMap α β) α β where
 instance : LocallyBoundedMapClass (LocallyBoundedMap α β) α β where
   comap_cobounded_le f := f.comap_cobounded_le'
 
--- porting note: syntactic tautology because of the way coercions work
+-- Porting note: syntactic tautology because of the way coercions work
 #noalign locally_bounded_map.to_fun_eq_coe
 
 @[ext]
@@ -116,7 +116,7 @@ sets. -/
 def ofMapBounded (f : α → β) (h : ∀ ⦃s : Set α⦄, IsBounded s → IsBounded (f '' s)) :
     LocallyBoundedMap α β :=
   ⟨f, comap_cobounded_le_iff.2 h⟩
--- porting note: I had to provide the type of `h` explicitly.
+-- Porting note: I had to provide the type of `h` explicitly.
 #align locally_bounded_map.of_map_bounded LocallyBoundedMap.ofMapBounded
 
 @[simp]
@@ -190,7 +190,7 @@ theorem id_comp (f : LocallyBoundedMap α β) : (LocallyBoundedMap.id β).comp f
 theorem cancel_right {g₁ g₂ : LocallyBoundedMap β γ} {f : LocallyBoundedMap α β}
     (hf : Surjective f) : g₁.comp f = g₂.comp f ↔ g₁ = g₂ :=
   ⟨fun h => ext <| hf.forall.2 <| DFunLike.ext_iff.1 h, congrArg (fun x => comp x f)⟩
--- porting note: unification was not strong enough to do `congrArg _`.
+-- Porting note: unification was not strong enough to do `congrArg _`.
 #align locally_bounded_map.cancel_right LocallyBoundedMap.cancel_right
 
 @[simp]
refactor(Data/FunLike): use unbundled inheritance from FunLike (#8386)

The FunLike hierarchy is very big and gets scanned through each time we need a coercion (via the CoeFun instance). It looks like unbundled inheritance suits Lean 4 better here. The only class that still extends FunLike is EquivLike, since that has a custom coe_injective' field that is easier to implement. All other classes should take FunLike or EquivLike as a parameter.

Zulip thread

Important changes

Previously, morphism classes would be Type-valued and extend FunLike:

/-- `MyHomClass F A B` states that `F` is a type of `MyClass.op`-preserving morphisms.
You should extend this class when you extend `MyHom`. -/
class MyHomClass (F : Type*) (A B : outParam <| Type*) [MyClass A] [MyClass B]
  extends FunLike F A B :=
(map_op : ∀ (f : F) (x y : A), f (MyClass.op x y) = MyClass.op (f x) (f y))

After this PR, they should be Prop-valued and take FunLike as a parameter:

/-- `MyHomClass F A B` states that `F` is a type of `MyClass.op`-preserving morphisms.
You should extend this class when you extend `MyHom`. -/
class MyHomClass (F : Type*) (A B : outParam <| Type*) [MyClass A] [MyClass B]
  [FunLike F A B] : Prop :=
(map_op : ∀ (f : F) (x y : A), f (MyClass.op x y) = MyClass.op (f x) (f y))

(Note that A B stay marked as outParam even though they are not purely required to be so due to the FunLike parameter already filling them in. This is required to see through type synonyms, which is important in the category theory library. Also, I think keeping them as outParam is slightly faster.)

Similarly, MyEquivClass should take EquivLike as a parameter.

As a result, every mention of [MyHomClass F A B] should become [FunLike F A B] [MyHomClass F A B].

Remaining issues

Slower (failing) search

While overall this gives some great speedups, there are some cases that are noticeably slower. In particular, a failing application of a lemma such as map_mul is more expensive. This is due to suboptimal processing of arguments. For example:

variable [FunLike F M N] [Mul M] [Mul N] (f : F) (x : M) (y : M)

theorem map_mul [MulHomClass F M N] : f (x * y) = f x * f y

example [AddHomClass F A B] : f (x * y) = f x * f y := map_mul f _ _

Before this PR, applying map_mul f gives the goals [Mul ?M] [Mul ?N] [MulHomClass F ?M ?N]. Since M and N are out_params, [MulHomClass F ?M ?N] is synthesized first, supplies values for ?M and ?N and then the Mul M and Mul N instances can be found.

After this PR, the goals become [FunLike F ?M ?N] [Mul ?M] [Mul ?N] [MulHomClass F ?M ?N]. Now [FunLike F ?M ?N] is synthesized first, supplies values for ?M and ?N and then the Mul M and Mul N instances can be found, before trying MulHomClass F M N which fails. Since the Mul hierarchy is very big, this can be slow to fail, especially when there is no such Mul instance.

A long-term but harder to achieve solution would be to specify the order in which instance goals get solved. For example, we'd like to change the arguments to map_mul to look like [FunLike F M N] [Mul M] [Mul N] [highPriority <| MulHomClass F M N] because MulHomClass fails or succeeds much faster than the others.

As a consequence, the simpNF linter is much slower since by design it tries and fails to apply many map_ lemmas. The same issue occurs a few times in existing calls to simp [map_mul], where map_mul is tried "too soon" and fails. Thanks to the speedup of leanprover/lean4#2478 the impact is very limited, only in files that already were close to the timeout.

simp not firing sometimes

This affects map_smulₛₗ and related definitions. For simp lemmas Lean apparently uses a slightly different mechanism to find instances, so that rw can find every argument to map_smulₛₗ successfully but simp can't: leanprover/lean4#3701.

Missing instances due to unification failing

Especially in the category theory library, we might sometimes have a type A which is also accessible as a synonym (Bundled A hA).1. Instance synthesis doesn't always work if we have f : A →* B but x * y : (Bundled A hA).1 or vice versa. This seems to be mostly fixed by keeping A B as outParams in MulHomClass F A B. (Presumably because Lean will do a definitional check A =?= (Bundled A hA).1 instead of using the syntax in the discrimination tree.)

Workaround for issues

The timeouts can be worked around for now by specifying which map_mul we mean, either as map_mul f for some explicit f, or as e.g. MonoidHomClass.map_mul.

map_smulₛₗ not firing as simp lemma can be worked around by going back to the pre-FunLike situation and making LinearMap.map_smulₛₗ a simp lemma instead of the generic map_smulₛₗ. Writing simp [map_smulₛₗ _] also works.

Co-authored-by: Matthew Ballard <matt@mrb.email> Co-authored-by: Scott Morrison <scott.morrison@gmail.com> Co-authored-by: Scott Morrison <scott@tqft.net> Co-authored-by: Anne Baanen <Vierkantor@users.noreply.github.com>

Diff
@@ -44,7 +44,7 @@ section
 
 You should extend this class when you extend `LocallyBoundedMap`. -/
 class LocallyBoundedMapClass (F : Type*) (α β : outParam <| Type*) [Bornology α]
-    [Bornology β] extends DFunLike F α (fun _ => β) where
+    [Bornology β] [FunLike F α β] : Prop where
   /-- The pullback of the `Bornology.cobounded` filter under the function is contained in the
   cobounded filter. Equivalently, the function maps bounded sets to bounded sets. -/
   comap_cobounded_le (f : F) : (cobounded β).comap f ≤ cobounded α
@@ -54,6 +54,8 @@ end
 
 export LocallyBoundedMapClass (comap_cobounded_le)
 
+variable [FunLike F α β]
+
 theorem Bornology.IsBounded.image [Bornology α] [Bornology β] [LocallyBoundedMapClass F α β] (f : F)
     {s : Set α} (hs : IsBounded s) : IsBounded (f '' s) :=
   comap_cobounded_le_iff.1 (comap_cobounded_le f) hs
@@ -76,19 +78,15 @@ namespace LocallyBoundedMap
 
 variable [Bornology α] [Bornology β] [Bornology γ] [Bornology δ]
 
-instance : LocallyBoundedMapClass (LocallyBoundedMap α β) α β where
+instance : FunLike (LocallyBoundedMap α β) α β where
   coe f := f.toFun
   coe_injective' f g h := by
     cases f
     cases g
     congr
-  comap_cobounded_le f := f.comap_cobounded_le'
 
-/- omitting helper instance because it is not needed in Lean 4.
-/-- Helper instance for when there's too many metavariables to apply the coercion via `DFunLike`
-directly.
-instance : CoeFun (LocallyBoundedMap α β) fun _ => α → β where
-  coe := LocallyBoundedMap.toFun -/ -/
+instance : LocallyBoundedMapClass (LocallyBoundedMap α β) α β where
+  comap_cobounded_le f := f.comap_cobounded_le'
 
 -- porting note: syntactic tautology because of the way coercions work
 #noalign locally_bounded_map.to_fun_eq_coe
refactor(*): abbreviation for non-dependent FunLike (#9833)

This follows up from #9785, which renamed FunLike to DFunLike, by introducing a new abbreviation FunLike F α β := DFunLike F α (fun _ => β), to make the non-dependent use of FunLike easier.

I searched for the pattern DFunLike.*fun and DFunLike.*λ in all files to replace expressions of the form DFunLike F α (fun _ => β) with FunLike F α β. I did this everywhere except for extends clauses for two reasons: it would conflict with #8386, and more importantly extends must directly refer to a structure with no unfolding of defs or abbrevs.

Diff
@@ -44,7 +44,7 @@ section
 
 You should extend this class when you extend `LocallyBoundedMap`. -/
 class LocallyBoundedMapClass (F : Type*) (α β : outParam <| Type*) [Bornology α]
-    [Bornology β] extends DFunLike F α fun _ => β where
+    [Bornology β] extends DFunLike F α (fun _ => β) where
   /-- The pullback of the `Bornology.cobounded` filter under the function is contained in the
   cobounded filter. Equivalently, the function maps bounded sets to bounded sets. -/
   comap_cobounded_le (f : F) : (cobounded β).comap f ≤ cobounded α
chore(*): rename FunLike to DFunLike (#9785)

This prepares for the introduction of a non-dependent synonym of FunLike, which helps a lot with keeping #8386 readable.

This is entirely search-and-replace in 680197f combined with manual fixes in 4145626, e900597 and b8428f8. The commands that generated this change:

sed -i 's/\bFunLike\b/DFunLike/g' {Archive,Counterexamples,Mathlib,test}/**/*.lean
sed -i 's/\btoFunLike\b/toDFunLike/g' {Archive,Counterexamples,Mathlib,test}/**/*.lean
sed -i 's/import Mathlib.Data.DFunLike/import Mathlib.Data.FunLike/g' {Archive,Counterexamples,Mathlib,test}/**/*.lean
sed -i 's/\bHom_FunLike\b/Hom_DFunLike/g' {Archive,Counterexamples,Mathlib,test}/**/*.lean     
sed -i 's/\binstFunLike\b/instDFunLike/g' {Archive,Counterexamples,Mathlib,test}/**/*.lean
sed -i 's/\bfunLike\b/instDFunLike/g' {Archive,Counterexamples,Mathlib,test}/**/*.lean
sed -i 's/\btoo many metavariables to apply `fun_like.has_coe_to_fun`/too many metavariables to apply `DFunLike.hasCoeToFun`/g' {Archive,Counterexamples,Mathlib,test}/**/*.lean

Co-authored-by: Anne Baanen <Vierkantor@users.noreply.github.com>

Diff
@@ -12,7 +12,7 @@ import Mathlib.Topology.Bornology.Basic
 
 This file defines locally bounded maps between bornologies.
 
-We use the `FunLike` design, so each type of morphisms has a companion typeclass which is meant to
+We use the `DFunLike` design, so each type of morphisms has a companion typeclass which is meant to
 be satisfied by itself and all stricter types.
 
 ## Types of morphisms
@@ -44,7 +44,7 @@ section
 
 You should extend this class when you extend `LocallyBoundedMap`. -/
 class LocallyBoundedMapClass (F : Type*) (α β : outParam <| Type*) [Bornology α]
-    [Bornology β] extends FunLike F α fun _ => β where
+    [Bornology β] extends DFunLike F α fun _ => β where
   /-- The pullback of the `Bornology.cobounded` filter under the function is contained in the
   cobounded filter. Equivalently, the function maps bounded sets to bounded sets. -/
   comap_cobounded_le (f : F) : (cobounded β).comap f ≤ cobounded α
@@ -85,7 +85,7 @@ instance : LocallyBoundedMapClass (LocallyBoundedMap α β) α β where
   comap_cobounded_le f := f.comap_cobounded_le'
 
 /- omitting helper instance because it is not needed in Lean 4.
-/-- Helper instance for when there's too many metavariables to apply the coercion via `FunLike`
+/-- Helper instance for when there's too many metavariables to apply the coercion via `DFunLike`
 directly.
 instance : CoeFun (LocallyBoundedMap α β) fun _ => α → β where
   coe := LocallyBoundedMap.toFun -/ -/
@@ -95,7 +95,7 @@ instance : CoeFun (LocallyBoundedMap α β) fun _ => α → β where
 
 @[ext]
 theorem ext {f g : LocallyBoundedMap α β} (h : ∀ a, f a = g a) : f = g :=
-  FunLike.ext f g h
+  DFunLike.ext f g h
 #align locally_bounded_map.ext LocallyBoundedMap.ext
 
 /-- Copy of a `LocallyBoundedMap` with a new `toFun` equal to the old one. Useful to fix
@@ -110,7 +110,7 @@ theorem coe_copy (f : LocallyBoundedMap α β) (f' : α → β) (h : f' = f) : 
 #align locally_bounded_map.coe_copy LocallyBoundedMap.coe_copy
 
 theorem copy_eq (f : LocallyBoundedMap α β) (f' : α → β) (h : f' = f) : f.copy f' h = f :=
-  FunLike.ext' h
+  DFunLike.ext' h
 #align locally_bounded_map.copy_eq LocallyBoundedMap.copy_eq
 
 /-- Construct a `LocallyBoundedMap` from the fact that the function maps bounded sets to bounded
@@ -191,7 +191,7 @@ theorem id_comp (f : LocallyBoundedMap α β) : (LocallyBoundedMap.id β).comp f
 @[simp]
 theorem cancel_right {g₁ g₂ : LocallyBoundedMap β γ} {f : LocallyBoundedMap α β}
     (hf : Surjective f) : g₁.comp f = g₂.comp f ↔ g₁ = g₂ :=
-  ⟨fun h => ext <| hf.forall.2 <| FunLike.ext_iff.1 h, congrArg (fun x => comp x f)⟩
+  ⟨fun h => ext <| hf.forall.2 <| DFunLike.ext_iff.1 h, congrArg (fun x => comp x f)⟩
 -- porting note: unification was not strong enough to do `congrArg _`.
 #align locally_bounded_map.cancel_right LocallyBoundedMap.cancel_right
 
refactor(Topology/MetricSpace): remove Metric.Bounded (#7240)

Use Bornology.IsBounded instead.

Diff
@@ -54,10 +54,10 @@ end
 
 export LocallyBoundedMapClass (comap_cobounded_le)
 
-theorem IsBounded.image [Bornology α] [Bornology β] [LocallyBoundedMapClass F α β] {f : F}
+theorem Bornology.IsBounded.image [Bornology α] [Bornology β] [LocallyBoundedMapClass F α β] (f : F)
     {s : Set α} (hs : IsBounded s) : IsBounded (f '' s) :=
   comap_cobounded_le_iff.1 (comap_cobounded_le f) hs
-#align is_bounded.image IsBounded.image
+#align is_bounded.image Bornology.IsBounded.image
 
 /-- Turn an element of a type `F` satisfying `LocallyBoundedMapClass F α β` into an actual
 `LocallyBoundedMap`. This is declared as the default coercion from `F` to
chore: @[simp] cancel_(right|left) (#6300)

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

Diff
@@ -188,12 +188,14 @@ theorem id_comp (f : LocallyBoundedMap α β) : (LocallyBoundedMap.id β).comp f
   ext fun _ => rfl
 #align locally_bounded_map.id_comp LocallyBoundedMap.id_comp
 
+@[simp]
 theorem cancel_right {g₁ g₂ : LocallyBoundedMap β γ} {f : LocallyBoundedMap α β}
     (hf : Surjective f) : g₁.comp f = g₂.comp f ↔ g₁ = g₂ :=
   ⟨fun h => ext <| hf.forall.2 <| FunLike.ext_iff.1 h, congrArg (fun x => comp x f)⟩
 -- porting note: unification was not strong enough to do `congrArg _`.
 #align locally_bounded_map.cancel_right LocallyBoundedMap.cancel_right
 
+@[simp]
 theorem cancel_left {g : LocallyBoundedMap β γ} {f₁ f₂ : LocallyBoundedMap α β} (hg : Injective g) :
     g.comp f₁ = g.comp f₂ ↔ f₁ = f₂ :=
   ⟨fun h => ext fun a => hg <| by rw [← comp_apply, h, comp_apply], congr_arg _⟩
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
@@ -27,10 +27,10 @@ be satisfied by itself and all stricter types.
 
 open Bornology Filter Function Set
 
-variable {F α β γ δ : Type _}
+variable {F α β γ δ : Type*}
 
 /-- The type of bounded maps from `α` to `β`, the maps which send a bounded set to a bounded set. -/
-structure LocallyBoundedMap (α β : Type _) [Bornology α] [Bornology β] where
+structure LocallyBoundedMap (α β : Type*) [Bornology α] [Bornology β] where
   /-- The function underlying a locally bounded map -/
   toFun : α → β
   /-- The pullback of the `Bornology.cobounded` filter under the function is contained in the
@@ -43,7 +43,7 @@ section
 /-- `LocallyBoundedMapClass F α β` states that `F` is a type of bounded maps.
 
 You should extend this class when you extend `LocallyBoundedMap`. -/
-class LocallyBoundedMapClass (F : Type _) (α β : outParam <| Type _) [Bornology α]
+class LocallyBoundedMapClass (F : Type*) (α β : outParam <| Type*) [Bornology α]
     [Bornology β] extends FunLike F α fun _ => β where
   /-- The pullback of the `Bornology.cobounded` filter under the function is contained in the
   cobounded filter. Equivalently, the function maps bounded sets to bounded sets. -/
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,14 +2,11 @@
 Copyright (c) 2022 Yaël Dillies. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Yaël Dillies
-
-! This file was ported from Lean 3 source module topology.bornology.hom
-! leanprover-community/mathlib commit e3d9ab8faa9dea8f78155c6c27d62a621f4c152d
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
 -/
 import Mathlib.Topology.Bornology.Basic
 
+#align_import topology.bornology.hom from "leanprover-community/mathlib"@"e3d9ab8faa9dea8f78155c6c27d62a621f4c152d"
+
 /-!
 # Locally bounded maps
 
feat: port Topology.Bornology.Hom (#1855)

porting notes:

  1. In one place I had to provide explicitly the type of a hypothesis in a declaration which Lean 3 was able to infer from context.

Dependencies 7 + 259

260 files ported (97.4%)
112138 lines ported (97.4%)
Show graph

The unported dependencies are