category_theory.category.CatMathlib.CategoryTheory.Category.Cat

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)

(last sync)

Changes in mathlib3port

mathlib3
mathlib3port
Diff
@@ -160,11 +160,11 @@ def typeToCat : Type u ⥤ Cat where
 #align category_theory.Type_to_Cat CategoryTheory.typeToCat
 -/
 
-instance : Faithful typeToCat.{u}
+instance : CategoryTheory.Functor.Faithful typeToCat.{u}
     where map_injective' X Y f g h :=
     funext fun x => congr_arg Discrete.as (Functor.congr_obj h ⟨x⟩)
 
-instance : Full typeToCat.{u}
+instance : CategoryTheory.Functor.Full typeToCat.{u}
     where
   preimage X Y F := Discrete.as ∘ F.obj ∘ Discrete.mk
   witness' := by
Diff
@@ -3,10 +3,10 @@ Copyright (c) 2019 Yury Kudryashov. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Yury Kudryashov
 -/
-import Mathbin.CategoryTheory.ConcreteCategory.Bundled
-import Mathbin.CategoryTheory.DiscreteCategory
-import Mathbin.CategoryTheory.Types
-import Mathbin.CategoryTheory.Bicategory.Strict
+import CategoryTheory.ConcreteCategory.Bundled
+import CategoryTheory.DiscreteCategory
+import CategoryTheory.Types
+import CategoryTheory.Bicategory.Strict
 
 #align_import category_theory.category.Cat from "leanprover-community/mathlib"@"3dadefa3f544b1db6214777fe47910739b54c66a"
 
Diff
@@ -2,17 +2,14 @@
 Copyright (c) 2019 Yury Kudryashov. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Yury Kudryashov
-
-! This file was ported from Lean 3 source module category_theory.category.Cat
-! leanprover-community/mathlib commit 3dadefa3f544b1db6214777fe47910739b54c66a
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
 -/
 import Mathbin.CategoryTheory.ConcreteCategory.Bundled
 import Mathbin.CategoryTheory.DiscreteCategory
 import Mathbin.CategoryTheory.Types
 import Mathbin.CategoryTheory.Bicategory.Strict
 
+#align_import category_theory.category.Cat from "leanprover-community/mathlib"@"3dadefa3f544b1db6214777fe47910739b54c66a"
+
 /-!
 # Category of categories
 
Diff
@@ -99,21 +99,27 @@ instance category : LargeCategory.{max v u} Cat.{v, u} :=
 #align category_theory.Cat.category CategoryTheory.Cat.category
 -/
 
+#print CategoryTheory.Cat.id_map /-
 @[simp]
 theorem id_map {C : Cat} {X Y : C} (f : X ⟶ Y) : (𝟙 C : C ⥤ C).map f = f :=
   Functor.id_map f
 #align category_theory.Cat.id_map CategoryTheory.Cat.id_map
+-/
 
+#print CategoryTheory.Cat.comp_obj /-
 @[simp]
 theorem comp_obj {C D E : Cat} (F : C ⟶ D) (G : D ⟶ E) (X : C) : (F ≫ G).obj X = G.obj (F.obj X) :=
   Functor.comp_obj F G X
 #align category_theory.Cat.comp_obj CategoryTheory.Cat.comp_obj
+-/
 
+#print CategoryTheory.Cat.comp_map /-
 @[simp]
 theorem comp_map {C D E : Cat} (F : C ⟶ D) (G : D ⟶ E) {X Y : C} (f : X ⟶ Y) :
     (F ≫ G).map f = G.map (F.map f) :=
   Functor.comp_map F G f
 #align category_theory.Cat.comp_map CategoryTheory.Cat.comp_map
+-/
 
 #print CategoryTheory.Cat.objects /-
 /-- Functor that gets the set of objects of a category. It is not
@@ -128,6 +134,7 @@ section
 
 attribute [local simp] eq_to_hom_map
 
+#print CategoryTheory.Cat.equivOfIso /-
 /-- Any isomorphism in `Cat` induces an equivalence of the underlying categories. -/
 def equivOfIso {C D : Cat} (γ : C ≅ D) : C ≌ D
     where
@@ -136,6 +143,7 @@ def equivOfIso {C D : Cat} (γ : C ≅ D) : C ≌ D
   unitIso := eqToIso <| Eq.symm γ.hom_inv_id
   counitIso := eqToIso γ.inv_hom_id
 #align category_theory.Cat.equiv_of_iso CategoryTheory.Cat.equivOfIso
+-/
 
 end
 
Diff
@@ -99,31 +99,16 @@ instance category : LargeCategory.{max v u} Cat.{v, u} :=
 #align category_theory.Cat.category CategoryTheory.Cat.category
 -/
 
-/- warning: category_theory.Cat.id_map -> CategoryTheory.Cat.id_map is a dubious translation:
-lean 3 declaration is
-  forall {C : CategoryTheory.Cat.{u1, u2}} {X : coeSort.{succ (max (succ u2) u2 (succ u1)), succ (succ u2)} CategoryTheory.Cat.{u1, u2} Type.{u2} CategoryTheory.Cat.hasCoeToSort.{u2, u1} C} {Y : coeSort.{succ (max (succ u2) u2 (succ u1)), succ (succ u2)} CategoryTheory.Cat.{u1, u2} Type.{u2} CategoryTheory.Cat.hasCoeToSort.{u2, u1} C} (f : Quiver.Hom.{succ u1, u2} (coeSort.{succ (max (succ u2) u2 (succ u1)), succ (succ u2)} CategoryTheory.Cat.{u1, u2} Type.{u2} CategoryTheory.Cat.hasCoeToSort.{u2, u1} C) (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} (coeSort.{succ (max (succ u2) u2 (succ u1)), succ (succ u2)} CategoryTheory.Cat.{u1, u2} Type.{u2} CategoryTheory.Cat.hasCoeToSort.{u2, u1} C) (CategoryTheory.Category.toCategoryStruct.{u1, u2} (coeSort.{succ (max (succ u2) u2 (succ u1)), succ (succ u2)} CategoryTheory.Cat.{u1, u2} Type.{u2} CategoryTheory.Cat.hasCoeToSort.{u2, u1} C) (CategoryTheory.Cat.str.{u1, u2} C))) X Y), Eq.{succ u1} (Quiver.Hom.{succ u1, u2} (coeSort.{succ (max (succ u2) u2 (succ u1)), succ (succ u2)} CategoryTheory.Cat.{u1, u2} Type.{u2} CategoryTheory.Cat.hasCoeToSort.{u2, u1} C) (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} (coeSort.{succ (max (succ u2) u2 (succ u1)), succ (succ u2)} CategoryTheory.Cat.{u1, u2} Type.{u2} CategoryTheory.Cat.hasCoeToSort.{u2, u1} C) (CategoryTheory.Category.toCategoryStruct.{u1, u2} (coeSort.{succ (max (succ u2) u2 (succ u1)), succ (succ u2)} CategoryTheory.Cat.{u1, u2} Type.{u2} CategoryTheory.Cat.hasCoeToSort.{u2, u1} C) (CategoryTheory.Cat.str.{u1, u2} C))) (CategoryTheory.Functor.obj.{u1, u1, u2, u2} (coeSort.{succ (max (succ u2) u2 (succ u1)), succ (succ u2)} CategoryTheory.Cat.{u1, u2} Type.{u2} CategoryTheory.Cat.hasCoeToSort.{u2, u1} C) (CategoryTheory.Cat.str.{u1, u2} C) (coeSort.{succ (max (succ u2) u2 (succ u1)), succ (succ u2)} CategoryTheory.Cat.{u1, u2} Type.{u2} CategoryTheory.Cat.hasCoeToSort.{u2, u1} C) (CategoryTheory.Cat.str.{u1, u2} C) (CategoryTheory.CategoryStruct.id.{max u1 u2, max (succ u2) u2 (succ u1)} CategoryTheory.Cat.{u1, u2} (CategoryTheory.Bicategory.toCategoryStruct.{max u1 u2, max u1 u2, max (succ u2) u2 (succ u1)} CategoryTheory.Cat.{u1, u2} CategoryTheory.Cat.bicategory.{u1, u2}) C) X) (CategoryTheory.Functor.obj.{u1, u1, u2, u2} (coeSort.{succ (max (succ u2) u2 (succ u1)), succ (succ u2)} CategoryTheory.Cat.{u1, u2} Type.{u2} CategoryTheory.Cat.hasCoeToSort.{u2, u1} C) (CategoryTheory.Cat.str.{u1, u2} C) (coeSort.{succ (max (succ u2) u2 (succ u1)), succ (succ u2)} CategoryTheory.Cat.{u1, u2} Type.{u2} CategoryTheory.Cat.hasCoeToSort.{u2, u1} C) (CategoryTheory.Cat.str.{u1, u2} C) (CategoryTheory.CategoryStruct.id.{max u1 u2, max (succ u2) u2 (succ u1)} CategoryTheory.Cat.{u1, u2} (CategoryTheory.Bicategory.toCategoryStruct.{max u1 u2, max u1 u2, max (succ u2) u2 (succ u1)} CategoryTheory.Cat.{u1, u2} CategoryTheory.Cat.bicategory.{u1, u2}) C) Y)) (CategoryTheory.Functor.map.{u1, u1, u2, u2} (coeSort.{succ (max (succ u2) u2 (succ u1)), succ (succ u2)} CategoryTheory.Cat.{u1, u2} Type.{u2} CategoryTheory.Cat.hasCoeToSort.{u2, u1} C) (CategoryTheory.Cat.str.{u1, u2} C) (coeSort.{succ (max (succ u2) u2 (succ u1)), succ (succ u2)} CategoryTheory.Cat.{u1, u2} Type.{u2} CategoryTheory.Cat.hasCoeToSort.{u2, u1} C) (CategoryTheory.Cat.str.{u1, u2} C) (CategoryTheory.CategoryStruct.id.{max u1 u2, max (succ u2) u2 (succ u1)} CategoryTheory.Cat.{u1, u2} (CategoryTheory.Bicategory.toCategoryStruct.{max u1 u2, max u1 u2, max (succ u2) u2 (succ u1)} CategoryTheory.Cat.{u1, u2} CategoryTheory.Cat.bicategory.{u1, u2}) C) X Y f) f
-but is expected to have type
-  forall {C : CategoryTheory.Cat.{u2, u1}} {X : CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} C} {Y : CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} C} (f : Quiver.Hom.{succ u2, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} C) (CategoryTheory.Category.toCategoryStruct.{u2, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} C) (CategoryTheory.Cat.str.{u2, u1} C))) X Y), Eq.{succ u2} (Quiver.Hom.{succ u2, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} C) (CategoryTheory.Category.toCategoryStruct.{u2, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} C) (CategoryTheory.Cat.str.{u2, u1} C))) (Prefunctor.obj.{succ u2, succ u2, u1, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} C) (CategoryTheory.Category.toCategoryStruct.{u2, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} C) (CategoryTheory.Cat.str.{u2, u1} C))) (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} C) (CategoryTheory.Category.toCategoryStruct.{u2, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} C) (CategoryTheory.Cat.str.{u2, u1} C))) (CategoryTheory.Functor.toPrefunctor.{u2, u2, u1, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} C) (CategoryTheory.Cat.str.{u2, u1} C) (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} C) (CategoryTheory.Cat.str.{u2, u1} C) (CategoryTheory.CategoryStruct.id.{max u1 u2, max (succ u1) (succ u2)} CategoryTheory.Cat.{u2, u1} (CategoryTheory.Bicategory.toCategoryStruct.{max u1 u2, max u1 u2, max (succ u1) (succ u2)} CategoryTheory.Cat.{u2, u1} CategoryTheory.Cat.bicategory.{u2, u1}) C)) X) (Prefunctor.obj.{succ u2, succ u2, u1, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} C) (CategoryTheory.Category.toCategoryStruct.{u2, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} C) (CategoryTheory.Cat.str.{u2, u1} C))) (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} C) (CategoryTheory.Category.toCategoryStruct.{u2, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} C) (CategoryTheory.Cat.str.{u2, u1} C))) (CategoryTheory.Functor.toPrefunctor.{u2, u2, u1, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} C) (CategoryTheory.Cat.str.{u2, u1} C) (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} C) (CategoryTheory.Cat.str.{u2, u1} C) (CategoryTheory.CategoryStruct.id.{max u1 u2, max (succ u1) (succ u2)} CategoryTheory.Cat.{u2, u1} (CategoryTheory.Bicategory.toCategoryStruct.{max u1 u2, max u1 u2, max (succ u1) (succ u2)} CategoryTheory.Cat.{u2, u1} CategoryTheory.Cat.bicategory.{u2, u1}) C)) Y)) (Prefunctor.map.{succ u2, succ u2, u1, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} C) (CategoryTheory.Category.toCategoryStruct.{u2, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} C) (CategoryTheory.Cat.str.{u2, u1} C))) (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} C) (CategoryTheory.Category.toCategoryStruct.{u2, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} C) (CategoryTheory.Cat.str.{u2, u1} C))) (CategoryTheory.Functor.toPrefunctor.{u2, u2, u1, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} C) (CategoryTheory.Cat.str.{u2, u1} C) (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} C) (CategoryTheory.Cat.str.{u2, u1} C) (CategoryTheory.CategoryStruct.id.{max u1 u2, max (succ u1) (succ u2)} CategoryTheory.Cat.{u2, u1} (CategoryTheory.Bicategory.toCategoryStruct.{max u1 u2, max u1 u2, max (succ u1) (succ u2)} CategoryTheory.Cat.{u2, u1} CategoryTheory.Cat.bicategory.{u2, u1}) C)) X Y f) f
-Case conversion may be inaccurate. Consider using '#align category_theory.Cat.id_map CategoryTheory.Cat.id_mapₓ'. -/
 @[simp]
 theorem id_map {C : Cat} {X Y : C} (f : X ⟶ Y) : (𝟙 C : C ⥤ C).map f = f :=
   Functor.id_map f
 #align category_theory.Cat.id_map CategoryTheory.Cat.id_map
 
-/- warning: category_theory.Cat.comp_obj -> CategoryTheory.Cat.comp_obj is a dubious translation:
-lean 3 declaration is
-  forall {C : CategoryTheory.Cat.{u1, u2}} {D : CategoryTheory.Cat.{u1, u2}} {E : CategoryTheory.Cat.{u1, u2}} (F : Quiver.Hom.{succ (max u1 u2), max (succ u2) u2 (succ u1)} CategoryTheory.Cat.{u1, u2} (CategoryTheory.CategoryStruct.toQuiver.{max u1 u2, max (succ u2) u2 (succ u1)} CategoryTheory.Cat.{u1, u2} (CategoryTheory.Bicategory.toCategoryStruct.{max u1 u2, max u1 u2, max (succ u2) u2 (succ u1)} CategoryTheory.Cat.{u1, u2} CategoryTheory.Cat.bicategory.{u1, u2})) C D) (G : Quiver.Hom.{succ (max u1 u2), max (succ u2) u2 (succ u1)} CategoryTheory.Cat.{u1, u2} (CategoryTheory.CategoryStruct.toQuiver.{max u1 u2, max (succ u2) u2 (succ u1)} CategoryTheory.Cat.{u1, u2} (CategoryTheory.Bicategory.toCategoryStruct.{max u1 u2, max u1 u2, max (succ u2) u2 (succ u1)} CategoryTheory.Cat.{u1, u2} CategoryTheory.Cat.bicategory.{u1, u2})) D E) (X : coeSort.{succ (max (succ u2) u2 (succ u1)), succ (succ u2)} CategoryTheory.Cat.{u1, u2} Type.{u2} CategoryTheory.Cat.hasCoeToSort.{u2, u1} C), Eq.{succ u2} (coeSort.{succ (max (succ u2) u2 (succ u1)), succ (succ u2)} CategoryTheory.Cat.{u1, u2} Type.{u2} CategoryTheory.Cat.hasCoeToSort.{u2, u1} E) (CategoryTheory.Functor.obj.{u1, u1, u2, u2} (coeSort.{succ (max (succ u2) u2 (succ u1)), succ (succ u2)} CategoryTheory.Cat.{u1, u2} Type.{u2} CategoryTheory.Cat.hasCoeToSort.{u2, u1} C) (CategoryTheory.Cat.str.{u1, u2} C) (coeSort.{succ (max (succ u2) u2 (succ u1)), succ (succ u2)} CategoryTheory.Cat.{u1, u2} Type.{u2} CategoryTheory.Cat.hasCoeToSort.{u2, u1} E) (CategoryTheory.Cat.str.{u1, u2} E) (CategoryTheory.CategoryStruct.comp.{max u1 u2, max (succ u2) u2 (succ u1)} CategoryTheory.Cat.{u1, u2} (CategoryTheory.Bicategory.toCategoryStruct.{max u1 u2, max u1 u2, max (succ u2) u2 (succ u1)} CategoryTheory.Cat.{u1, u2} CategoryTheory.Cat.bicategory.{u1, u2}) C D E F G) X) (CategoryTheory.Functor.obj.{u1, u1, u2, u2} (coeSort.{succ (max (succ u2) u2 (succ u1)), succ (succ u2)} CategoryTheory.Cat.{u1, u2} Type.{u2} CategoryTheory.Cat.hasCoeToSort.{u2, u1} D) (CategoryTheory.Cat.str.{u1, u2} D) (coeSort.{succ (max (succ u2) u2 (succ u1)), succ (succ u2)} CategoryTheory.Cat.{u1, u2} Type.{u2} CategoryTheory.Cat.hasCoeToSort.{u2, u1} E) (CategoryTheory.Cat.str.{u1, u2} E) G (CategoryTheory.Functor.obj.{u1, u1, u2, u2} (coeSort.{succ (max (succ u2) u2 (succ u1)), succ (succ u2)} CategoryTheory.Cat.{u1, u2} Type.{u2} CategoryTheory.Cat.hasCoeToSort.{u2, u1} C) (CategoryTheory.Cat.str.{u1, u2} C) (coeSort.{succ (max (succ u2) u2 (succ u1)), succ (succ u2)} CategoryTheory.Cat.{u1, u2} Type.{u2} CategoryTheory.Cat.hasCoeToSort.{u2, u1} D) (CategoryTheory.Cat.str.{u1, u2} D) F X))
-but is expected to have type
-  forall {C : CategoryTheory.Cat.{u2, u1}} {D : CategoryTheory.Cat.{u2, u1}} {E : CategoryTheory.Cat.{u2, u1}} (F : Quiver.Hom.{max (succ u1) (succ u2), max (succ u1) (succ u2)} CategoryTheory.Cat.{u2, u1} (CategoryTheory.CategoryStruct.toQuiver.{max u1 u2, max (succ u1) (succ u2)} CategoryTheory.Cat.{u2, u1} (CategoryTheory.Bicategory.toCategoryStruct.{max u1 u2, max u1 u2, max (succ u1) (succ u2)} CategoryTheory.Cat.{u2, u1} CategoryTheory.Cat.bicategory.{u2, u1})) C D) (G : Quiver.Hom.{max (succ u1) (succ u2), max (succ u1) (succ u2)} CategoryTheory.Cat.{u2, u1} (CategoryTheory.CategoryStruct.toQuiver.{max u1 u2, max (succ u1) (succ u2)} CategoryTheory.Cat.{u2, u1} (CategoryTheory.Bicategory.toCategoryStruct.{max u1 u2, max u1 u2, max (succ u1) (succ u2)} CategoryTheory.Cat.{u2, u1} CategoryTheory.Cat.bicategory.{u2, u1})) D E) (X : CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} C), Eq.{succ u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} E) (Prefunctor.obj.{succ u2, succ u2, u1, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} C) (CategoryTheory.Category.toCategoryStruct.{u2, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} C) (CategoryTheory.Cat.str.{u2, u1} C))) (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} E) (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} E) (CategoryTheory.Category.toCategoryStruct.{u2, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} E) (CategoryTheory.Cat.str.{u2, u1} E))) (CategoryTheory.Functor.toPrefunctor.{u2, u2, u1, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} C) (CategoryTheory.Cat.str.{u2, u1} C) (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} E) (CategoryTheory.Cat.str.{u2, u1} E) (CategoryTheory.CategoryStruct.comp.{max u1 u2, max (succ u1) (succ u2)} CategoryTheory.Cat.{u2, u1} (CategoryTheory.Bicategory.toCategoryStruct.{max u1 u2, max u1 u2, max (succ u1) (succ u2)} CategoryTheory.Cat.{u2, u1} CategoryTheory.Cat.bicategory.{u2, u1}) C D E F G)) X) (Prefunctor.obj.{succ u2, succ u2, u1, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} D) (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} D) (CategoryTheory.Category.toCategoryStruct.{u2, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} D) (CategoryTheory.Cat.str.{u2, u1} D))) (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} E) (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} E) (CategoryTheory.Category.toCategoryStruct.{u2, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} E) (CategoryTheory.Cat.str.{u2, u1} E))) (CategoryTheory.Functor.toPrefunctor.{u2, u2, u1, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} D) (CategoryTheory.Cat.str.{u2, u1} D) (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} E) (CategoryTheory.Cat.str.{u2, u1} E) G) (Prefunctor.obj.{succ u2, succ u2, u1, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} C) (CategoryTheory.Category.toCategoryStruct.{u2, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} C) (CategoryTheory.Cat.str.{u2, u1} C))) (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} D) (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} D) (CategoryTheory.Category.toCategoryStruct.{u2, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} D) (CategoryTheory.Cat.str.{u2, u1} D))) (CategoryTheory.Functor.toPrefunctor.{u2, u2, u1, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} C) (CategoryTheory.Cat.str.{u2, u1} C) (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} D) (CategoryTheory.Cat.str.{u2, u1} D) F) X))
-Case conversion may be inaccurate. Consider using '#align category_theory.Cat.comp_obj CategoryTheory.Cat.comp_objₓ'. -/
 @[simp]
 theorem comp_obj {C D E : Cat} (F : C ⟶ D) (G : D ⟶ E) (X : C) : (F ≫ G).obj X = G.obj (F.obj X) :=
   Functor.comp_obj F G X
 #align category_theory.Cat.comp_obj CategoryTheory.Cat.comp_obj
 
-/- warning: category_theory.Cat.comp_map -> CategoryTheory.Cat.comp_map is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align category_theory.Cat.comp_map CategoryTheory.Cat.comp_mapₓ'. -/
 @[simp]
 theorem comp_map {C D E : Cat} (F : C ⟶ D) (G : D ⟶ E) {X Y : C} (f : X ⟶ Y) :
     (F ≫ G).map f = G.map (F.map f) :=
@@ -143,12 +128,6 @@ section
 
 attribute [local simp] eq_to_hom_map
 
-/- warning: category_theory.Cat.equiv_of_iso -> CategoryTheory.Cat.equivOfIso is a dubious translation:
-lean 3 declaration is
-  forall {C : CategoryTheory.Cat.{u1, u2}} {D : CategoryTheory.Cat.{u1, u2}}, (CategoryTheory.Iso.{max u1 u2, max (succ u2) u2 (succ u1)} CategoryTheory.Cat.{u1, u2} CategoryTheory.Cat.category.{u1, u2} C D) -> (CategoryTheory.Equivalence.{u1, u1, u2, u2} (coeSort.{succ (max (succ u2) u2 (succ u1)), succ (succ u2)} CategoryTheory.Cat.{u1, u2} Type.{u2} CategoryTheory.Cat.hasCoeToSort.{u2, u1} C) (CategoryTheory.Cat.str.{u1, u2} C) (coeSort.{succ (max (succ u2) u2 (succ u1)), succ (succ u2)} CategoryTheory.Cat.{u1, u2} Type.{u2} CategoryTheory.Cat.hasCoeToSort.{u2, u1} D) (CategoryTheory.Cat.str.{u1, u2} D))
-but is expected to have type
-  forall {C : CategoryTheory.Cat.{u1, u2}} {D : CategoryTheory.Cat.{u1, u2}}, (CategoryTheory.Iso.{max u2 u1, max (succ u2) (succ u1)} CategoryTheory.Cat.{u1, u2} CategoryTheory.Cat.category.{u1, u2} C D) -> (CategoryTheory.Equivalence.{u1, u1, u2, u2} (CategoryTheory.Bundled.α.{u2, max u2 (succ u1)} CategoryTheory.Category.{u1, u2} C) (CategoryTheory.Bundled.α.{u2, max u2 (succ u1)} CategoryTheory.Category.{u1, u2} D) (CategoryTheory.Cat.str.{u1, u2} C) (CategoryTheory.Cat.str.{u1, u2} D))
-Case conversion may be inaccurate. Consider using '#align category_theory.Cat.equiv_of_iso CategoryTheory.Cat.equivOfIsoₓ'. -/
 /-- Any isomorphism in `Cat` induces an equivalence of the underlying categories. -/
 def equivOfIso {C D : Cat} (γ : C ≅ D) : C ≌ D
     where
Diff
@@ -186,12 +186,8 @@ instance : Full typeToCat.{u}
   witness' := by
     intro X Y F
     apply Functor.ext
-    · intro x y f
-      dsimp
-      ext
-    · rintro ⟨x⟩
-      ext
-      rfl
+    · intro x y f; dsimp; ext
+    · rintro ⟨x⟩; ext; rfl
 
 end CategoryTheory
 
Diff
@@ -122,10 +122,7 @@ theorem comp_obj {C D E : Cat} (F : C ⟶ D) (G : D ⟶ E) (X : C) : (F ≫ G).o
 #align category_theory.Cat.comp_obj CategoryTheory.Cat.comp_obj
 
 /- warning: category_theory.Cat.comp_map -> CategoryTheory.Cat.comp_map is a dubious translation:
-lean 3 declaration is
-  forall {C : CategoryTheory.Cat.{u1, u2}} {D : CategoryTheory.Cat.{u1, u2}} {E : CategoryTheory.Cat.{u1, u2}} (F : Quiver.Hom.{succ (max u1 u2), max (succ u2) u2 (succ u1)} CategoryTheory.Cat.{u1, u2} (CategoryTheory.CategoryStruct.toQuiver.{max u1 u2, max (succ u2) u2 (succ u1)} CategoryTheory.Cat.{u1, u2} (CategoryTheory.Bicategory.toCategoryStruct.{max u1 u2, max u1 u2, max (succ u2) u2 (succ u1)} CategoryTheory.Cat.{u1, u2} CategoryTheory.Cat.bicategory.{u1, u2})) C D) (G : Quiver.Hom.{succ (max u1 u2), max (succ u2) u2 (succ u1)} CategoryTheory.Cat.{u1, u2} (CategoryTheory.CategoryStruct.toQuiver.{max u1 u2, max (succ u2) u2 (succ u1)} CategoryTheory.Cat.{u1, u2} (CategoryTheory.Bicategory.toCategoryStruct.{max u1 u2, max u1 u2, max (succ u2) u2 (succ u1)} CategoryTheory.Cat.{u1, u2} CategoryTheory.Cat.bicategory.{u1, u2})) D E) {X : coeSort.{succ (max (succ u2) u2 (succ u1)), succ (succ u2)} CategoryTheory.Cat.{u1, u2} Type.{u2} CategoryTheory.Cat.hasCoeToSort.{u2, u1} C} {Y : coeSort.{succ (max (succ u2) u2 (succ u1)), succ (succ u2)} CategoryTheory.Cat.{u1, u2} Type.{u2} CategoryTheory.Cat.hasCoeToSort.{u2, u1} C} (f : Quiver.Hom.{succ u1, u2} (coeSort.{succ (max (succ u2) u2 (succ u1)), succ (succ u2)} CategoryTheory.Cat.{u1, u2} Type.{u2} CategoryTheory.Cat.hasCoeToSort.{u2, u1} C) (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} (coeSort.{succ (max (succ u2) u2 (succ u1)), succ (succ u2)} CategoryTheory.Cat.{u1, u2} Type.{u2} CategoryTheory.Cat.hasCoeToSort.{u2, u1} C) (CategoryTheory.Category.toCategoryStruct.{u1, u2} (coeSort.{succ (max (succ u2) u2 (succ u1)), succ (succ u2)} CategoryTheory.Cat.{u1, u2} Type.{u2} CategoryTheory.Cat.hasCoeToSort.{u2, u1} C) (CategoryTheory.Cat.str.{u1, u2} C))) X Y), Eq.{succ u1} (Quiver.Hom.{succ u1, u2} (coeSort.{succ (max (succ u2) u2 (succ u1)), succ (succ u2)} CategoryTheory.Cat.{u1, u2} Type.{u2} CategoryTheory.Cat.hasCoeToSort.{u2, u1} E) (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} (coeSort.{succ (max (succ u2) u2 (succ u1)), succ (succ u2)} CategoryTheory.Cat.{u1, u2} Type.{u2} CategoryTheory.Cat.hasCoeToSort.{u2, u1} E) (CategoryTheory.Category.toCategoryStruct.{u1, u2} (coeSort.{succ (max (succ u2) u2 (succ u1)), succ (succ u2)} CategoryTheory.Cat.{u1, u2} Type.{u2} CategoryTheory.Cat.hasCoeToSort.{u2, u1} E) (CategoryTheory.Cat.str.{u1, u2} E))) (CategoryTheory.Functor.obj.{u1, u1, u2, u2} (coeSort.{succ (max (succ u2) u2 (succ u1)), succ (succ u2)} CategoryTheory.Cat.{u1, u2} Type.{u2} CategoryTheory.Cat.hasCoeToSort.{u2, u1} C) (CategoryTheory.Cat.str.{u1, u2} C) (coeSort.{succ (max (succ u2) u2 (succ u1)), succ (succ u2)} CategoryTheory.Cat.{u1, u2} Type.{u2} CategoryTheory.Cat.hasCoeToSort.{u2, u1} E) (CategoryTheory.Cat.str.{u1, u2} E) (CategoryTheory.CategoryStruct.comp.{max u1 u2, max (succ u2) u2 (succ u1)} CategoryTheory.Cat.{u1, u2} (CategoryTheory.Bicategory.toCategoryStruct.{max u1 u2, max u1 u2, max (succ u2) u2 (succ u1)} CategoryTheory.Cat.{u1, u2} CategoryTheory.Cat.bicategory.{u1, u2}) C D E F G) X) (CategoryTheory.Functor.obj.{u1, u1, u2, u2} (coeSort.{succ (max (succ u2) u2 (succ u1)), succ (succ u2)} CategoryTheory.Cat.{u1, u2} Type.{u2} CategoryTheory.Cat.hasCoeToSort.{u2, u1} C) (CategoryTheory.Cat.str.{u1, u2} C) (coeSort.{succ (max (succ u2) u2 (succ u1)), succ (succ u2)} CategoryTheory.Cat.{u1, u2} Type.{u2} CategoryTheory.Cat.hasCoeToSort.{u2, u1} E) (CategoryTheory.Cat.str.{u1, u2} E) (CategoryTheory.CategoryStruct.comp.{max u1 u2, max (succ u2) u2 (succ u1)} CategoryTheory.Cat.{u1, u2} (CategoryTheory.Bicategory.toCategoryStruct.{max u1 u2, max u1 u2, max (succ u2) u2 (succ u1)} CategoryTheory.Cat.{u1, u2} CategoryTheory.Cat.bicategory.{u1, u2}) C D E F G) Y)) (CategoryTheory.Functor.map.{u1, u1, u2, u2} (coeSort.{succ (max (succ u2) u2 (succ u1)), succ (succ u2)} CategoryTheory.Cat.{u1, u2} Type.{u2} CategoryTheory.Cat.hasCoeToSort.{u2, u1} C) (CategoryTheory.Cat.str.{u1, u2} C) (coeSort.{succ (max (succ u2) u2 (succ u1)), succ (succ u2)} CategoryTheory.Cat.{u1, u2} Type.{u2} CategoryTheory.Cat.hasCoeToSort.{u2, u1} E) (CategoryTheory.Cat.str.{u1, u2} E) (CategoryTheory.CategoryStruct.comp.{max u1 u2, max (succ u2) u2 (succ u1)} CategoryTheory.Cat.{u1, u2} (CategoryTheory.Bicategory.toCategoryStruct.{max u1 u2, max u1 u2, max (succ u2) u2 (succ u1)} CategoryTheory.Cat.{u1, u2} CategoryTheory.Cat.bicategory.{u1, u2}) C D E F G) X Y f) (CategoryTheory.Functor.map.{u1, u1, u2, u2} (coeSort.{succ (max (succ u2) u2 (succ u1)), succ (succ u2)} CategoryTheory.Cat.{u1, u2} Type.{u2} CategoryTheory.Cat.hasCoeToSort.{u2, u1} D) (CategoryTheory.Cat.str.{u1, u2} D) (coeSort.{succ (max (succ u2) u2 (succ u1)), succ (succ u2)} CategoryTheory.Cat.{u1, u2} Type.{u2} CategoryTheory.Cat.hasCoeToSort.{u2, u1} E) (CategoryTheory.Cat.str.{u1, u2} E) G (CategoryTheory.Functor.obj.{u1, u1, u2, u2} (coeSort.{succ (max (succ u2) u2 (succ u1)), succ (succ u2)} CategoryTheory.Cat.{u1, u2} Type.{u2} CategoryTheory.Cat.hasCoeToSort.{u2, u1} C) (CategoryTheory.Cat.str.{u1, u2} C) (coeSort.{succ (max (succ u2) u2 (succ u1)), succ (succ u2)} CategoryTheory.Cat.{u1, u2} Type.{u2} CategoryTheory.Cat.hasCoeToSort.{u2, u1} D) (CategoryTheory.Cat.str.{u1, u2} D) F X) (CategoryTheory.Functor.obj.{u1, u1, u2, u2} (coeSort.{succ (max (succ u2) u2 (succ u1)), succ (succ u2)} CategoryTheory.Cat.{u1, u2} Type.{u2} CategoryTheory.Cat.hasCoeToSort.{u2, u1} C) (CategoryTheory.Cat.str.{u1, u2} C) (coeSort.{succ (max (succ u2) u2 (succ u1)), succ (succ u2)} CategoryTheory.Cat.{u1, u2} Type.{u2} CategoryTheory.Cat.hasCoeToSort.{u2, u1} D) (CategoryTheory.Cat.str.{u1, u2} D) F Y) (CategoryTheory.Functor.map.{u1, u1, u2, u2} (coeSort.{succ (max (succ u2) u2 (succ u1)), succ (succ u2)} CategoryTheory.Cat.{u1, u2} Type.{u2} CategoryTheory.Cat.hasCoeToSort.{u2, u1} C) (CategoryTheory.Cat.str.{u1, u2} C) (coeSort.{succ (max (succ u2) u2 (succ u1)), succ (succ u2)} CategoryTheory.Cat.{u1, u2} Type.{u2} CategoryTheory.Cat.hasCoeToSort.{u2, u1} D) (CategoryTheory.Cat.str.{u1, u2} D) F X Y f))
-but is expected to have type
-  forall {C : CategoryTheory.Cat.{u2, u1}} {D : CategoryTheory.Cat.{u2, u1}} {E : CategoryTheory.Cat.{u2, u1}} (F : Quiver.Hom.{max (succ u1) (succ u2), max (succ u1) (succ u2)} CategoryTheory.Cat.{u2, u1} (CategoryTheory.CategoryStruct.toQuiver.{max u1 u2, max (succ u1) (succ u2)} CategoryTheory.Cat.{u2, u1} (CategoryTheory.Bicategory.toCategoryStruct.{max u1 u2, max u1 u2, max (succ u1) (succ u2)} CategoryTheory.Cat.{u2, u1} CategoryTheory.Cat.bicategory.{u2, u1})) C D) (G : Quiver.Hom.{max (succ u1) (succ u2), max (succ u1) (succ u2)} CategoryTheory.Cat.{u2, u1} (CategoryTheory.CategoryStruct.toQuiver.{max u1 u2, max (succ u1) (succ u2)} CategoryTheory.Cat.{u2, u1} (CategoryTheory.Bicategory.toCategoryStruct.{max u1 u2, max u1 u2, max (succ u1) (succ u2)} CategoryTheory.Cat.{u2, u1} CategoryTheory.Cat.bicategory.{u2, u1})) D E) {X : CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} C} {Y : CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} C} (f : Quiver.Hom.{succ u2, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} C) (CategoryTheory.Category.toCategoryStruct.{u2, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} C) (CategoryTheory.Cat.str.{u2, u1} C))) X Y), Eq.{succ u2} (Quiver.Hom.{succ u2, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} E) (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} E) (CategoryTheory.Category.toCategoryStruct.{u2, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} E) (CategoryTheory.Cat.str.{u2, u1} E))) (Prefunctor.obj.{succ u2, succ u2, u1, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} C) (CategoryTheory.Category.toCategoryStruct.{u2, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} C) (CategoryTheory.Cat.str.{u2, u1} C))) (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} E) (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} E) (CategoryTheory.Category.toCategoryStruct.{u2, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} E) (CategoryTheory.Cat.str.{u2, u1} E))) (CategoryTheory.Functor.toPrefunctor.{u2, u2, u1, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} C) (CategoryTheory.Cat.str.{u2, u1} C) (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} E) (CategoryTheory.Cat.str.{u2, u1} E) (CategoryTheory.CategoryStruct.comp.{max u1 u2, max (succ u1) (succ u2)} CategoryTheory.Cat.{u2, u1} (CategoryTheory.Bicategory.toCategoryStruct.{max u1 u2, max u1 u2, max (succ u1) (succ u2)} CategoryTheory.Cat.{u2, u1} CategoryTheory.Cat.bicategory.{u2, u1}) C D E F G)) X) (Prefunctor.obj.{succ u2, succ u2, u1, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} C) (CategoryTheory.Category.toCategoryStruct.{u2, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} C) (CategoryTheory.Cat.str.{u2, u1} C))) (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} E) (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} E) (CategoryTheory.Category.toCategoryStruct.{u2, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} E) (CategoryTheory.Cat.str.{u2, u1} E))) (CategoryTheory.Functor.toPrefunctor.{u2, u2, u1, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} C) (CategoryTheory.Cat.str.{u2, u1} C) (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} E) (CategoryTheory.Cat.str.{u2, u1} E) (CategoryTheory.CategoryStruct.comp.{max u1 u2, max (succ u1) (succ u2)} CategoryTheory.Cat.{u2, u1} (CategoryTheory.Bicategory.toCategoryStruct.{max u1 u2, max u1 u2, max (succ u1) (succ u2)} CategoryTheory.Cat.{u2, u1} CategoryTheory.Cat.bicategory.{u2, u1}) C D E F G)) Y)) (Prefunctor.map.{succ u2, succ u2, u1, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} C) (CategoryTheory.Category.toCategoryStruct.{u2, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} C) (CategoryTheory.Cat.str.{u2, u1} C))) (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} E) (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} E) (CategoryTheory.Category.toCategoryStruct.{u2, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} E) (CategoryTheory.Cat.str.{u2, u1} E))) (CategoryTheory.Functor.toPrefunctor.{u2, u2, u1, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} C) (CategoryTheory.Cat.str.{u2, u1} C) (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} E) (CategoryTheory.Cat.str.{u2, u1} E) (CategoryTheory.CategoryStruct.comp.{max u1 u2, max (succ u1) (succ u2)} CategoryTheory.Cat.{u2, u1} (CategoryTheory.Bicategory.toCategoryStruct.{max u1 u2, max u1 u2, max (succ u1) (succ u2)} CategoryTheory.Cat.{u2, u1} CategoryTheory.Cat.bicategory.{u2, u1}) C D E F G)) X Y f) (Prefunctor.map.{succ u2, succ u2, u1, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} D) (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} D) (CategoryTheory.Category.toCategoryStruct.{u2, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} D) (CategoryTheory.Cat.str.{u2, u1} D))) (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} E) (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} E) (CategoryTheory.Category.toCategoryStruct.{u2, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} E) (CategoryTheory.Cat.str.{u2, u1} E))) (CategoryTheory.Functor.toPrefunctor.{u2, u2, u1, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} D) (CategoryTheory.Cat.str.{u2, u1} D) (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} E) (CategoryTheory.Cat.str.{u2, u1} E) G) (Prefunctor.obj.{succ u2, succ u2, u1, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} C) (CategoryTheory.Category.toCategoryStruct.{u2, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} C) (CategoryTheory.Cat.str.{u2, u1} C))) (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} D) (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} D) (CategoryTheory.Category.toCategoryStruct.{u2, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} D) (CategoryTheory.Cat.str.{u2, u1} D))) (CategoryTheory.Functor.toPrefunctor.{u2, u2, u1, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} C) (CategoryTheory.Cat.str.{u2, u1} C) (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} D) (CategoryTheory.Cat.str.{u2, u1} D) F) X) (Prefunctor.obj.{succ u2, succ u2, u1, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} C) (CategoryTheory.Category.toCategoryStruct.{u2, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} C) (CategoryTheory.Cat.str.{u2, u1} C))) (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} D) (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} D) (CategoryTheory.Category.toCategoryStruct.{u2, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} D) (CategoryTheory.Cat.str.{u2, u1} D))) (CategoryTheory.Functor.toPrefunctor.{u2, u2, u1, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} C) (CategoryTheory.Cat.str.{u2, u1} C) (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} D) (CategoryTheory.Cat.str.{u2, u1} D) F) Y) (Prefunctor.map.{succ u2, succ u2, u1, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} C) (CategoryTheory.Category.toCategoryStruct.{u2, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} C) (CategoryTheory.Cat.str.{u2, u1} C))) (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} D) (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} D) (CategoryTheory.Category.toCategoryStruct.{u2, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} D) (CategoryTheory.Cat.str.{u2, u1} D))) (CategoryTheory.Functor.toPrefunctor.{u2, u2, u1, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} C) (CategoryTheory.Cat.str.{u2, u1} C) (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} D) (CategoryTheory.Cat.str.{u2, u1} D) F) X Y f))
+<too large>
 Case conversion may be inaccurate. Consider using '#align category_theory.Cat.comp_map CategoryTheory.Cat.comp_mapₓ'. -/
 @[simp]
 theorem comp_map {C D E : Cat} (F : C ⟶ D) (G : D ⟶ E) {X Y : C} (f : X ⟶ Y) :
Diff
@@ -77,8 +77,8 @@ instance bicategory : Bicategory.{max v u, max v u} Cat.{v, u}
   associator A B C D := Functor.associator
   leftUnitor A B := Functor.leftUnitor
   rightUnitor A B := Functor.rightUnitor
-  pentagon' A B C D E := Functor.pentagon
-  triangle' A B C := Functor.triangle
+  pentagon A B C D E := Functor.pentagon
+  triangle A B C := Functor.triangle
 #align category_theory.Cat.bicategory CategoryTheory.Cat.bicategory
 -/
 
Diff
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Yury Kudryashov
 
 ! This file was ported from Lean 3 source module category_theory.category.Cat
-! leanprover-community/mathlib commit a836c6dba9bd1ee2a0cdc9af0006a596f243031c
+! leanprover-community/mathlib commit 3dadefa3f544b1db6214777fe47910739b54c66a
 ! Please do not edit these lines, except to modify the commit id
 ! if you have ported upstream changes.
 -/
@@ -16,6 +16,9 @@ import Mathbin.CategoryTheory.Bicategory.Strict
 /-!
 # Category of categories
 
+> THIS FILE IS SYNCHRONIZED WITH MATHLIB4.
+> Any changes to this file require a corresponding PR to mathlib4.
+
 This file contains the definition of the category `Cat` of all categories.
 In this category objects are categories and
 morphisms are functors between these categories.
Diff
@@ -31,12 +31,14 @@ universe v u
 
 namespace CategoryTheory
 
+#print CategoryTheory.Cat /-
 -- intended to be used with explicit universe parameters
 /-- Category of categories. -/
 @[nolint check_univs]
 def Cat :=
   Bundled Category.{v, u}
 #align category_theory.Cat CategoryTheory.Cat
+-/
 
 namespace Cat
 
@@ -46,15 +48,20 @@ instance : Inhabited Cat :=
 instance : CoeSort Cat (Type u) :=
   ⟨Bundled.α⟩
 
+#print CategoryTheory.Cat.str /-
 instance str (C : Cat.{v, u}) : Category.{v, u} C :=
   C.str
 #align category_theory.Cat.str CategoryTheory.Cat.str
+-/
 
+#print CategoryTheory.Cat.of /-
 /-- Construct a bundled `Cat` from the underlying type and the typeclass. -/
 def of (C : Type u) [Category.{v} C] : Cat.{v, u} :=
   Bundled.of C
 #align category_theory.Cat.of CategoryTheory.Cat.of
+-/
 
+#print CategoryTheory.Cat.bicategory /-
 /-- Bicategory structure on `Cat` -/
 instance bicategory : Bicategory.{max v u, max v u} Cat.{v, u}
     where
@@ -70,7 +77,9 @@ instance bicategory : Bicategory.{max v u, max v u} Cat.{v, u}
   pentagon' A B C D E := Functor.pentagon
   triangle' A B C := Functor.triangle
 #align category_theory.Cat.bicategory CategoryTheory.Cat.bicategory
+-/
 
+#print CategoryTheory.Cat.bicategory.strict /-
 /-- `Cat` is a strict bicategory. -/
 instance bicategory.strict : Bicategory.Strict Cat.{v, u}
     where
@@ -78,39 +87,68 @@ instance bicategory.strict : Bicategory.Strict Cat.{v, u}
   comp_id' C D F := by cases F <;> rfl
   assoc' := by intros <;> rfl
 #align category_theory.Cat.bicategory.strict CategoryTheory.Cat.bicategory.strict
+-/
 
+#print CategoryTheory.Cat.category /-
 /-- Category structure on `Cat` -/
 instance category : LargeCategory.{max v u} Cat.{v, u} :=
   StrictBicategory.category Cat.{v, u}
 #align category_theory.Cat.category CategoryTheory.Cat.category
+-/
 
+/- warning: category_theory.Cat.id_map -> CategoryTheory.Cat.id_map is a dubious translation:
+lean 3 declaration is
+  forall {C : CategoryTheory.Cat.{u1, u2}} {X : coeSort.{succ (max (succ u2) u2 (succ u1)), succ (succ u2)} CategoryTheory.Cat.{u1, u2} Type.{u2} CategoryTheory.Cat.hasCoeToSort.{u2, u1} C} {Y : coeSort.{succ (max (succ u2) u2 (succ u1)), succ (succ u2)} CategoryTheory.Cat.{u1, u2} Type.{u2} CategoryTheory.Cat.hasCoeToSort.{u2, u1} C} (f : Quiver.Hom.{succ u1, u2} (coeSort.{succ (max (succ u2) u2 (succ u1)), succ (succ u2)} CategoryTheory.Cat.{u1, u2} Type.{u2} CategoryTheory.Cat.hasCoeToSort.{u2, u1} C) (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} (coeSort.{succ (max (succ u2) u2 (succ u1)), succ (succ u2)} CategoryTheory.Cat.{u1, u2} Type.{u2} CategoryTheory.Cat.hasCoeToSort.{u2, u1} C) (CategoryTheory.Category.toCategoryStruct.{u1, u2} (coeSort.{succ (max (succ u2) u2 (succ u1)), succ (succ u2)} CategoryTheory.Cat.{u1, u2} Type.{u2} CategoryTheory.Cat.hasCoeToSort.{u2, u1} C) (CategoryTheory.Cat.str.{u1, u2} C))) X Y), Eq.{succ u1} (Quiver.Hom.{succ u1, u2} (coeSort.{succ (max (succ u2) u2 (succ u1)), succ (succ u2)} CategoryTheory.Cat.{u1, u2} Type.{u2} CategoryTheory.Cat.hasCoeToSort.{u2, u1} C) (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} (coeSort.{succ (max (succ u2) u2 (succ u1)), succ (succ u2)} CategoryTheory.Cat.{u1, u2} Type.{u2} CategoryTheory.Cat.hasCoeToSort.{u2, u1} C) (CategoryTheory.Category.toCategoryStruct.{u1, u2} (coeSort.{succ (max (succ u2) u2 (succ u1)), succ (succ u2)} CategoryTheory.Cat.{u1, u2} Type.{u2} CategoryTheory.Cat.hasCoeToSort.{u2, u1} C) (CategoryTheory.Cat.str.{u1, u2} C))) (CategoryTheory.Functor.obj.{u1, u1, u2, u2} (coeSort.{succ (max (succ u2) u2 (succ u1)), succ (succ u2)} CategoryTheory.Cat.{u1, u2} Type.{u2} CategoryTheory.Cat.hasCoeToSort.{u2, u1} C) (CategoryTheory.Cat.str.{u1, u2} C) (coeSort.{succ (max (succ u2) u2 (succ u1)), succ (succ u2)} CategoryTheory.Cat.{u1, u2} Type.{u2} CategoryTheory.Cat.hasCoeToSort.{u2, u1} C) (CategoryTheory.Cat.str.{u1, u2} C) (CategoryTheory.CategoryStruct.id.{max u1 u2, max (succ u2) u2 (succ u1)} CategoryTheory.Cat.{u1, u2} (CategoryTheory.Bicategory.toCategoryStruct.{max u1 u2, max u1 u2, max (succ u2) u2 (succ u1)} CategoryTheory.Cat.{u1, u2} CategoryTheory.Cat.bicategory.{u1, u2}) C) X) (CategoryTheory.Functor.obj.{u1, u1, u2, u2} (coeSort.{succ (max (succ u2) u2 (succ u1)), succ (succ u2)} CategoryTheory.Cat.{u1, u2} Type.{u2} CategoryTheory.Cat.hasCoeToSort.{u2, u1} C) (CategoryTheory.Cat.str.{u1, u2} C) (coeSort.{succ (max (succ u2) u2 (succ u1)), succ (succ u2)} CategoryTheory.Cat.{u1, u2} Type.{u2} CategoryTheory.Cat.hasCoeToSort.{u2, u1} C) (CategoryTheory.Cat.str.{u1, u2} C) (CategoryTheory.CategoryStruct.id.{max u1 u2, max (succ u2) u2 (succ u1)} CategoryTheory.Cat.{u1, u2} (CategoryTheory.Bicategory.toCategoryStruct.{max u1 u2, max u1 u2, max (succ u2) u2 (succ u1)} CategoryTheory.Cat.{u1, u2} CategoryTheory.Cat.bicategory.{u1, u2}) C) Y)) (CategoryTheory.Functor.map.{u1, u1, u2, u2} (coeSort.{succ (max (succ u2) u2 (succ u1)), succ (succ u2)} CategoryTheory.Cat.{u1, u2} Type.{u2} CategoryTheory.Cat.hasCoeToSort.{u2, u1} C) (CategoryTheory.Cat.str.{u1, u2} C) (coeSort.{succ (max (succ u2) u2 (succ u1)), succ (succ u2)} CategoryTheory.Cat.{u1, u2} Type.{u2} CategoryTheory.Cat.hasCoeToSort.{u2, u1} C) (CategoryTheory.Cat.str.{u1, u2} C) (CategoryTheory.CategoryStruct.id.{max u1 u2, max (succ u2) u2 (succ u1)} CategoryTheory.Cat.{u1, u2} (CategoryTheory.Bicategory.toCategoryStruct.{max u1 u2, max u1 u2, max (succ u2) u2 (succ u1)} CategoryTheory.Cat.{u1, u2} CategoryTheory.Cat.bicategory.{u1, u2}) C) X Y f) f
+but is expected to have type
+  forall {C : CategoryTheory.Cat.{u2, u1}} {X : CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} C} {Y : CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} C} (f : Quiver.Hom.{succ u2, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} C) (CategoryTheory.Category.toCategoryStruct.{u2, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} C) (CategoryTheory.Cat.str.{u2, u1} C))) X Y), Eq.{succ u2} (Quiver.Hom.{succ u2, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} C) (CategoryTheory.Category.toCategoryStruct.{u2, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} C) (CategoryTheory.Cat.str.{u2, u1} C))) (Prefunctor.obj.{succ u2, succ u2, u1, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} C) (CategoryTheory.Category.toCategoryStruct.{u2, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} C) (CategoryTheory.Cat.str.{u2, u1} C))) (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} C) (CategoryTheory.Category.toCategoryStruct.{u2, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} C) (CategoryTheory.Cat.str.{u2, u1} C))) (CategoryTheory.Functor.toPrefunctor.{u2, u2, u1, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} C) (CategoryTheory.Cat.str.{u2, u1} C) (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} C) (CategoryTheory.Cat.str.{u2, u1} C) (CategoryTheory.CategoryStruct.id.{max u1 u2, max (succ u1) (succ u2)} CategoryTheory.Cat.{u2, u1} (CategoryTheory.Bicategory.toCategoryStruct.{max u1 u2, max u1 u2, max (succ u1) (succ u2)} CategoryTheory.Cat.{u2, u1} CategoryTheory.Cat.bicategory.{u2, u1}) C)) X) (Prefunctor.obj.{succ u2, succ u2, u1, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} C) (CategoryTheory.Category.toCategoryStruct.{u2, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} C) (CategoryTheory.Cat.str.{u2, u1} C))) (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} C) (CategoryTheory.Category.toCategoryStruct.{u2, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} C) (CategoryTheory.Cat.str.{u2, u1} C))) (CategoryTheory.Functor.toPrefunctor.{u2, u2, u1, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} C) (CategoryTheory.Cat.str.{u2, u1} C) (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} C) (CategoryTheory.Cat.str.{u2, u1} C) (CategoryTheory.CategoryStruct.id.{max u1 u2, max (succ u1) (succ u2)} CategoryTheory.Cat.{u2, u1} (CategoryTheory.Bicategory.toCategoryStruct.{max u1 u2, max u1 u2, max (succ u1) (succ u2)} CategoryTheory.Cat.{u2, u1} CategoryTheory.Cat.bicategory.{u2, u1}) C)) Y)) (Prefunctor.map.{succ u2, succ u2, u1, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} C) (CategoryTheory.Category.toCategoryStruct.{u2, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} C) (CategoryTheory.Cat.str.{u2, u1} C))) (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} C) (CategoryTheory.Category.toCategoryStruct.{u2, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} C) (CategoryTheory.Cat.str.{u2, u1} C))) (CategoryTheory.Functor.toPrefunctor.{u2, u2, u1, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} C) (CategoryTheory.Cat.str.{u2, u1} C) (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} C) (CategoryTheory.Cat.str.{u2, u1} C) (CategoryTheory.CategoryStruct.id.{max u1 u2, max (succ u1) (succ u2)} CategoryTheory.Cat.{u2, u1} (CategoryTheory.Bicategory.toCategoryStruct.{max u1 u2, max u1 u2, max (succ u1) (succ u2)} CategoryTheory.Cat.{u2, u1} CategoryTheory.Cat.bicategory.{u2, u1}) C)) X Y f) f
+Case conversion may be inaccurate. Consider using '#align category_theory.Cat.id_map CategoryTheory.Cat.id_mapₓ'. -/
 @[simp]
 theorem id_map {C : Cat} {X Y : C} (f : X ⟶ Y) : (𝟙 C : C ⥤ C).map f = f :=
   Functor.id_map f
 #align category_theory.Cat.id_map CategoryTheory.Cat.id_map
 
+/- warning: category_theory.Cat.comp_obj -> CategoryTheory.Cat.comp_obj is a dubious translation:
+lean 3 declaration is
+  forall {C : CategoryTheory.Cat.{u1, u2}} {D : CategoryTheory.Cat.{u1, u2}} {E : CategoryTheory.Cat.{u1, u2}} (F : Quiver.Hom.{succ (max u1 u2), max (succ u2) u2 (succ u1)} CategoryTheory.Cat.{u1, u2} (CategoryTheory.CategoryStruct.toQuiver.{max u1 u2, max (succ u2) u2 (succ u1)} CategoryTheory.Cat.{u1, u2} (CategoryTheory.Bicategory.toCategoryStruct.{max u1 u2, max u1 u2, max (succ u2) u2 (succ u1)} CategoryTheory.Cat.{u1, u2} CategoryTheory.Cat.bicategory.{u1, u2})) C D) (G : Quiver.Hom.{succ (max u1 u2), max (succ u2) u2 (succ u1)} CategoryTheory.Cat.{u1, u2} (CategoryTheory.CategoryStruct.toQuiver.{max u1 u2, max (succ u2) u2 (succ u1)} CategoryTheory.Cat.{u1, u2} (CategoryTheory.Bicategory.toCategoryStruct.{max u1 u2, max u1 u2, max (succ u2) u2 (succ u1)} CategoryTheory.Cat.{u1, u2} CategoryTheory.Cat.bicategory.{u1, u2})) D E) (X : coeSort.{succ (max (succ u2) u2 (succ u1)), succ (succ u2)} CategoryTheory.Cat.{u1, u2} Type.{u2} CategoryTheory.Cat.hasCoeToSort.{u2, u1} C), Eq.{succ u2} (coeSort.{succ (max (succ u2) u2 (succ u1)), succ (succ u2)} CategoryTheory.Cat.{u1, u2} Type.{u2} CategoryTheory.Cat.hasCoeToSort.{u2, u1} E) (CategoryTheory.Functor.obj.{u1, u1, u2, u2} (coeSort.{succ (max (succ u2) u2 (succ u1)), succ (succ u2)} CategoryTheory.Cat.{u1, u2} Type.{u2} CategoryTheory.Cat.hasCoeToSort.{u2, u1} C) (CategoryTheory.Cat.str.{u1, u2} C) (coeSort.{succ (max (succ u2) u2 (succ u1)), succ (succ u2)} CategoryTheory.Cat.{u1, u2} Type.{u2} CategoryTheory.Cat.hasCoeToSort.{u2, u1} E) (CategoryTheory.Cat.str.{u1, u2} E) (CategoryTheory.CategoryStruct.comp.{max u1 u2, max (succ u2) u2 (succ u1)} CategoryTheory.Cat.{u1, u2} (CategoryTheory.Bicategory.toCategoryStruct.{max u1 u2, max u1 u2, max (succ u2) u2 (succ u1)} CategoryTheory.Cat.{u1, u2} CategoryTheory.Cat.bicategory.{u1, u2}) C D E F G) X) (CategoryTheory.Functor.obj.{u1, u1, u2, u2} (coeSort.{succ (max (succ u2) u2 (succ u1)), succ (succ u2)} CategoryTheory.Cat.{u1, u2} Type.{u2} CategoryTheory.Cat.hasCoeToSort.{u2, u1} D) (CategoryTheory.Cat.str.{u1, u2} D) (coeSort.{succ (max (succ u2) u2 (succ u1)), succ (succ u2)} CategoryTheory.Cat.{u1, u2} Type.{u2} CategoryTheory.Cat.hasCoeToSort.{u2, u1} E) (CategoryTheory.Cat.str.{u1, u2} E) G (CategoryTheory.Functor.obj.{u1, u1, u2, u2} (coeSort.{succ (max (succ u2) u2 (succ u1)), succ (succ u2)} CategoryTheory.Cat.{u1, u2} Type.{u2} CategoryTheory.Cat.hasCoeToSort.{u2, u1} C) (CategoryTheory.Cat.str.{u1, u2} C) (coeSort.{succ (max (succ u2) u2 (succ u1)), succ (succ u2)} CategoryTheory.Cat.{u1, u2} Type.{u2} CategoryTheory.Cat.hasCoeToSort.{u2, u1} D) (CategoryTheory.Cat.str.{u1, u2} D) F X))
+but is expected to have type
+  forall {C : CategoryTheory.Cat.{u2, u1}} {D : CategoryTheory.Cat.{u2, u1}} {E : CategoryTheory.Cat.{u2, u1}} (F : Quiver.Hom.{max (succ u1) (succ u2), max (succ u1) (succ u2)} CategoryTheory.Cat.{u2, u1} (CategoryTheory.CategoryStruct.toQuiver.{max u1 u2, max (succ u1) (succ u2)} CategoryTheory.Cat.{u2, u1} (CategoryTheory.Bicategory.toCategoryStruct.{max u1 u2, max u1 u2, max (succ u1) (succ u2)} CategoryTheory.Cat.{u2, u1} CategoryTheory.Cat.bicategory.{u2, u1})) C D) (G : Quiver.Hom.{max (succ u1) (succ u2), max (succ u1) (succ u2)} CategoryTheory.Cat.{u2, u1} (CategoryTheory.CategoryStruct.toQuiver.{max u1 u2, max (succ u1) (succ u2)} CategoryTheory.Cat.{u2, u1} (CategoryTheory.Bicategory.toCategoryStruct.{max u1 u2, max u1 u2, max (succ u1) (succ u2)} CategoryTheory.Cat.{u2, u1} CategoryTheory.Cat.bicategory.{u2, u1})) D E) (X : CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} C), Eq.{succ u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} E) (Prefunctor.obj.{succ u2, succ u2, u1, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} C) (CategoryTheory.Category.toCategoryStruct.{u2, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} C) (CategoryTheory.Cat.str.{u2, u1} C))) (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} E) (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} E) (CategoryTheory.Category.toCategoryStruct.{u2, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} E) (CategoryTheory.Cat.str.{u2, u1} E))) (CategoryTheory.Functor.toPrefunctor.{u2, u2, u1, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} C) (CategoryTheory.Cat.str.{u2, u1} C) (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} E) (CategoryTheory.Cat.str.{u2, u1} E) (CategoryTheory.CategoryStruct.comp.{max u1 u2, max (succ u1) (succ u2)} CategoryTheory.Cat.{u2, u1} (CategoryTheory.Bicategory.toCategoryStruct.{max u1 u2, max u1 u2, max (succ u1) (succ u2)} CategoryTheory.Cat.{u2, u1} CategoryTheory.Cat.bicategory.{u2, u1}) C D E F G)) X) (Prefunctor.obj.{succ u2, succ u2, u1, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} D) (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} D) (CategoryTheory.Category.toCategoryStruct.{u2, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} D) (CategoryTheory.Cat.str.{u2, u1} D))) (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} E) (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} E) (CategoryTheory.Category.toCategoryStruct.{u2, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} E) (CategoryTheory.Cat.str.{u2, u1} E))) (CategoryTheory.Functor.toPrefunctor.{u2, u2, u1, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} D) (CategoryTheory.Cat.str.{u2, u1} D) (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} E) (CategoryTheory.Cat.str.{u2, u1} E) G) (Prefunctor.obj.{succ u2, succ u2, u1, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} C) (CategoryTheory.Category.toCategoryStruct.{u2, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} C) (CategoryTheory.Cat.str.{u2, u1} C))) (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} D) (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} D) (CategoryTheory.Category.toCategoryStruct.{u2, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} D) (CategoryTheory.Cat.str.{u2, u1} D))) (CategoryTheory.Functor.toPrefunctor.{u2, u2, u1, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} C) (CategoryTheory.Cat.str.{u2, u1} C) (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} D) (CategoryTheory.Cat.str.{u2, u1} D) F) X))
+Case conversion may be inaccurate. Consider using '#align category_theory.Cat.comp_obj CategoryTheory.Cat.comp_objₓ'. -/
 @[simp]
 theorem comp_obj {C D E : Cat} (F : C ⟶ D) (G : D ⟶ E) (X : C) : (F ≫ G).obj X = G.obj (F.obj X) :=
   Functor.comp_obj F G X
 #align category_theory.Cat.comp_obj CategoryTheory.Cat.comp_obj
 
+/- warning: category_theory.Cat.comp_map -> CategoryTheory.Cat.comp_map is a dubious translation:
+lean 3 declaration is
+  forall {C : CategoryTheory.Cat.{u1, u2}} {D : CategoryTheory.Cat.{u1, u2}} {E : CategoryTheory.Cat.{u1, u2}} (F : Quiver.Hom.{succ (max u1 u2), max (succ u2) u2 (succ u1)} CategoryTheory.Cat.{u1, u2} (CategoryTheory.CategoryStruct.toQuiver.{max u1 u2, max (succ u2) u2 (succ u1)} CategoryTheory.Cat.{u1, u2} (CategoryTheory.Bicategory.toCategoryStruct.{max u1 u2, max u1 u2, max (succ u2) u2 (succ u1)} CategoryTheory.Cat.{u1, u2} CategoryTheory.Cat.bicategory.{u1, u2})) C D) (G : Quiver.Hom.{succ (max u1 u2), max (succ u2) u2 (succ u1)} CategoryTheory.Cat.{u1, u2} (CategoryTheory.CategoryStruct.toQuiver.{max u1 u2, max (succ u2) u2 (succ u1)} CategoryTheory.Cat.{u1, u2} (CategoryTheory.Bicategory.toCategoryStruct.{max u1 u2, max u1 u2, max (succ u2) u2 (succ u1)} CategoryTheory.Cat.{u1, u2} CategoryTheory.Cat.bicategory.{u1, u2})) D E) {X : coeSort.{succ (max (succ u2) u2 (succ u1)), succ (succ u2)} CategoryTheory.Cat.{u1, u2} Type.{u2} CategoryTheory.Cat.hasCoeToSort.{u2, u1} C} {Y : coeSort.{succ (max (succ u2) u2 (succ u1)), succ (succ u2)} CategoryTheory.Cat.{u1, u2} Type.{u2} CategoryTheory.Cat.hasCoeToSort.{u2, u1} C} (f : Quiver.Hom.{succ u1, u2} (coeSort.{succ (max (succ u2) u2 (succ u1)), succ (succ u2)} CategoryTheory.Cat.{u1, u2} Type.{u2} CategoryTheory.Cat.hasCoeToSort.{u2, u1} C) (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} (coeSort.{succ (max (succ u2) u2 (succ u1)), succ (succ u2)} CategoryTheory.Cat.{u1, u2} Type.{u2} CategoryTheory.Cat.hasCoeToSort.{u2, u1} C) (CategoryTheory.Category.toCategoryStruct.{u1, u2} (coeSort.{succ (max (succ u2) u2 (succ u1)), succ (succ u2)} CategoryTheory.Cat.{u1, u2} Type.{u2} CategoryTheory.Cat.hasCoeToSort.{u2, u1} C) (CategoryTheory.Cat.str.{u1, u2} C))) X Y), Eq.{succ u1} (Quiver.Hom.{succ u1, u2} (coeSort.{succ (max (succ u2) u2 (succ u1)), succ (succ u2)} CategoryTheory.Cat.{u1, u2} Type.{u2} CategoryTheory.Cat.hasCoeToSort.{u2, u1} E) (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} (coeSort.{succ (max (succ u2) u2 (succ u1)), succ (succ u2)} CategoryTheory.Cat.{u1, u2} Type.{u2} CategoryTheory.Cat.hasCoeToSort.{u2, u1} E) (CategoryTheory.Category.toCategoryStruct.{u1, u2} (coeSort.{succ (max (succ u2) u2 (succ u1)), succ (succ u2)} CategoryTheory.Cat.{u1, u2} Type.{u2} CategoryTheory.Cat.hasCoeToSort.{u2, u1} E) (CategoryTheory.Cat.str.{u1, u2} E))) (CategoryTheory.Functor.obj.{u1, u1, u2, u2} (coeSort.{succ (max (succ u2) u2 (succ u1)), succ (succ u2)} CategoryTheory.Cat.{u1, u2} Type.{u2} CategoryTheory.Cat.hasCoeToSort.{u2, u1} C) (CategoryTheory.Cat.str.{u1, u2} C) (coeSort.{succ (max (succ u2) u2 (succ u1)), succ (succ u2)} CategoryTheory.Cat.{u1, u2} Type.{u2} CategoryTheory.Cat.hasCoeToSort.{u2, u1} E) (CategoryTheory.Cat.str.{u1, u2} E) (CategoryTheory.CategoryStruct.comp.{max u1 u2, max (succ u2) u2 (succ u1)} CategoryTheory.Cat.{u1, u2} (CategoryTheory.Bicategory.toCategoryStruct.{max u1 u2, max u1 u2, max (succ u2) u2 (succ u1)} CategoryTheory.Cat.{u1, u2} CategoryTheory.Cat.bicategory.{u1, u2}) C D E F G) X) (CategoryTheory.Functor.obj.{u1, u1, u2, u2} (coeSort.{succ (max (succ u2) u2 (succ u1)), succ (succ u2)} CategoryTheory.Cat.{u1, u2} Type.{u2} CategoryTheory.Cat.hasCoeToSort.{u2, u1} C) (CategoryTheory.Cat.str.{u1, u2} C) (coeSort.{succ (max (succ u2) u2 (succ u1)), succ (succ u2)} CategoryTheory.Cat.{u1, u2} Type.{u2} CategoryTheory.Cat.hasCoeToSort.{u2, u1} E) (CategoryTheory.Cat.str.{u1, u2} E) (CategoryTheory.CategoryStruct.comp.{max u1 u2, max (succ u2) u2 (succ u1)} CategoryTheory.Cat.{u1, u2} (CategoryTheory.Bicategory.toCategoryStruct.{max u1 u2, max u1 u2, max (succ u2) u2 (succ u1)} CategoryTheory.Cat.{u1, u2} CategoryTheory.Cat.bicategory.{u1, u2}) C D E F G) Y)) (CategoryTheory.Functor.map.{u1, u1, u2, u2} (coeSort.{succ (max (succ u2) u2 (succ u1)), succ (succ u2)} CategoryTheory.Cat.{u1, u2} Type.{u2} CategoryTheory.Cat.hasCoeToSort.{u2, u1} C) (CategoryTheory.Cat.str.{u1, u2} C) (coeSort.{succ (max (succ u2) u2 (succ u1)), succ (succ u2)} CategoryTheory.Cat.{u1, u2} Type.{u2} CategoryTheory.Cat.hasCoeToSort.{u2, u1} E) (CategoryTheory.Cat.str.{u1, u2} E) (CategoryTheory.CategoryStruct.comp.{max u1 u2, max (succ u2) u2 (succ u1)} CategoryTheory.Cat.{u1, u2} (CategoryTheory.Bicategory.toCategoryStruct.{max u1 u2, max u1 u2, max (succ u2) u2 (succ u1)} CategoryTheory.Cat.{u1, u2} CategoryTheory.Cat.bicategory.{u1, u2}) C D E F G) X Y f) (CategoryTheory.Functor.map.{u1, u1, u2, u2} (coeSort.{succ (max (succ u2) u2 (succ u1)), succ (succ u2)} CategoryTheory.Cat.{u1, u2} Type.{u2} CategoryTheory.Cat.hasCoeToSort.{u2, u1} D) (CategoryTheory.Cat.str.{u1, u2} D) (coeSort.{succ (max (succ u2) u2 (succ u1)), succ (succ u2)} CategoryTheory.Cat.{u1, u2} Type.{u2} CategoryTheory.Cat.hasCoeToSort.{u2, u1} E) (CategoryTheory.Cat.str.{u1, u2} E) G (CategoryTheory.Functor.obj.{u1, u1, u2, u2} (coeSort.{succ (max (succ u2) u2 (succ u1)), succ (succ u2)} CategoryTheory.Cat.{u1, u2} Type.{u2} CategoryTheory.Cat.hasCoeToSort.{u2, u1} C) (CategoryTheory.Cat.str.{u1, u2} C) (coeSort.{succ (max (succ u2) u2 (succ u1)), succ (succ u2)} CategoryTheory.Cat.{u1, u2} Type.{u2} CategoryTheory.Cat.hasCoeToSort.{u2, u1} D) (CategoryTheory.Cat.str.{u1, u2} D) F X) (CategoryTheory.Functor.obj.{u1, u1, u2, u2} (coeSort.{succ (max (succ u2) u2 (succ u1)), succ (succ u2)} CategoryTheory.Cat.{u1, u2} Type.{u2} CategoryTheory.Cat.hasCoeToSort.{u2, u1} C) (CategoryTheory.Cat.str.{u1, u2} C) (coeSort.{succ (max (succ u2) u2 (succ u1)), succ (succ u2)} CategoryTheory.Cat.{u1, u2} Type.{u2} CategoryTheory.Cat.hasCoeToSort.{u2, u1} D) (CategoryTheory.Cat.str.{u1, u2} D) F Y) (CategoryTheory.Functor.map.{u1, u1, u2, u2} (coeSort.{succ (max (succ u2) u2 (succ u1)), succ (succ u2)} CategoryTheory.Cat.{u1, u2} Type.{u2} CategoryTheory.Cat.hasCoeToSort.{u2, u1} C) (CategoryTheory.Cat.str.{u1, u2} C) (coeSort.{succ (max (succ u2) u2 (succ u1)), succ (succ u2)} CategoryTheory.Cat.{u1, u2} Type.{u2} CategoryTheory.Cat.hasCoeToSort.{u2, u1} D) (CategoryTheory.Cat.str.{u1, u2} D) F X Y f))
+but is expected to have type
+  forall {C : CategoryTheory.Cat.{u2, u1}} {D : CategoryTheory.Cat.{u2, u1}} {E : CategoryTheory.Cat.{u2, u1}} (F : Quiver.Hom.{max (succ u1) (succ u2), max (succ u1) (succ u2)} CategoryTheory.Cat.{u2, u1} (CategoryTheory.CategoryStruct.toQuiver.{max u1 u2, max (succ u1) (succ u2)} CategoryTheory.Cat.{u2, u1} (CategoryTheory.Bicategory.toCategoryStruct.{max u1 u2, max u1 u2, max (succ u1) (succ u2)} CategoryTheory.Cat.{u2, u1} CategoryTheory.Cat.bicategory.{u2, u1})) C D) (G : Quiver.Hom.{max (succ u1) (succ u2), max (succ u1) (succ u2)} CategoryTheory.Cat.{u2, u1} (CategoryTheory.CategoryStruct.toQuiver.{max u1 u2, max (succ u1) (succ u2)} CategoryTheory.Cat.{u2, u1} (CategoryTheory.Bicategory.toCategoryStruct.{max u1 u2, max u1 u2, max (succ u1) (succ u2)} CategoryTheory.Cat.{u2, u1} CategoryTheory.Cat.bicategory.{u2, u1})) D E) {X : CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} C} {Y : CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} C} (f : Quiver.Hom.{succ u2, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} C) (CategoryTheory.Category.toCategoryStruct.{u2, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} C) (CategoryTheory.Cat.str.{u2, u1} C))) X Y), Eq.{succ u2} (Quiver.Hom.{succ u2, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} E) (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} E) (CategoryTheory.Category.toCategoryStruct.{u2, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} E) (CategoryTheory.Cat.str.{u2, u1} E))) (Prefunctor.obj.{succ u2, succ u2, u1, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} C) (CategoryTheory.Category.toCategoryStruct.{u2, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} C) (CategoryTheory.Cat.str.{u2, u1} C))) (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} E) (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} E) (CategoryTheory.Category.toCategoryStruct.{u2, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} E) (CategoryTheory.Cat.str.{u2, u1} E))) (CategoryTheory.Functor.toPrefunctor.{u2, u2, u1, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} C) (CategoryTheory.Cat.str.{u2, u1} C) (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} E) (CategoryTheory.Cat.str.{u2, u1} E) (CategoryTheory.CategoryStruct.comp.{max u1 u2, max (succ u1) (succ u2)} CategoryTheory.Cat.{u2, u1} (CategoryTheory.Bicategory.toCategoryStruct.{max u1 u2, max u1 u2, max (succ u1) (succ u2)} CategoryTheory.Cat.{u2, u1} CategoryTheory.Cat.bicategory.{u2, u1}) C D E F G)) X) (Prefunctor.obj.{succ u2, succ u2, u1, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} C) (CategoryTheory.Category.toCategoryStruct.{u2, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} C) (CategoryTheory.Cat.str.{u2, u1} C))) (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} E) (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} E) (CategoryTheory.Category.toCategoryStruct.{u2, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} E) (CategoryTheory.Cat.str.{u2, u1} E))) (CategoryTheory.Functor.toPrefunctor.{u2, u2, u1, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} C) (CategoryTheory.Cat.str.{u2, u1} C) (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} E) (CategoryTheory.Cat.str.{u2, u1} E) (CategoryTheory.CategoryStruct.comp.{max u1 u2, max (succ u1) (succ u2)} CategoryTheory.Cat.{u2, u1} (CategoryTheory.Bicategory.toCategoryStruct.{max u1 u2, max u1 u2, max (succ u1) (succ u2)} CategoryTheory.Cat.{u2, u1} CategoryTheory.Cat.bicategory.{u2, u1}) C D E F G)) Y)) (Prefunctor.map.{succ u2, succ u2, u1, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} C) (CategoryTheory.Category.toCategoryStruct.{u2, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} C) (CategoryTheory.Cat.str.{u2, u1} C))) (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} E) (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} E) (CategoryTheory.Category.toCategoryStruct.{u2, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} E) (CategoryTheory.Cat.str.{u2, u1} E))) (CategoryTheory.Functor.toPrefunctor.{u2, u2, u1, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} C) (CategoryTheory.Cat.str.{u2, u1} C) (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} E) (CategoryTheory.Cat.str.{u2, u1} E) (CategoryTheory.CategoryStruct.comp.{max u1 u2, max (succ u1) (succ u2)} CategoryTheory.Cat.{u2, u1} (CategoryTheory.Bicategory.toCategoryStruct.{max u1 u2, max u1 u2, max (succ u1) (succ u2)} CategoryTheory.Cat.{u2, u1} CategoryTheory.Cat.bicategory.{u2, u1}) C D E F G)) X Y f) (Prefunctor.map.{succ u2, succ u2, u1, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} D) (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} D) (CategoryTheory.Category.toCategoryStruct.{u2, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} D) (CategoryTheory.Cat.str.{u2, u1} D))) (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} E) (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} E) (CategoryTheory.Category.toCategoryStruct.{u2, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} E) (CategoryTheory.Cat.str.{u2, u1} E))) (CategoryTheory.Functor.toPrefunctor.{u2, u2, u1, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} D) (CategoryTheory.Cat.str.{u2, u1} D) (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} E) (CategoryTheory.Cat.str.{u2, u1} E) G) (Prefunctor.obj.{succ u2, succ u2, u1, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} C) (CategoryTheory.Category.toCategoryStruct.{u2, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} C) (CategoryTheory.Cat.str.{u2, u1} C))) (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} D) (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} D) (CategoryTheory.Category.toCategoryStruct.{u2, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} D) (CategoryTheory.Cat.str.{u2, u1} D))) (CategoryTheory.Functor.toPrefunctor.{u2, u2, u1, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} C) (CategoryTheory.Cat.str.{u2, u1} C) (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} D) (CategoryTheory.Cat.str.{u2, u1} D) F) X) (Prefunctor.obj.{succ u2, succ u2, u1, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} C) (CategoryTheory.Category.toCategoryStruct.{u2, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} C) (CategoryTheory.Cat.str.{u2, u1} C))) (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} D) (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} D) (CategoryTheory.Category.toCategoryStruct.{u2, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} D) (CategoryTheory.Cat.str.{u2, u1} D))) (CategoryTheory.Functor.toPrefunctor.{u2, u2, u1, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} C) (CategoryTheory.Cat.str.{u2, u1} C) (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} D) (CategoryTheory.Cat.str.{u2, u1} D) F) Y) (Prefunctor.map.{succ u2, succ u2, u1, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} C) (CategoryTheory.Category.toCategoryStruct.{u2, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} C) (CategoryTheory.Cat.str.{u2, u1} C))) (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} D) (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} D) (CategoryTheory.Category.toCategoryStruct.{u2, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} D) (CategoryTheory.Cat.str.{u2, u1} D))) (CategoryTheory.Functor.toPrefunctor.{u2, u2, u1, u1} (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} C) (CategoryTheory.Cat.str.{u2, u1} C) (CategoryTheory.Bundled.α.{u1, max u1 (succ u2)} CategoryTheory.Category.{u2, u1} D) (CategoryTheory.Cat.str.{u2, u1} D) F) X Y f))
+Case conversion may be inaccurate. Consider using '#align category_theory.Cat.comp_map CategoryTheory.Cat.comp_mapₓ'. -/
 @[simp]
 theorem comp_map {C D E : Cat} (F : C ⟶ D) (G : D ⟶ E) {X Y : C} (f : X ⟶ Y) :
     (F ≫ G).map f = G.map (F.map f) :=
   Functor.comp_map F G f
 #align category_theory.Cat.comp_map CategoryTheory.Cat.comp_map
 
+#print CategoryTheory.Cat.objects /-
 /-- Functor that gets the set of objects of a category. It is not
 called `forget`, because it is not a faithful functor. -/
 def objects : Cat.{v, u} ⥤ Type u where
   obj C := C
   map C D F := F.obj
 #align category_theory.Cat.objects CategoryTheory.Cat.objects
+-/
 
 section
 
 attribute [local simp] eq_to_hom_map
 
+/- warning: category_theory.Cat.equiv_of_iso -> CategoryTheory.Cat.equivOfIso is a dubious translation:
+lean 3 declaration is
+  forall {C : CategoryTheory.Cat.{u1, u2}} {D : CategoryTheory.Cat.{u1, u2}}, (CategoryTheory.Iso.{max u1 u2, max (succ u2) u2 (succ u1)} CategoryTheory.Cat.{u1, u2} CategoryTheory.Cat.category.{u1, u2} C D) -> (CategoryTheory.Equivalence.{u1, u1, u2, u2} (coeSort.{succ (max (succ u2) u2 (succ u1)), succ (succ u2)} CategoryTheory.Cat.{u1, u2} Type.{u2} CategoryTheory.Cat.hasCoeToSort.{u2, u1} C) (CategoryTheory.Cat.str.{u1, u2} C) (coeSort.{succ (max (succ u2) u2 (succ u1)), succ (succ u2)} CategoryTheory.Cat.{u1, u2} Type.{u2} CategoryTheory.Cat.hasCoeToSort.{u2, u1} D) (CategoryTheory.Cat.str.{u1, u2} D))
+but is expected to have type
+  forall {C : CategoryTheory.Cat.{u1, u2}} {D : CategoryTheory.Cat.{u1, u2}}, (CategoryTheory.Iso.{max u2 u1, max (succ u2) (succ u1)} CategoryTheory.Cat.{u1, u2} CategoryTheory.Cat.category.{u1, u2} C D) -> (CategoryTheory.Equivalence.{u1, u1, u2, u2} (CategoryTheory.Bundled.α.{u2, max u2 (succ u1)} CategoryTheory.Category.{u1, u2} C) (CategoryTheory.Bundled.α.{u2, max u2 (succ u1)} CategoryTheory.Category.{u1, u2} D) (CategoryTheory.Cat.str.{u1, u2} C) (CategoryTheory.Cat.str.{u1, u2} D))
+Case conversion may be inaccurate. Consider using '#align category_theory.Cat.equiv_of_iso CategoryTheory.Cat.equivOfIsoₓ'. -/
 /-- Any isomorphism in `Cat` induces an equivalence of the underlying categories. -/
 def equivOfIso {C D : Cat} (γ : C ≅ D) : C ≌ D
     where
@@ -124,6 +162,7 @@ end
 
 end Cat
 
+#print CategoryTheory.typeToCat /-
 /-- Embedding `Type` into `Cat` as discrete categories.
 
 This ought to be modelled as a 2-functor!
@@ -135,6 +174,7 @@ def typeToCat : Type u ⥤ Cat where
   map_id' X := by apply Functor.ext; tidy
   map_comp' X Y Z f g := by apply Functor.ext; tidy
 #align category_theory.Type_to_Cat CategoryTheory.typeToCat
+-/
 
 instance : Faithful typeToCat.{u}
     where map_injective' X Y f g h :=

Changes in mathlib4

mathlib3
mathlib4
chore(CategoryTheory): make Functor.Full a Prop (#12449)

Before this PR, Functor.Full contained the data of the preimage of maps by a full functor F. This PR makes Functor.Full a proposition. This is to prevent any diamond to appear.

The lemma Functor.image_preimage is also renamed Functor.map_preimage.

Co-authored-by: Joël Riou <37772949+joelriou@users.noreply.github.com>

Diff
@@ -162,9 +162,7 @@ instance : Functor.Faithful typeToCat.{u} where
     funext fun x => congr_arg Discrete.as (Functor.congr_obj h ⟨x⟩)
 
 instance : Functor.Full typeToCat.{u} where
-  preimage F := Discrete.as ∘ F.obj ∘ Discrete.mk
-  witness := by
-    intro X Y F
+  map_surjective F := ⟨Discrete.as ∘ F.obj ∘ Discrete.mk, by
     apply Functor.ext
     · intro x y f
       dsimp
@@ -172,6 +170,6 @@ instance : Functor.Full typeToCat.{u} where
       aesop_cat
     · rintro ⟨x⟩
       apply Discrete.ext
-      rfl
+      rfl⟩
 
 end CategoryTheory
chore(CategoryTheory): move Full, Faithful, EssSurj, IsEquivalence and ReflectsIsomorphisms to the Functor namespace (#11985)

These notions on functors are now Functor.Full, Functor.Faithful, Functor.EssSurj, Functor.IsEquivalence, Functor.ReflectsIsomorphisms. Deprecated aliases are introduced for the previous names.

Diff
@@ -157,11 +157,11 @@ def typeToCat : Type u ⥤ Cat where
 set_option linter.uppercaseLean3 false in
 #align category_theory.Type_to_Cat CategoryTheory.typeToCat
 
-instance : Faithful typeToCat.{u} where
+instance : Functor.Faithful typeToCat.{u} where
   map_injective {_X} {_Y} _f _g h :=
     funext fun x => congr_arg Discrete.as (Functor.congr_obj h ⟨x⟩)
 
-instance : Full typeToCat.{u} where
+instance : Functor.Full typeToCat.{u} where
   preimage F := Discrete.as ∘ F.obj ∘ Discrete.mk
   witness := by
     intro X Y F
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
@@ -41,7 +41,7 @@ namespace Cat
 instance : Inhabited Cat :=
   ⟨⟨Type u, CategoryTheory.types⟩⟩
 
---Porting note: maybe this coercion should be defined to be `objects.obj`?
+-- Porting note: maybe this coercion should be defined to be `objects.obj`?
 instance : CoeSort Cat (Type u) :=
   ⟨Bundled.α⟩
 
@@ -114,7 +114,7 @@ def objects : Cat.{v, u} ⥤ Type u where
 set_option linter.uppercaseLean3 false in
 #align category_theory.Cat.objects CategoryTheory.Cat.objects
 
--- porting note: this instance was needed for CategoryTheory.Category.Cat.Limit
+-- Porting note: this instance was needed for CategoryTheory.Category.Cat.Limit
 instance (X : Cat.{v, u}) : Category (objects.obj X) := (inferInstance : Category X)
 
 section
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,17 +2,14 @@
 Copyright (c) 2019 Yury Kudryashov. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Yury Kudryashov
-
-! This file was ported from Lean 3 source module category_theory.category.Cat
-! leanprover-community/mathlib commit e97cf15cd1aec9bd5c193b2ffac5a6dc9118912b
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
 -/
 import Mathlib.CategoryTheory.ConcreteCategory.Bundled
 import Mathlib.CategoryTheory.DiscreteCategory
 import Mathlib.CategoryTheory.Types
 import Mathlib.CategoryTheory.Bicategory.Strict
 
+#align_import category_theory.category.Cat from "leanprover-community/mathlib"@"e97cf15cd1aec9bd5c193b2ffac5a6dc9118912b"
+
 /-!
 # Category of categories
 
chore: review of automation in category theory (#4793)

Clean up of automation in the category theory library. Leaving out unnecessary proof steps, or fields done by aesop_cat, and making more use of available autoparameters.

Co-authored-by: Scott Morrison <scott.morrison@anu.edu.au>

Diff
@@ -164,8 +164,7 @@ instance : Faithful typeToCat.{u} where
   map_injective {_X} {_Y} _f _g h :=
     funext fun x => congr_arg Discrete.as (Functor.congr_obj h ⟨x⟩)
 
-instance : Full typeToCat.{u}
-    where
+instance : Full typeToCat.{u} where
   preimage F := Discrete.as ∘ F.obj ∘ Discrete.mk
   witness := by
     intro X Y F
feat: port CategoryTheory.Category.Cat.Limit (#2834)

Co-authored-by: ChrisHughes24 <chrishughes24@gmail.com>

Diff
@@ -44,6 +44,7 @@ namespace Cat
 instance : Inhabited Cat :=
   ⟨⟨Type u, CategoryTheory.types⟩⟩
 
+--Porting note: maybe this coercion should be defined to be `objects.obj`?
 instance : CoeSort Cat (Type u) :=
   ⟨Bundled.α⟩
 
@@ -116,6 +117,9 @@ def objects : Cat.{v, u} ⥤ Type u where
 set_option linter.uppercaseLean3 false in
 #align category_theory.Cat.objects CategoryTheory.Cat.objects
 
+-- porting note: this instance was needed for CategoryTheory.Category.Cat.Limit
+instance (X : Cat.{v, u}) : Category (objects.obj X) := (inferInstance : Category X)
+
 section
 
 attribute [local simp] eqToHom_map
chore: strip trailing spaces in lean files (#2828)

vscode is already configured by .vscode/settings.json to trim these on save. It's not clear how they've managed to stick around.

By doing this all in one PR now, it avoids getting random whitespace diffs in PRs later.

This was done with a regex search in vscode,

image

Diff
@@ -141,22 +141,22 @@ This ought to be modelled as a 2-functor!
 @[simps]
 def typeToCat : Type u ⥤ Cat where
   obj X := Cat.of (Discrete X)
-  map := fun {X} {Y} f => by 
-    dsimp 
+  map := fun {X} {Y} f => by
+    dsimp
     exact Discrete.functor (Discrete.mk ∘ f)
-  map_id X := by 
+  map_id X := by
     apply Functor.ext
     · intro X Y f
       cases f
       simp only [id_eq, eqToHom_refl, Cat.id_map, Category.comp_id, Category.id_comp]
       apply ULift.ext
       aesop_cat
-    · aesop_cat 
+    · aesop_cat
   map_comp f g := by apply Functor.ext; aesop_cat
 set_option linter.uppercaseLean3 false in
 #align category_theory.Type_to_Cat CategoryTheory.typeToCat
 
-instance : Faithful typeToCat.{u} where 
+instance : Faithful typeToCat.{u} where
   map_injective {_X} {_Y} _f _g h :=
     funext fun x => congr_arg Discrete.as (Functor.congr_obj h ⟨x⟩)
 
@@ -168,11 +168,10 @@ instance : Full typeToCat.{u}
     apply Functor.ext
     · intro x y f
       dsimp
-      apply ULift.ext 
+      apply ULift.ext
       aesop_cat
     · rintro ⟨x⟩
       apply Discrete.ext
       rfl
 
 end CategoryTheory
-
feat: port/CategoryTheory.Category.Cat (#2375)

Co-authored-by: Matthew Robert Ballard <100034030+mattrobball@users.noreply.github.com>

Dependencies 58

59 files ported (100.0%)
20184 lines ported (100.0%)

All dependencies are ported!