category_theory.limits.yonedaMathlib.CategoryTheory.Limits.Yoneda

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
@@ -3,8 +3,8 @@ Copyright (c) 2020 Scott Morrison. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Scott Morrison, Bhavik Mehta
 -/
-import Mathbin.CategoryTheory.Limits.FunctorCategory
-import Mathbin.Tactic.AssertExists
+import CategoryTheory.Limits.FunctorCategory
+import Tactic.AssertExists
 
 #align_import category_theory.limits.yoneda from "leanprover-community/mathlib"@"f47581155c818e6361af4e4fda60d27d020c226b"
 
Diff
@@ -2,15 +2,12 @@
 Copyright (c) 2020 Scott Morrison. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Scott Morrison, Bhavik Mehta
-
-! This file was ported from Lean 3 source module category_theory.limits.yoneda
-! leanprover-community/mathlib commit f47581155c818e6361af4e4fda60d27d020c226b
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
 -/
 import Mathbin.CategoryTheory.Limits.FunctorCategory
 import Mathbin.Tactic.AssertExists
 
+#align_import category_theory.limits.yoneda from "leanprover-community/mathlib"@"f47581155c818e6361af4e4fda60d27d020c226b"
+
 /-!
 # Limit properties relating to the (co)yoneda embedding.
 
Diff
@@ -38,6 +38,7 @@ namespace Coyoneda
 
 variable {C : Type v} [SmallCategory C]
 
+#print CategoryTheory.Coyoneda.colimitCocone /-
 /-- The colimit cocone over `coyoneda.obj X`, with cocone point `punit`.
 -/
 @[simps]
@@ -46,7 +47,9 @@ def colimitCocone (X : Cᵒᵖ) : Cocone (coyoneda.obj X)
   pt := PUnit
   ι := { app := by tidy }
 #align category_theory.coyoneda.colimit_cocone CategoryTheory.Coyoneda.colimitCocone
+-/
 
+#print CategoryTheory.Coyoneda.colimitCoconeIsColimit /-
 /-- The proposed colimit cocone over `coyoneda.obj X` is a colimit cocone.
 -/
 @[simps]
@@ -56,12 +59,14 @@ def colimitCoconeIsColimit (X : Cᵒᵖ) : IsColimit (colimitCocone X)
   fac s Y := by ext f; convert congr_fun (s.w f).symm (𝟙 (unop X)); simp
   uniq s m w := by ext ⟨⟩; rw [← w]; simp
 #align category_theory.coyoneda.colimit_cocone_is_colimit CategoryTheory.Coyoneda.colimitCoconeIsColimit
+-/
 
 instance (X : Cᵒᵖ) : HasColimit (coyoneda.obj X) :=
   HasColimit.mk
     { Cocone := _
       IsColimit := colimitCoconeIsColimit X }
 
+#print CategoryTheory.Coyoneda.colimitCoyonedaIso /-
 /-- The colimit of `coyoneda.obj X` is isomorphic to `punit`.
 -/
 noncomputable def colimitCoyonedaIso (X : Cᵒᵖ) : colimit (coyoneda.obj X) ≅ PUnit :=
@@ -69,6 +74,7 @@ noncomputable def colimitCoyonedaIso (X : Cᵒᵖ) : colimit (coyoneda.obj X) 
     { Cocone := _
       IsColimit := colimitCoconeIsColimit X }
 #align category_theory.coyoneda.colimit_coyoneda_iso CategoryTheory.Coyoneda.colimitCoyonedaIso
+-/
 
 end Coyoneda
 
@@ -76,6 +82,7 @@ variable {C : Type u} [Category.{v} C]
 
 open Limits
 
+#print CategoryTheory.yonedaPreservesLimits /-
 /-- The yoneda embedding `yoneda.obj X : Cᵒᵖ ⥤ Type v` for `X : C` preserves limits. -/
 instance yonedaPreservesLimits (X : C) : PreservesLimits (yoneda.obj X)
     where PreservesLimitsOfShape J 𝒥 :=
@@ -94,7 +101,9 @@ instance yonedaPreservesLimits (X : C) : PreservesLimits (yoneda.obj X)
                   -- See library note [dsimp, simp]
                   · exact Quiver.Hom.unop_inj (congr_fun (w j) x) } } }
 #align category_theory.yoneda_preserves_limits CategoryTheory.yonedaPreservesLimits
+-/
 
+#print CategoryTheory.coyonedaPreservesLimits /-
 /-- The coyoneda embedding `coyoneda.obj X : C ⥤ Type v` for `X : Cᵒᵖ` preserves limits. -/
 instance coyonedaPreservesLimits (X : Cᵒᵖ) : PreservesLimits (coyoneda.obj X)
     where PreservesLimitsOfShape J 𝒥 :=
@@ -111,7 +120,9 @@ instance coyonedaPreservesLimits (X : Cᵒᵖ) : PreservesLimits (coyoneda.obj X
                   refine' t.uniq ⟨unop X, _⟩ _ fun j => _
                   exact congr_fun (w j) x } } }
 #align category_theory.coyoneda_preserves_limits CategoryTheory.coyonedaPreservesLimits
+-/
 
+#print CategoryTheory.yonedaJointlyReflectsLimits /-
 /-- The yoneda embeddings jointly reflect limits. -/
 def yonedaJointlyReflectsLimits (J : Type w) [SmallCategory J] (K : J ⥤ Cᵒᵖ) (c : Cone K)
     (t : ∀ X : C, IsLimit ((yoneda.obj X).mapCone c)) : IsLimit c :=
@@ -128,7 +139,9 @@ def yonedaJointlyReflectsLimits (J : Type w) [SmallCategory J] (K : J ⥤ Cᵒ
       ext
       exact Quiver.Hom.op_inj (w j) }
 #align category_theory.yoneda_jointly_reflects_limits CategoryTheory.yonedaJointlyReflectsLimits
+-/
 
+#print CategoryTheory.coyonedaJointlyReflectsLimits /-
 /-- The coyoneda embeddings jointly reflect limits. -/
 def coyonedaJointlyReflectsLimits (J : Type w) [SmallCategory J] (K : J ⥤ C) (c : Cone K)
     (t : ∀ X : Cᵒᵖ, IsLimit ((coyoneda.obj X).mapCone c)) : IsLimit c :=
@@ -143,6 +156,7 @@ def coyonedaJointlyReflectsLimits (J : Type w) [SmallCategory J] (K : J ⥤ C) (
       ext
       exact w j }
 #align category_theory.coyoneda_jointly_reflects_limits CategoryTheory.coyonedaJointlyReflectsLimits
+-/
 
 variable {D : Type u} [SmallCategory D]
 
Diff
@@ -38,12 +38,6 @@ namespace Coyoneda
 
 variable {C : Type v} [SmallCategory C]
 
-/- warning: category_theory.coyoneda.colimit_cocone -> CategoryTheory.Coyoneda.colimitCocone is a dubious translation:
-lean 3 declaration is
-  forall {C : Type.{u1}} [_inst_1 : CategoryTheory.SmallCategory.{u1} C] (X : Opposite.{succ u1} C), CategoryTheory.Limits.Cocone.{u1, u1, u1, succ u1} C _inst_1 Type.{u1} CategoryTheory.types.{u1} (CategoryTheory.Functor.obj.{u1, u1, u1, succ u1} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u1, u1} C _inst_1) (CategoryTheory.Functor.{u1, u1, u1, succ u1} C _inst_1 Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Functor.category.{u1, u1, u1, succ u1} C _inst_1 Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.coyoneda.{u1, u1} C _inst_1) X)
-but is expected to have type
-  forall {C : Type.{u1}} [_inst_1 : CategoryTheory.SmallCategory.{u1} C] (X : Opposite.{succ u1} C), CategoryTheory.Limits.Cocone.{u1, u1, u1, succ u1} C _inst_1 Type.{u1} CategoryTheory.types.{u1} (Prefunctor.obj.{succ u1, succ u1, u1, succ u1} (Opposite.{succ u1} C) (CategoryTheory.CategoryStruct.toQuiver.{u1, u1} (Opposite.{succ u1} C) (CategoryTheory.Category.toCategoryStruct.{u1, u1} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u1, u1} C _inst_1))) (CategoryTheory.Functor.{u1, u1, u1, succ u1} C _inst_1 Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} (CategoryTheory.Functor.{u1, u1, u1, succ u1} C _inst_1 Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} (CategoryTheory.Functor.{u1, u1, u1, succ u1} C _inst_1 Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Functor.category.{u1, u1, u1, succ u1} C _inst_1 Type.{u1} CategoryTheory.types.{u1}))) (CategoryTheory.Functor.toPrefunctor.{u1, u1, u1, succ u1} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u1, u1} C _inst_1) (CategoryTheory.Functor.{u1, u1, u1, succ u1} C _inst_1 Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Functor.category.{u1, u1, u1, succ u1} C _inst_1 Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.coyoneda.{u1, u1} C _inst_1)) X)
-Case conversion may be inaccurate. Consider using '#align category_theory.coyoneda.colimit_cocone CategoryTheory.Coyoneda.colimitCoconeₓ'. -/
 /-- The colimit cocone over `coyoneda.obj X`, with cocone point `punit`.
 -/
 @[simps]
@@ -53,12 +47,6 @@ def colimitCocone (X : Cᵒᵖ) : Cocone (coyoneda.obj X)
   ι := { app := by tidy }
 #align category_theory.coyoneda.colimit_cocone CategoryTheory.Coyoneda.colimitCocone
 
-/- warning: category_theory.coyoneda.colimit_cocone_is_colimit -> CategoryTheory.Coyoneda.colimitCoconeIsColimit is a dubious translation:
-lean 3 declaration is
-  forall {C : Type.{u1}} [_inst_1 : CategoryTheory.SmallCategory.{u1} C] (X : Opposite.{succ u1} C), CategoryTheory.Limits.IsColimit.{u1, u1, u1, succ u1} C _inst_1 Type.{u1} CategoryTheory.types.{u1} (CategoryTheory.Functor.obj.{u1, u1, u1, succ u1} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u1, u1} C _inst_1) (CategoryTheory.Functor.{u1, u1, u1, succ u1} C _inst_1 Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Functor.category.{u1, u1, u1, succ u1} C _inst_1 Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.coyoneda.{u1, u1} C _inst_1) X) (CategoryTheory.Coyoneda.colimitCocone.{u1} C _inst_1 X)
-but is expected to have type
-  forall {C : Type.{u1}} [_inst_1 : CategoryTheory.SmallCategory.{u1} C] (X : Opposite.{succ u1} C), CategoryTheory.Limits.IsColimit.{u1, u1, u1, succ u1} C _inst_1 Type.{u1} CategoryTheory.types.{u1} (Prefunctor.obj.{succ u1, succ u1, u1, succ u1} (Opposite.{succ u1} C) (CategoryTheory.CategoryStruct.toQuiver.{u1, u1} (Opposite.{succ u1} C) (CategoryTheory.Category.toCategoryStruct.{u1, u1} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u1, u1} C _inst_1))) (CategoryTheory.Functor.{u1, u1, u1, succ u1} C _inst_1 Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} (CategoryTheory.Functor.{u1, u1, u1, succ u1} C _inst_1 Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} (CategoryTheory.Functor.{u1, u1, u1, succ u1} C _inst_1 Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Functor.category.{u1, u1, u1, succ u1} C _inst_1 Type.{u1} CategoryTheory.types.{u1}))) (CategoryTheory.Functor.toPrefunctor.{u1, u1, u1, succ u1} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u1, u1} C _inst_1) (CategoryTheory.Functor.{u1, u1, u1, succ u1} C _inst_1 Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Functor.category.{u1, u1, u1, succ u1} C _inst_1 Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.coyoneda.{u1, u1} C _inst_1)) X) (CategoryTheory.Coyoneda.colimitCocone.{u1} C _inst_1 X)
-Case conversion may be inaccurate. Consider using '#align category_theory.coyoneda.colimit_cocone_is_colimit CategoryTheory.Coyoneda.colimitCoconeIsColimitₓ'. -/
 /-- The proposed colimit cocone over `coyoneda.obj X` is a colimit cocone.
 -/
 @[simps]
@@ -74,12 +62,6 @@ instance (X : Cᵒᵖ) : HasColimit (coyoneda.obj X) :=
     { Cocone := _
       IsColimit := colimitCoconeIsColimit X }
 
-/- warning: category_theory.coyoneda.colimit_coyoneda_iso -> CategoryTheory.Coyoneda.colimitCoyonedaIso is a dubious translation:
-lean 3 declaration is
-  forall {C : Type.{u1}} [_inst_1 : CategoryTheory.SmallCategory.{u1} C] (X : Opposite.{succ u1} C), CategoryTheory.Iso.{u1, succ u1} Type.{u1} CategoryTheory.types.{u1} (CategoryTheory.Limits.colimit.{u1, u1, u1, succ u1} C _inst_1 Type.{u1} CategoryTheory.types.{u1} (CategoryTheory.Functor.obj.{u1, u1, u1, succ u1} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u1, u1} C _inst_1) (CategoryTheory.Functor.{u1, u1, u1, succ u1} C _inst_1 Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Functor.category.{u1, u1, u1, succ u1} C _inst_1 Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.coyoneda.{u1, u1} C _inst_1) X) (CategoryTheory.coyoneda.Obj.CategoryTheory.Limits.hasColimit.{u1} C _inst_1 X)) PUnit.{succ u1}
-but is expected to have type
-  forall {C : Type.{u1}} [_inst_1 : CategoryTheory.SmallCategory.{u1} C] (X : Opposite.{succ u1} C), CategoryTheory.Iso.{u1, succ u1} Type.{u1} CategoryTheory.types.{u1} (CategoryTheory.Limits.colimit.{u1, u1, u1, succ u1} C _inst_1 Type.{u1} CategoryTheory.types.{u1} (Prefunctor.obj.{succ u1, succ u1, u1, succ u1} (Opposite.{succ u1} C) (CategoryTheory.CategoryStruct.toQuiver.{u1, u1} (Opposite.{succ u1} C) (CategoryTheory.Category.toCategoryStruct.{u1, u1} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u1, u1} C _inst_1))) (CategoryTheory.Functor.{u1, u1, u1, succ u1} C _inst_1 Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} (CategoryTheory.Functor.{u1, u1, u1, succ u1} C _inst_1 Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} (CategoryTheory.Functor.{u1, u1, u1, succ u1} C _inst_1 Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Functor.category.{u1, u1, u1, succ u1} C _inst_1 Type.{u1} CategoryTheory.types.{u1}))) (CategoryTheory.Functor.toPrefunctor.{u1, u1, u1, succ u1} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u1, u1} C _inst_1) (CategoryTheory.Functor.{u1, u1, u1, succ u1} C _inst_1 Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Functor.category.{u1, u1, u1, succ u1} C _inst_1 Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.coyoneda.{u1, u1} C _inst_1)) X) (CategoryTheory.Coyoneda.instHasColimitTypeTypesObjOppositeToQuiverToCategoryStructOppositeFunctorToQuiverToCategoryStructCategoryToPrefunctorCoyoneda.{u1} C _inst_1 X)) PUnit.{succ u1}
-Case conversion may be inaccurate. Consider using '#align category_theory.coyoneda.colimit_coyoneda_iso CategoryTheory.Coyoneda.colimitCoyonedaIsoₓ'. -/
 /-- The colimit of `coyoneda.obj X` is isomorphic to `punit`.
 -/
 noncomputable def colimitCoyonedaIso (X : Cᵒᵖ) : colimit (coyoneda.obj X) ≅ PUnit :=
@@ -94,12 +76,6 @@ variable {C : Type u} [Category.{v} C]
 
 open Limits
 
-/- warning: category_theory.yoneda_preserves_limits -> CategoryTheory.yonedaPreservesLimits is a dubious translation:
-lean 3 declaration is
-  forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} C] (X : C), CategoryTheory.Limits.PreservesLimits.{u1, u1, u2, succ u1} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u1, u2} C _inst_1) Type.{u1} CategoryTheory.types.{u1} (CategoryTheory.Functor.obj.{u1, max u2 u1, u2, max u1 u2 (succ u1)} C _inst_1 (CategoryTheory.Functor.{u1, u1, u2, succ u1} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u1, u2} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Functor.category.{u1, u1, u2, succ u1} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u1, u2} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.yoneda.{u1, u2} C _inst_1) X)
-but is expected to have type
-  forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} C] (X : C), CategoryTheory.Limits.PreservesLimits.{u1, u1, u2, succ u1} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u1, u2} C _inst_1) Type.{u1} CategoryTheory.types.{u1} (Prefunctor.obj.{succ u1, max (succ u1) (succ u2), u2, max (succ u1) u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Functor.{u1, u1, u2, succ u1} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u1, u2} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 (succ u1)} (CategoryTheory.Functor.{u1, u1, u2, succ u1} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u1, u2} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 (succ u1)} (CategoryTheory.Functor.{u1, u1, u2, succ u1} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u1, u2} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Functor.category.{u1, u1, u2, succ u1} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u1, u2} C _inst_1) Type.{u1} CategoryTheory.types.{u1}))) (CategoryTheory.Functor.toPrefunctor.{u1, max u2 u1, u2, max u2 (succ u1)} C _inst_1 (CategoryTheory.Functor.{u1, u1, u2, succ u1} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u1, u2} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Functor.category.{u1, u1, u2, succ u1} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u1, u2} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.yoneda.{u1, u2} C _inst_1)) X)
-Case conversion may be inaccurate. Consider using '#align category_theory.yoneda_preserves_limits CategoryTheory.yonedaPreservesLimitsₓ'. -/
 /-- The yoneda embedding `yoneda.obj X : Cᵒᵖ ⥤ Type v` for `X : C` preserves limits. -/
 instance yonedaPreservesLimits (X : C) : PreservesLimits (yoneda.obj X)
     where PreservesLimitsOfShape J 𝒥 :=
@@ -119,12 +95,6 @@ instance yonedaPreservesLimits (X : C) : PreservesLimits (yoneda.obj X)
                   · exact Quiver.Hom.unop_inj (congr_fun (w j) x) } } }
 #align category_theory.yoneda_preserves_limits CategoryTheory.yonedaPreservesLimits
 
-/- warning: category_theory.coyoneda_preserves_limits -> CategoryTheory.coyonedaPreservesLimits is a dubious translation:
-lean 3 declaration is
-  forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} C] (X : Opposite.{succ u2} C), CategoryTheory.Limits.PreservesLimits.{u1, u1, u2, succ u1} C _inst_1 Type.{u1} CategoryTheory.types.{u1} (CategoryTheory.Functor.obj.{u1, max u2 u1, u2, max u1 u2 (succ u1)} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u1, u2} C _inst_1) (CategoryTheory.Functor.{u1, u1, u2, succ u1} C _inst_1 Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Functor.category.{u1, u1, u2, succ u1} C _inst_1 Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.coyoneda.{u1, u2} C _inst_1) X)
-but is expected to have type
-  forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} C] (X : Opposite.{succ u2} C), CategoryTheory.Limits.PreservesLimits.{u1, u1, u2, succ u1} C _inst_1 Type.{u1} CategoryTheory.types.{u1} (Prefunctor.obj.{succ u1, max (succ u2) (succ u1), u2, max u2 (succ u1)} (Opposite.{succ u2} C) (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} (Opposite.{succ u2} C) (CategoryTheory.Category.toCategoryStruct.{u1, u2} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u1, u2} C _inst_1))) (CategoryTheory.Functor.{u1, u1, u2, succ u1} C _inst_1 Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 (succ u1)} (CategoryTheory.Functor.{u1, u1, u2, succ u1} C _inst_1 Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 (succ u1)} (CategoryTheory.Functor.{u1, u1, u2, succ u1} C _inst_1 Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Functor.category.{u1, u1, u2, succ u1} C _inst_1 Type.{u1} CategoryTheory.types.{u1}))) (CategoryTheory.Functor.toPrefunctor.{u1, max u2 u1, u2, max u2 (succ u1)} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u1, u2} C _inst_1) (CategoryTheory.Functor.{u1, u1, u2, succ u1} C _inst_1 Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Functor.category.{u1, u1, u2, succ u1} C _inst_1 Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.coyoneda.{u1, u2} C _inst_1)) X)
-Case conversion may be inaccurate. Consider using '#align category_theory.coyoneda_preserves_limits CategoryTheory.coyonedaPreservesLimitsₓ'. -/
 /-- The coyoneda embedding `coyoneda.obj X : C ⥤ Type v` for `X : Cᵒᵖ` preserves limits. -/
 instance coyonedaPreservesLimits (X : Cᵒᵖ) : PreservesLimits (coyoneda.obj X)
     where PreservesLimitsOfShape J 𝒥 :=
@@ -142,12 +112,6 @@ instance coyonedaPreservesLimits (X : Cᵒᵖ) : PreservesLimits (coyoneda.obj X
                   exact congr_fun (w j) x } } }
 #align category_theory.coyoneda_preserves_limits CategoryTheory.coyonedaPreservesLimits
 
-/- warning: category_theory.yoneda_jointly_reflects_limits -> CategoryTheory.yonedaJointlyReflectsLimits is a dubious translation:
-lean 3 declaration is
-  forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] (J : Type.{u1}) [_inst_2 : CategoryTheory.SmallCategory.{u1} J] (K : CategoryTheory.Functor.{u1, u2, u1, u3} J _inst_2 (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1)) (c : CategoryTheory.Limits.Cone.{u1, u2, u1, u3} J _inst_2 (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) K), (forall (X : C), CategoryTheory.Limits.IsLimit.{u1, u2, u1, succ u2} J _inst_2 Type.{u2} CategoryTheory.types.{u2} (CategoryTheory.Functor.comp.{u1, u2, u2, u1, u3, succ u2} J _inst_2 (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u2} CategoryTheory.types.{u2} K (CategoryTheory.Functor.obj.{u2, max u3 u2, u3, max u2 u3 (succ u2)} C _inst_1 (CategoryTheory.Functor.{u2, u2, u3, succ u2} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.Functor.category.{u2, u2, u3, succ u2} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.yoneda.{u2, u3} C _inst_1) X)) (CategoryTheory.Functor.mapCone.{u1, u2, u2, u1, u3, succ u2} J _inst_2 (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u2} CategoryTheory.types.{u2} K (CategoryTheory.Functor.obj.{u2, max u3 u2, u3, max u2 u3 (succ u2)} C _inst_1 (CategoryTheory.Functor.{u2, u2, u3, succ u2} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.Functor.category.{u2, u2, u3, succ u2} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.yoneda.{u2, u3} C _inst_1) X) c)) -> (CategoryTheory.Limits.IsLimit.{u1, u2, u1, u3} J _inst_2 (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) K c)
-but is expected to have type
-  forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] (J : Type.{u1}) [_inst_2 : CategoryTheory.SmallCategory.{u1} J] (K : CategoryTheory.Functor.{u1, u2, u1, u3} J _inst_2 (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1)) (c : CategoryTheory.Limits.Cone.{u1, u2, u1, u3} J _inst_2 (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) K), (forall (X : C), CategoryTheory.Limits.IsLimit.{u1, u2, u1, succ u2} J _inst_2 Type.{u2} CategoryTheory.types.{u2} (CategoryTheory.Functor.comp.{u1, u2, u2, u1, u3, succ u2} J _inst_2 (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u2} CategoryTheory.types.{u2} K (Prefunctor.obj.{succ u2, max (succ u2) (succ u3), u3, max (succ u2) u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Functor.{u2, u2, u3, succ u2} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max u3 (succ u2)} (CategoryTheory.Functor.{u2, u2, u3, succ u2} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max u3 (succ u2)} (CategoryTheory.Functor.{u2, u2, u3, succ u2} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.Functor.category.{u2, u2, u3, succ u2} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u2} CategoryTheory.types.{u2}))) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, max u3 (succ u2)} C _inst_1 (CategoryTheory.Functor.{u2, u2, u3, succ u2} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.Functor.category.{u2, u2, u3, succ u2} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.yoneda.{u2, u3} C _inst_1)) X)) (CategoryTheory.Functor.mapCone.{u1, u2, u2, u1, u3, succ u2} J _inst_2 (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u2} CategoryTheory.types.{u2} (Prefunctor.obj.{succ u2, max (succ u2) (succ u3), u3, max (succ u2) u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Functor.{u2, u2, u3, succ u2} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max u3 (succ u2)} (CategoryTheory.Functor.{u2, u2, u3, succ u2} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max u3 (succ u2)} (CategoryTheory.Functor.{u2, u2, u3, succ u2} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.Functor.category.{u2, u2, u3, succ u2} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u2} CategoryTheory.types.{u2}))) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, max u3 (succ u2)} C _inst_1 (CategoryTheory.Functor.{u2, u2, u3, succ u2} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.Functor.category.{u2, u2, u3, succ u2} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.yoneda.{u2, u3} C _inst_1)) X) K c)) -> (CategoryTheory.Limits.IsLimit.{u1, u2, u1, u3} J _inst_2 (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) K c)
-Case conversion may be inaccurate. Consider using '#align category_theory.yoneda_jointly_reflects_limits CategoryTheory.yonedaJointlyReflectsLimitsₓ'. -/
 /-- The yoneda embeddings jointly reflect limits. -/
 def yonedaJointlyReflectsLimits (J : Type w) [SmallCategory J] (K : J ⥤ Cᵒᵖ) (c : Cone K)
     (t : ∀ X : C, IsLimit ((yoneda.obj X).mapCone c)) : IsLimit c :=
@@ -165,12 +129,6 @@ def yonedaJointlyReflectsLimits (J : Type w) [SmallCategory J] (K : J ⥤ Cᵒ
       exact Quiver.Hom.op_inj (w j) }
 #align category_theory.yoneda_jointly_reflects_limits CategoryTheory.yonedaJointlyReflectsLimits
 
-/- warning: category_theory.coyoneda_jointly_reflects_limits -> CategoryTheory.coyonedaJointlyReflectsLimits is a dubious translation:
-lean 3 declaration is
-  forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] (J : Type.{u1}) [_inst_2 : CategoryTheory.SmallCategory.{u1} J] (K : CategoryTheory.Functor.{u1, u2, u1, u3} J _inst_2 C _inst_1) (c : CategoryTheory.Limits.Cone.{u1, u2, u1, u3} J _inst_2 C _inst_1 K), (forall (X : Opposite.{succ u3} C), CategoryTheory.Limits.IsLimit.{u1, u2, u1, succ u2} J _inst_2 Type.{u2} CategoryTheory.types.{u2} (CategoryTheory.Functor.comp.{u1, u2, u2, u1, u3, succ u2} J _inst_2 C _inst_1 Type.{u2} CategoryTheory.types.{u2} K (CategoryTheory.Functor.obj.{u2, max u3 u2, u3, max u2 u3 (succ u2)} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) (CategoryTheory.Functor.{u2, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.Functor.category.{u2, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.coyoneda.{u2, u3} C _inst_1) X)) (CategoryTheory.Functor.mapCone.{u1, u2, u2, u1, u3, succ u2} J _inst_2 C _inst_1 Type.{u2} CategoryTheory.types.{u2} K (CategoryTheory.Functor.obj.{u2, max u3 u2, u3, max u2 u3 (succ u2)} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) (CategoryTheory.Functor.{u2, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.Functor.category.{u2, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.coyoneda.{u2, u3} C _inst_1) X) c)) -> (CategoryTheory.Limits.IsLimit.{u1, u2, u1, u3} J _inst_2 C _inst_1 K c)
-but is expected to have type
-  forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] (J : Type.{u1}) [_inst_2 : CategoryTheory.SmallCategory.{u1} J] (K : CategoryTheory.Functor.{u1, u2, u1, u3} J _inst_2 C _inst_1) (c : CategoryTheory.Limits.Cone.{u1, u2, u1, u3} J _inst_2 C _inst_1 K), (forall (X : Opposite.{succ u3} C), CategoryTheory.Limits.IsLimit.{u1, u2, u1, succ u2} J _inst_2 Type.{u2} CategoryTheory.types.{u2} (CategoryTheory.Functor.comp.{u1, u2, u2, u1, u3, succ u2} J _inst_2 C _inst_1 Type.{u2} CategoryTheory.types.{u2} K (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u3, max u3 (succ u2)} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) (CategoryTheory.Functor.{u2, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max u3 (succ u2)} (CategoryTheory.Functor.{u2, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max u3 (succ u2)} (CategoryTheory.Functor.{u2, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.Functor.category.{u2, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2}))) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, max u3 (succ u2)} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) (CategoryTheory.Functor.{u2, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.Functor.category.{u2, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.coyoneda.{u2, u3} C _inst_1)) X)) (CategoryTheory.Functor.mapCone.{u1, u2, u2, u1, u3, succ u2} J _inst_2 C _inst_1 Type.{u2} CategoryTheory.types.{u2} (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u3, max u3 (succ u2)} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) (CategoryTheory.Functor.{u2, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max u3 (succ u2)} (CategoryTheory.Functor.{u2, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max u3 (succ u2)} (CategoryTheory.Functor.{u2, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.Functor.category.{u2, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2}))) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, max u3 (succ u2)} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) (CategoryTheory.Functor.{u2, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.Functor.category.{u2, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.coyoneda.{u2, u3} C _inst_1)) X) K c)) -> (CategoryTheory.Limits.IsLimit.{u1, u2, u1, u3} J _inst_2 C _inst_1 K c)
-Case conversion may be inaccurate. Consider using '#align category_theory.coyoneda_jointly_reflects_limits CategoryTheory.coyonedaJointlyReflectsLimitsₓ'. -/
 /-- The coyoneda embeddings jointly reflect limits. -/
 def coyonedaJointlyReflectsLimits (J : Type w) [SmallCategory J] (K : J ⥤ C) (c : Cone K)
     (t : ∀ X : Cᵒᵖ, IsLimit ((coyoneda.obj X).mapCone c)) : IsLimit c :=
Diff
@@ -65,14 +65,8 @@ Case conversion may be inaccurate. Consider using '#align category_theory.coyone
 def colimitCoconeIsColimit (X : Cᵒᵖ) : IsColimit (colimitCocone X)
     where
   desc s x := s.ι.app (unop X) (𝟙 _)
-  fac s Y := by
-    ext f
-    convert congr_fun (s.w f).symm (𝟙 (unop X))
-    simp
-  uniq s m w := by
-    ext ⟨⟩
-    rw [← w]
-    simp
+  fac s Y := by ext f; convert congr_fun (s.w f).symm (𝟙 (unop X)); simp
+  uniq s m w := by ext ⟨⟩; rw [← w]; simp
 #align category_theory.coyoneda.colimit_cocone_is_colimit CategoryTheory.Coyoneda.colimitCoconeIsColimit
 
 instance (X : Cᵒᵖ) : HasColimit (coyoneda.obj X) :=
@@ -120,8 +114,7 @@ instance yonedaPreservesLimits (X : C) : PreservesLimits (yoneda.obj X)
                 funext fun x =>
                   by
                   refine' Quiver.Hom.op_inj (t.uniq ⟨op X, _, _⟩ _ fun j => _)
-                  · dsimp
-                    simp [← s.w α]
+                  · dsimp; simp [← s.w α]
                   -- See library note [dsimp, simp]
                   · exact Quiver.Hom.unop_inj (congr_fun (w j) x) } } }
 #align category_theory.yoneda_preserves_limits CategoryTheory.yonedaPreservesLimits
@@ -140,11 +133,7 @@ instance coyonedaPreservesLimits (X : Cᵒᵖ) : PreservesLimits (coyoneda.obj X
         {
           preserves := fun c t =>
             { lift := fun s x =>
-                t.lift
-                  ⟨unop X, fun j => s.π.app j x, fun j₁ j₂ α =>
-                    by
-                    dsimp
-                    simp [← s.w α]⟩
+                t.lift ⟨unop X, fun j => s.π.app j x, fun j₁ j₂ α => by dsimp; simp [← s.w α]⟩
               -- See library note [dsimp, simp]
               fac := fun s j => funext fun x => t.fac _ _
               uniq := fun s m w =>
Diff
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Scott Morrison, Bhavik Mehta
 
 ! This file was ported from Lean 3 source module category_theory.limits.yoneda
-! leanprover-community/mathlib commit e83fa8324dbec147a1d1f6d11751361235ce3806
+! leanprover-community/mathlib commit f47581155c818e6361af4e4fda60d27d020c226b
 ! Please do not edit these lines, except to modify the commit id
 ! if you have ported upstream changes.
 -/
@@ -14,6 +14,9 @@ import Mathbin.Tactic.AssertExists
 /-!
 # Limit properties relating to the (co)yoneda embedding.
 
+> THIS FILE IS SYNCHRONIZED WITH MATHLIB4.
+> Any changes to this file require a corresponding PR to mathlib4.
+
 We calculate the colimit of `Y ↦ (X ⟶ Y)`, which is just `punit`.
 (This is used in characterising cofinal functors.)
 
Diff
@@ -154,7 +154,7 @@ instance coyonedaPreservesLimits (X : Cᵒᵖ) : PreservesLimits (coyoneda.obj X
 lean 3 declaration is
   forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] (J : Type.{u1}) [_inst_2 : CategoryTheory.SmallCategory.{u1} J] (K : CategoryTheory.Functor.{u1, u2, u1, u3} J _inst_2 (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1)) (c : CategoryTheory.Limits.Cone.{u1, u2, u1, u3} J _inst_2 (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) K), (forall (X : C), CategoryTheory.Limits.IsLimit.{u1, u2, u1, succ u2} J _inst_2 Type.{u2} CategoryTheory.types.{u2} (CategoryTheory.Functor.comp.{u1, u2, u2, u1, u3, succ u2} J _inst_2 (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u2} CategoryTheory.types.{u2} K (CategoryTheory.Functor.obj.{u2, max u3 u2, u3, max u2 u3 (succ u2)} C _inst_1 (CategoryTheory.Functor.{u2, u2, u3, succ u2} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.Functor.category.{u2, u2, u3, succ u2} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.yoneda.{u2, u3} C _inst_1) X)) (CategoryTheory.Functor.mapCone.{u1, u2, u2, u1, u3, succ u2} J _inst_2 (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u2} CategoryTheory.types.{u2} K (CategoryTheory.Functor.obj.{u2, max u3 u2, u3, max u2 u3 (succ u2)} C _inst_1 (CategoryTheory.Functor.{u2, u2, u3, succ u2} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.Functor.category.{u2, u2, u3, succ u2} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.yoneda.{u2, u3} C _inst_1) X) c)) -> (CategoryTheory.Limits.IsLimit.{u1, u2, u1, u3} J _inst_2 (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) K c)
 but is expected to have type
-  forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] (J : Type.{u1}) [_inst_2 : CategoryTheory.SmallCategory.{u1} J] (K : CategoryTheory.Functor.{u1, u2, u1, u3} J _inst_2 (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1)) (c : CategoryTheory.Limits.Cone.{u1, u2, u1, u3} J _inst_2 (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) K), (forall (X : C), CategoryTheory.Limits.IsLimit.{u1, u2, u1, succ u2} J _inst_2 Type.{u2} CategoryTheory.types.{u2} (CategoryTheory.Functor.comp.{u1, u2, u2, u1, u3, succ u2} J _inst_2 (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u2} CategoryTheory.types.{u2} K (Prefunctor.obj.{succ u2, max (succ u2) (succ u3), u3, max (succ u2) u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Functor.{u2, u2, u3, succ u2} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max u3 (succ u2)} (CategoryTheory.Functor.{u2, u2, u3, succ u2} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max u3 (succ u2)} (CategoryTheory.Functor.{u2, u2, u3, succ u2} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.Functor.category.{u2, u2, u3, succ u2} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u2} CategoryTheory.types.{u2}))) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, max u3 (succ u2)} C _inst_1 (CategoryTheory.Functor.{u2, u2, u3, succ u2} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.Functor.category.{u2, u2, u3, succ u2} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.yoneda.{u2, u3} C _inst_1)) X)) (CategoryTheory.Functor.mapCone.{u1, u2, u2, u1, u3, succ u2} J _inst_2 (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u2} CategoryTheory.types.{u2} K (Prefunctor.obj.{succ u2, max (succ u2) (succ u3), u3, max (succ u2) u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Functor.{u2, u2, u3, succ u2} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max u3 (succ u2)} (CategoryTheory.Functor.{u2, u2, u3, succ u2} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max u3 (succ u2)} (CategoryTheory.Functor.{u2, u2, u3, succ u2} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.Functor.category.{u2, u2, u3, succ u2} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u2} CategoryTheory.types.{u2}))) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, max u3 (succ u2)} C _inst_1 (CategoryTheory.Functor.{u2, u2, u3, succ u2} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.Functor.category.{u2, u2, u3, succ u2} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.yoneda.{u2, u3} C _inst_1)) X) c)) -> (CategoryTheory.Limits.IsLimit.{u1, u2, u1, u3} J _inst_2 (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) K c)
+  forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] (J : Type.{u1}) [_inst_2 : CategoryTheory.SmallCategory.{u1} J] (K : CategoryTheory.Functor.{u1, u2, u1, u3} J _inst_2 (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1)) (c : CategoryTheory.Limits.Cone.{u1, u2, u1, u3} J _inst_2 (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) K), (forall (X : C), CategoryTheory.Limits.IsLimit.{u1, u2, u1, succ u2} J _inst_2 Type.{u2} CategoryTheory.types.{u2} (CategoryTheory.Functor.comp.{u1, u2, u2, u1, u3, succ u2} J _inst_2 (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u2} CategoryTheory.types.{u2} K (Prefunctor.obj.{succ u2, max (succ u2) (succ u3), u3, max (succ u2) u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Functor.{u2, u2, u3, succ u2} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max u3 (succ u2)} (CategoryTheory.Functor.{u2, u2, u3, succ u2} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max u3 (succ u2)} (CategoryTheory.Functor.{u2, u2, u3, succ u2} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.Functor.category.{u2, u2, u3, succ u2} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u2} CategoryTheory.types.{u2}))) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, max u3 (succ u2)} C _inst_1 (CategoryTheory.Functor.{u2, u2, u3, succ u2} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.Functor.category.{u2, u2, u3, succ u2} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.yoneda.{u2, u3} C _inst_1)) X)) (CategoryTheory.Functor.mapCone.{u1, u2, u2, u1, u3, succ u2} J _inst_2 (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u2} CategoryTheory.types.{u2} (Prefunctor.obj.{succ u2, max (succ u2) (succ u3), u3, max (succ u2) u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Functor.{u2, u2, u3, succ u2} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max u3 (succ u2)} (CategoryTheory.Functor.{u2, u2, u3, succ u2} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max u3 (succ u2)} (CategoryTheory.Functor.{u2, u2, u3, succ u2} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.Functor.category.{u2, u2, u3, succ u2} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u2} CategoryTheory.types.{u2}))) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, max u3 (succ u2)} C _inst_1 (CategoryTheory.Functor.{u2, u2, u3, succ u2} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.Functor.category.{u2, u2, u3, succ u2} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.yoneda.{u2, u3} C _inst_1)) X) K c)) -> (CategoryTheory.Limits.IsLimit.{u1, u2, u1, u3} J _inst_2 (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) K c)
 Case conversion may be inaccurate. Consider using '#align category_theory.yoneda_jointly_reflects_limits CategoryTheory.yonedaJointlyReflectsLimitsₓ'. -/
 /-- The yoneda embeddings jointly reflect limits. -/
 def yonedaJointlyReflectsLimits (J : Type w) [SmallCategory J] (K : J ⥤ Cᵒᵖ) (c : Cone K)
@@ -177,7 +177,7 @@ def yonedaJointlyReflectsLimits (J : Type w) [SmallCategory J] (K : J ⥤ Cᵒ
 lean 3 declaration is
   forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] (J : Type.{u1}) [_inst_2 : CategoryTheory.SmallCategory.{u1} J] (K : CategoryTheory.Functor.{u1, u2, u1, u3} J _inst_2 C _inst_1) (c : CategoryTheory.Limits.Cone.{u1, u2, u1, u3} J _inst_2 C _inst_1 K), (forall (X : Opposite.{succ u3} C), CategoryTheory.Limits.IsLimit.{u1, u2, u1, succ u2} J _inst_2 Type.{u2} CategoryTheory.types.{u2} (CategoryTheory.Functor.comp.{u1, u2, u2, u1, u3, succ u2} J _inst_2 C _inst_1 Type.{u2} CategoryTheory.types.{u2} K (CategoryTheory.Functor.obj.{u2, max u3 u2, u3, max u2 u3 (succ u2)} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) (CategoryTheory.Functor.{u2, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.Functor.category.{u2, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.coyoneda.{u2, u3} C _inst_1) X)) (CategoryTheory.Functor.mapCone.{u1, u2, u2, u1, u3, succ u2} J _inst_2 C _inst_1 Type.{u2} CategoryTheory.types.{u2} K (CategoryTheory.Functor.obj.{u2, max u3 u2, u3, max u2 u3 (succ u2)} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) (CategoryTheory.Functor.{u2, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.Functor.category.{u2, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.coyoneda.{u2, u3} C _inst_1) X) c)) -> (CategoryTheory.Limits.IsLimit.{u1, u2, u1, u3} J _inst_2 C _inst_1 K c)
 but is expected to have type
-  forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] (J : Type.{u1}) [_inst_2 : CategoryTheory.SmallCategory.{u1} J] (K : CategoryTheory.Functor.{u1, u2, u1, u3} J _inst_2 C _inst_1) (c : CategoryTheory.Limits.Cone.{u1, u2, u1, u3} J _inst_2 C _inst_1 K), (forall (X : Opposite.{succ u3} C), CategoryTheory.Limits.IsLimit.{u1, u2, u1, succ u2} J _inst_2 Type.{u2} CategoryTheory.types.{u2} (CategoryTheory.Functor.comp.{u1, u2, u2, u1, u3, succ u2} J _inst_2 C _inst_1 Type.{u2} CategoryTheory.types.{u2} K (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u3, max u3 (succ u2)} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) (CategoryTheory.Functor.{u2, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max u3 (succ u2)} (CategoryTheory.Functor.{u2, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max u3 (succ u2)} (CategoryTheory.Functor.{u2, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.Functor.category.{u2, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2}))) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, max u3 (succ u2)} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) (CategoryTheory.Functor.{u2, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.Functor.category.{u2, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.coyoneda.{u2, u3} C _inst_1)) X)) (CategoryTheory.Functor.mapCone.{u1, u2, u2, u1, u3, succ u2} J _inst_2 C _inst_1 Type.{u2} CategoryTheory.types.{u2} K (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u3, max u3 (succ u2)} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) (CategoryTheory.Functor.{u2, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max u3 (succ u2)} (CategoryTheory.Functor.{u2, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max u3 (succ u2)} (CategoryTheory.Functor.{u2, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.Functor.category.{u2, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2}))) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, max u3 (succ u2)} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) (CategoryTheory.Functor.{u2, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.Functor.category.{u2, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.coyoneda.{u2, u3} C _inst_1)) X) c)) -> (CategoryTheory.Limits.IsLimit.{u1, u2, u1, u3} J _inst_2 C _inst_1 K c)
+  forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] (J : Type.{u1}) [_inst_2 : CategoryTheory.SmallCategory.{u1} J] (K : CategoryTheory.Functor.{u1, u2, u1, u3} J _inst_2 C _inst_1) (c : CategoryTheory.Limits.Cone.{u1, u2, u1, u3} J _inst_2 C _inst_1 K), (forall (X : Opposite.{succ u3} C), CategoryTheory.Limits.IsLimit.{u1, u2, u1, succ u2} J _inst_2 Type.{u2} CategoryTheory.types.{u2} (CategoryTheory.Functor.comp.{u1, u2, u2, u1, u3, succ u2} J _inst_2 C _inst_1 Type.{u2} CategoryTheory.types.{u2} K (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u3, max u3 (succ u2)} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) (CategoryTheory.Functor.{u2, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max u3 (succ u2)} (CategoryTheory.Functor.{u2, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max u3 (succ u2)} (CategoryTheory.Functor.{u2, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.Functor.category.{u2, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2}))) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, max u3 (succ u2)} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) (CategoryTheory.Functor.{u2, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.Functor.category.{u2, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.coyoneda.{u2, u3} C _inst_1)) X)) (CategoryTheory.Functor.mapCone.{u1, u2, u2, u1, u3, succ u2} J _inst_2 C _inst_1 Type.{u2} CategoryTheory.types.{u2} (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u3, max u3 (succ u2)} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) (CategoryTheory.Functor.{u2, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max u3 (succ u2)} (CategoryTheory.Functor.{u2, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max u3 (succ u2)} (CategoryTheory.Functor.{u2, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.Functor.category.{u2, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2}))) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, max u3 (succ u2)} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) (CategoryTheory.Functor.{u2, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.Functor.category.{u2, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.coyoneda.{u2, u3} C _inst_1)) X) K c)) -> (CategoryTheory.Limits.IsLimit.{u1, u2, u1, u3} J _inst_2 C _inst_1 K c)
 Case conversion may be inaccurate. Consider using '#align category_theory.coyoneda_jointly_reflects_limits CategoryTheory.coyonedaJointlyReflectsLimitsₓ'. -/
 /-- The coyoneda embeddings jointly reflect limits. -/
 def coyonedaJointlyReflectsLimits (J : Type w) [SmallCategory J] (K : J ⥤ C) (c : Cone K)
Diff
@@ -35,6 +35,12 @@ namespace Coyoneda
 
 variable {C : Type v} [SmallCategory C]
 
+/- warning: category_theory.coyoneda.colimit_cocone -> CategoryTheory.Coyoneda.colimitCocone is a dubious translation:
+lean 3 declaration is
+  forall {C : Type.{u1}} [_inst_1 : CategoryTheory.SmallCategory.{u1} C] (X : Opposite.{succ u1} C), CategoryTheory.Limits.Cocone.{u1, u1, u1, succ u1} C _inst_1 Type.{u1} CategoryTheory.types.{u1} (CategoryTheory.Functor.obj.{u1, u1, u1, succ u1} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u1, u1} C _inst_1) (CategoryTheory.Functor.{u1, u1, u1, succ u1} C _inst_1 Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Functor.category.{u1, u1, u1, succ u1} C _inst_1 Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.coyoneda.{u1, u1} C _inst_1) X)
+but is expected to have type
+  forall {C : Type.{u1}} [_inst_1 : CategoryTheory.SmallCategory.{u1} C] (X : Opposite.{succ u1} C), CategoryTheory.Limits.Cocone.{u1, u1, u1, succ u1} C _inst_1 Type.{u1} CategoryTheory.types.{u1} (Prefunctor.obj.{succ u1, succ u1, u1, succ u1} (Opposite.{succ u1} C) (CategoryTheory.CategoryStruct.toQuiver.{u1, u1} (Opposite.{succ u1} C) (CategoryTheory.Category.toCategoryStruct.{u1, u1} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u1, u1} C _inst_1))) (CategoryTheory.Functor.{u1, u1, u1, succ u1} C _inst_1 Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} (CategoryTheory.Functor.{u1, u1, u1, succ u1} C _inst_1 Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} (CategoryTheory.Functor.{u1, u1, u1, succ u1} C _inst_1 Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Functor.category.{u1, u1, u1, succ u1} C _inst_1 Type.{u1} CategoryTheory.types.{u1}))) (CategoryTheory.Functor.toPrefunctor.{u1, u1, u1, succ u1} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u1, u1} C _inst_1) (CategoryTheory.Functor.{u1, u1, u1, succ u1} C _inst_1 Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Functor.category.{u1, u1, u1, succ u1} C _inst_1 Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.coyoneda.{u1, u1} C _inst_1)) X)
+Case conversion may be inaccurate. Consider using '#align category_theory.coyoneda.colimit_cocone CategoryTheory.Coyoneda.colimitCoconeₓ'. -/
 /-- The colimit cocone over `coyoneda.obj X`, with cocone point `punit`.
 -/
 @[simps]
@@ -42,8 +48,14 @@ def colimitCocone (X : Cᵒᵖ) : Cocone (coyoneda.obj X)
     where
   pt := PUnit
   ι := { app := by tidy }
-#align category_theory.coyoneda.colimit_cocone CategoryTheory.coyoneda.colimitCocone
-
+#align category_theory.coyoneda.colimit_cocone CategoryTheory.Coyoneda.colimitCocone
+
+/- warning: category_theory.coyoneda.colimit_cocone_is_colimit -> CategoryTheory.Coyoneda.colimitCoconeIsColimit is a dubious translation:
+lean 3 declaration is
+  forall {C : Type.{u1}} [_inst_1 : CategoryTheory.SmallCategory.{u1} C] (X : Opposite.{succ u1} C), CategoryTheory.Limits.IsColimit.{u1, u1, u1, succ u1} C _inst_1 Type.{u1} CategoryTheory.types.{u1} (CategoryTheory.Functor.obj.{u1, u1, u1, succ u1} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u1, u1} C _inst_1) (CategoryTheory.Functor.{u1, u1, u1, succ u1} C _inst_1 Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Functor.category.{u1, u1, u1, succ u1} C _inst_1 Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.coyoneda.{u1, u1} C _inst_1) X) (CategoryTheory.Coyoneda.colimitCocone.{u1} C _inst_1 X)
+but is expected to have type
+  forall {C : Type.{u1}} [_inst_1 : CategoryTheory.SmallCategory.{u1} C] (X : Opposite.{succ u1} C), CategoryTheory.Limits.IsColimit.{u1, u1, u1, succ u1} C _inst_1 Type.{u1} CategoryTheory.types.{u1} (Prefunctor.obj.{succ u1, succ u1, u1, succ u1} (Opposite.{succ u1} C) (CategoryTheory.CategoryStruct.toQuiver.{u1, u1} (Opposite.{succ u1} C) (CategoryTheory.Category.toCategoryStruct.{u1, u1} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u1, u1} C _inst_1))) (CategoryTheory.Functor.{u1, u1, u1, succ u1} C _inst_1 Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} (CategoryTheory.Functor.{u1, u1, u1, succ u1} C _inst_1 Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} (CategoryTheory.Functor.{u1, u1, u1, succ u1} C _inst_1 Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Functor.category.{u1, u1, u1, succ u1} C _inst_1 Type.{u1} CategoryTheory.types.{u1}))) (CategoryTheory.Functor.toPrefunctor.{u1, u1, u1, succ u1} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u1, u1} C _inst_1) (CategoryTheory.Functor.{u1, u1, u1, succ u1} C _inst_1 Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Functor.category.{u1, u1, u1, succ u1} C _inst_1 Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.coyoneda.{u1, u1} C _inst_1)) X) (CategoryTheory.Coyoneda.colimitCocone.{u1} C _inst_1 X)
+Case conversion may be inaccurate. Consider using '#align category_theory.coyoneda.colimit_cocone_is_colimit CategoryTheory.Coyoneda.colimitCoconeIsColimitₓ'. -/
 /-- The proposed colimit cocone over `coyoneda.obj X` is a colimit cocone.
 -/
 @[simps]
@@ -58,20 +70,26 @@ def colimitCoconeIsColimit (X : Cᵒᵖ) : IsColimit (colimitCocone X)
     ext ⟨⟩
     rw [← w]
     simp
-#align category_theory.coyoneda.colimit_cocone_is_colimit CategoryTheory.coyoneda.colimitCoconeIsColimit
+#align category_theory.coyoneda.colimit_cocone_is_colimit CategoryTheory.Coyoneda.colimitCoconeIsColimit
 
 instance (X : Cᵒᵖ) : HasColimit (coyoneda.obj X) :=
   HasColimit.mk
     { Cocone := _
       IsColimit := colimitCoconeIsColimit X }
 
+/- warning: category_theory.coyoneda.colimit_coyoneda_iso -> CategoryTheory.Coyoneda.colimitCoyonedaIso is a dubious translation:
+lean 3 declaration is
+  forall {C : Type.{u1}} [_inst_1 : CategoryTheory.SmallCategory.{u1} C] (X : Opposite.{succ u1} C), CategoryTheory.Iso.{u1, succ u1} Type.{u1} CategoryTheory.types.{u1} (CategoryTheory.Limits.colimit.{u1, u1, u1, succ u1} C _inst_1 Type.{u1} CategoryTheory.types.{u1} (CategoryTheory.Functor.obj.{u1, u1, u1, succ u1} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u1, u1} C _inst_1) (CategoryTheory.Functor.{u1, u1, u1, succ u1} C _inst_1 Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Functor.category.{u1, u1, u1, succ u1} C _inst_1 Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.coyoneda.{u1, u1} C _inst_1) X) (CategoryTheory.coyoneda.Obj.CategoryTheory.Limits.hasColimit.{u1} C _inst_1 X)) PUnit.{succ u1}
+but is expected to have type
+  forall {C : Type.{u1}} [_inst_1 : CategoryTheory.SmallCategory.{u1} C] (X : Opposite.{succ u1} C), CategoryTheory.Iso.{u1, succ u1} Type.{u1} CategoryTheory.types.{u1} (CategoryTheory.Limits.colimit.{u1, u1, u1, succ u1} C _inst_1 Type.{u1} CategoryTheory.types.{u1} (Prefunctor.obj.{succ u1, succ u1, u1, succ u1} (Opposite.{succ u1} C) (CategoryTheory.CategoryStruct.toQuiver.{u1, u1} (Opposite.{succ u1} C) (CategoryTheory.Category.toCategoryStruct.{u1, u1} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u1, u1} C _inst_1))) (CategoryTheory.Functor.{u1, u1, u1, succ u1} C _inst_1 Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} (CategoryTheory.Functor.{u1, u1, u1, succ u1} C _inst_1 Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} (CategoryTheory.Functor.{u1, u1, u1, succ u1} C _inst_1 Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Functor.category.{u1, u1, u1, succ u1} C _inst_1 Type.{u1} CategoryTheory.types.{u1}))) (CategoryTheory.Functor.toPrefunctor.{u1, u1, u1, succ u1} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u1, u1} C _inst_1) (CategoryTheory.Functor.{u1, u1, u1, succ u1} C _inst_1 Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Functor.category.{u1, u1, u1, succ u1} C _inst_1 Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.coyoneda.{u1, u1} C _inst_1)) X) (CategoryTheory.Coyoneda.instHasColimitTypeTypesObjOppositeToQuiverToCategoryStructOppositeFunctorToQuiverToCategoryStructCategoryToPrefunctorCoyoneda.{u1} C _inst_1 X)) PUnit.{succ u1}
+Case conversion may be inaccurate. Consider using '#align category_theory.coyoneda.colimit_coyoneda_iso CategoryTheory.Coyoneda.colimitCoyonedaIsoₓ'. -/
 /-- The colimit of `coyoneda.obj X` is isomorphic to `punit`.
 -/
 noncomputable def colimitCoyonedaIso (X : Cᵒᵖ) : colimit (coyoneda.obj X) ≅ PUnit :=
   colimit.isoColimitCocone
     { Cocone := _
       IsColimit := colimitCoconeIsColimit X }
-#align category_theory.coyoneda.colimit_coyoneda_iso CategoryTheory.coyoneda.colimitCoyonedaIso
+#align category_theory.coyoneda.colimit_coyoneda_iso CategoryTheory.Coyoneda.colimitCoyonedaIso
 
 end Coyoneda
 
@@ -79,6 +97,12 @@ variable {C : Type u} [Category.{v} C]
 
 open Limits
 
+/- warning: category_theory.yoneda_preserves_limits -> CategoryTheory.yonedaPreservesLimits is a dubious translation:
+lean 3 declaration is
+  forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} C] (X : C), CategoryTheory.Limits.PreservesLimits.{u1, u1, u2, succ u1} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u1, u2} C _inst_1) Type.{u1} CategoryTheory.types.{u1} (CategoryTheory.Functor.obj.{u1, max u2 u1, u2, max u1 u2 (succ u1)} C _inst_1 (CategoryTheory.Functor.{u1, u1, u2, succ u1} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u1, u2} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Functor.category.{u1, u1, u2, succ u1} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u1, u2} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.yoneda.{u1, u2} C _inst_1) X)
+but is expected to have type
+  forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} C] (X : C), CategoryTheory.Limits.PreservesLimits.{u1, u1, u2, succ u1} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u1, u2} C _inst_1) Type.{u1} CategoryTheory.types.{u1} (Prefunctor.obj.{succ u1, max (succ u1) (succ u2), u2, max (succ u1) u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Functor.{u1, u1, u2, succ u1} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u1, u2} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 (succ u1)} (CategoryTheory.Functor.{u1, u1, u2, succ u1} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u1, u2} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 (succ u1)} (CategoryTheory.Functor.{u1, u1, u2, succ u1} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u1, u2} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Functor.category.{u1, u1, u2, succ u1} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u1, u2} C _inst_1) Type.{u1} CategoryTheory.types.{u1}))) (CategoryTheory.Functor.toPrefunctor.{u1, max u2 u1, u2, max u2 (succ u1)} C _inst_1 (CategoryTheory.Functor.{u1, u1, u2, succ u1} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u1, u2} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Functor.category.{u1, u1, u2, succ u1} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u1, u2} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.yoneda.{u1, u2} C _inst_1)) X)
+Case conversion may be inaccurate. Consider using '#align category_theory.yoneda_preserves_limits CategoryTheory.yonedaPreservesLimitsₓ'. -/
 /-- The yoneda embedding `yoneda.obj X : Cᵒᵖ ⥤ Type v` for `X : C` preserves limits. -/
 instance yonedaPreservesLimits (X : C) : PreservesLimits (yoneda.obj X)
     where PreservesLimitsOfShape J 𝒥 :=
@@ -99,6 +123,12 @@ instance yonedaPreservesLimits (X : C) : PreservesLimits (yoneda.obj X)
                   · exact Quiver.Hom.unop_inj (congr_fun (w j) x) } } }
 #align category_theory.yoneda_preserves_limits CategoryTheory.yonedaPreservesLimits
 
+/- warning: category_theory.coyoneda_preserves_limits -> CategoryTheory.coyonedaPreservesLimits is a dubious translation:
+lean 3 declaration is
+  forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} C] (X : Opposite.{succ u2} C), CategoryTheory.Limits.PreservesLimits.{u1, u1, u2, succ u1} C _inst_1 Type.{u1} CategoryTheory.types.{u1} (CategoryTheory.Functor.obj.{u1, max u2 u1, u2, max u1 u2 (succ u1)} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u1, u2} C _inst_1) (CategoryTheory.Functor.{u1, u1, u2, succ u1} C _inst_1 Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Functor.category.{u1, u1, u2, succ u1} C _inst_1 Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.coyoneda.{u1, u2} C _inst_1) X)
+but is expected to have type
+  forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} C] (X : Opposite.{succ u2} C), CategoryTheory.Limits.PreservesLimits.{u1, u1, u2, succ u1} C _inst_1 Type.{u1} CategoryTheory.types.{u1} (Prefunctor.obj.{succ u1, max (succ u2) (succ u1), u2, max u2 (succ u1)} (Opposite.{succ u2} C) (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} (Opposite.{succ u2} C) (CategoryTheory.Category.toCategoryStruct.{u1, u2} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u1, u2} C _inst_1))) (CategoryTheory.Functor.{u1, u1, u2, succ u1} C _inst_1 Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 (succ u1)} (CategoryTheory.Functor.{u1, u1, u2, succ u1} C _inst_1 Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 (succ u1)} (CategoryTheory.Functor.{u1, u1, u2, succ u1} C _inst_1 Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Functor.category.{u1, u1, u2, succ u1} C _inst_1 Type.{u1} CategoryTheory.types.{u1}))) (CategoryTheory.Functor.toPrefunctor.{u1, max u2 u1, u2, max u2 (succ u1)} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u1, u2} C _inst_1) (CategoryTheory.Functor.{u1, u1, u2, succ u1} C _inst_1 Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Functor.category.{u1, u1, u2, succ u1} C _inst_1 Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.coyoneda.{u1, u2} C _inst_1)) X)
+Case conversion may be inaccurate. Consider using '#align category_theory.coyoneda_preserves_limits CategoryTheory.coyonedaPreservesLimitsₓ'. -/
 /-- The coyoneda embedding `coyoneda.obj X : C ⥤ Type v` for `X : Cᵒᵖ` preserves limits. -/
 instance coyonedaPreservesLimits (X : Cᵒᵖ) : PreservesLimits (coyoneda.obj X)
     where PreservesLimitsOfShape J 𝒥 :=
@@ -120,6 +150,12 @@ instance coyonedaPreservesLimits (X : Cᵒᵖ) : PreservesLimits (coyoneda.obj X
                   exact congr_fun (w j) x } } }
 #align category_theory.coyoneda_preserves_limits CategoryTheory.coyonedaPreservesLimits
 
+/- warning: category_theory.yoneda_jointly_reflects_limits -> CategoryTheory.yonedaJointlyReflectsLimits is a dubious translation:
+lean 3 declaration is
+  forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] (J : Type.{u1}) [_inst_2 : CategoryTheory.SmallCategory.{u1} J] (K : CategoryTheory.Functor.{u1, u2, u1, u3} J _inst_2 (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1)) (c : CategoryTheory.Limits.Cone.{u1, u2, u1, u3} J _inst_2 (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) K), (forall (X : C), CategoryTheory.Limits.IsLimit.{u1, u2, u1, succ u2} J _inst_2 Type.{u2} CategoryTheory.types.{u2} (CategoryTheory.Functor.comp.{u1, u2, u2, u1, u3, succ u2} J _inst_2 (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u2} CategoryTheory.types.{u2} K (CategoryTheory.Functor.obj.{u2, max u3 u2, u3, max u2 u3 (succ u2)} C _inst_1 (CategoryTheory.Functor.{u2, u2, u3, succ u2} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.Functor.category.{u2, u2, u3, succ u2} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.yoneda.{u2, u3} C _inst_1) X)) (CategoryTheory.Functor.mapCone.{u1, u2, u2, u1, u3, succ u2} J _inst_2 (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u2} CategoryTheory.types.{u2} K (CategoryTheory.Functor.obj.{u2, max u3 u2, u3, max u2 u3 (succ u2)} C _inst_1 (CategoryTheory.Functor.{u2, u2, u3, succ u2} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.Functor.category.{u2, u2, u3, succ u2} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.yoneda.{u2, u3} C _inst_1) X) c)) -> (CategoryTheory.Limits.IsLimit.{u1, u2, u1, u3} J _inst_2 (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) K c)
+but is expected to have type
+  forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] (J : Type.{u1}) [_inst_2 : CategoryTheory.SmallCategory.{u1} J] (K : CategoryTheory.Functor.{u1, u2, u1, u3} J _inst_2 (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1)) (c : CategoryTheory.Limits.Cone.{u1, u2, u1, u3} J _inst_2 (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) K), (forall (X : C), CategoryTheory.Limits.IsLimit.{u1, u2, u1, succ u2} J _inst_2 Type.{u2} CategoryTheory.types.{u2} (CategoryTheory.Functor.comp.{u1, u2, u2, u1, u3, succ u2} J _inst_2 (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u2} CategoryTheory.types.{u2} K (Prefunctor.obj.{succ u2, max (succ u2) (succ u3), u3, max (succ u2) u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Functor.{u2, u2, u3, succ u2} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max u3 (succ u2)} (CategoryTheory.Functor.{u2, u2, u3, succ u2} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max u3 (succ u2)} (CategoryTheory.Functor.{u2, u2, u3, succ u2} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.Functor.category.{u2, u2, u3, succ u2} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u2} CategoryTheory.types.{u2}))) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, max u3 (succ u2)} C _inst_1 (CategoryTheory.Functor.{u2, u2, u3, succ u2} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.Functor.category.{u2, u2, u3, succ u2} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.yoneda.{u2, u3} C _inst_1)) X)) (CategoryTheory.Functor.mapCone.{u1, u2, u2, u1, u3, succ u2} J _inst_2 (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u2} CategoryTheory.types.{u2} K (Prefunctor.obj.{succ u2, max (succ u2) (succ u3), u3, max (succ u2) u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Functor.{u2, u2, u3, succ u2} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max u3 (succ u2)} (CategoryTheory.Functor.{u2, u2, u3, succ u2} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max u3 (succ u2)} (CategoryTheory.Functor.{u2, u2, u3, succ u2} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.Functor.category.{u2, u2, u3, succ u2} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u2} CategoryTheory.types.{u2}))) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, max u3 (succ u2)} C _inst_1 (CategoryTheory.Functor.{u2, u2, u3, succ u2} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.Functor.category.{u2, u2, u3, succ u2} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.yoneda.{u2, u3} C _inst_1)) X) c)) -> (CategoryTheory.Limits.IsLimit.{u1, u2, u1, u3} J _inst_2 (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) K c)
+Case conversion may be inaccurate. Consider using '#align category_theory.yoneda_jointly_reflects_limits CategoryTheory.yonedaJointlyReflectsLimitsₓ'. -/
 /-- The yoneda embeddings jointly reflect limits. -/
 def yonedaJointlyReflectsLimits (J : Type w) [SmallCategory J] (K : J ⥤ Cᵒᵖ) (c : Cone K)
     (t : ∀ X : C, IsLimit ((yoneda.obj X).mapCone c)) : IsLimit c :=
@@ -137,6 +173,12 @@ def yonedaJointlyReflectsLimits (J : Type w) [SmallCategory J] (K : J ⥤ Cᵒ
       exact Quiver.Hom.op_inj (w j) }
 #align category_theory.yoneda_jointly_reflects_limits CategoryTheory.yonedaJointlyReflectsLimits
 
+/- warning: category_theory.coyoneda_jointly_reflects_limits -> CategoryTheory.coyonedaJointlyReflectsLimits is a dubious translation:
+lean 3 declaration is
+  forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] (J : Type.{u1}) [_inst_2 : CategoryTheory.SmallCategory.{u1} J] (K : CategoryTheory.Functor.{u1, u2, u1, u3} J _inst_2 C _inst_1) (c : CategoryTheory.Limits.Cone.{u1, u2, u1, u3} J _inst_2 C _inst_1 K), (forall (X : Opposite.{succ u3} C), CategoryTheory.Limits.IsLimit.{u1, u2, u1, succ u2} J _inst_2 Type.{u2} CategoryTheory.types.{u2} (CategoryTheory.Functor.comp.{u1, u2, u2, u1, u3, succ u2} J _inst_2 C _inst_1 Type.{u2} CategoryTheory.types.{u2} K (CategoryTheory.Functor.obj.{u2, max u3 u2, u3, max u2 u3 (succ u2)} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) (CategoryTheory.Functor.{u2, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.Functor.category.{u2, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.coyoneda.{u2, u3} C _inst_1) X)) (CategoryTheory.Functor.mapCone.{u1, u2, u2, u1, u3, succ u2} J _inst_2 C _inst_1 Type.{u2} CategoryTheory.types.{u2} K (CategoryTheory.Functor.obj.{u2, max u3 u2, u3, max u2 u3 (succ u2)} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) (CategoryTheory.Functor.{u2, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.Functor.category.{u2, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.coyoneda.{u2, u3} C _inst_1) X) c)) -> (CategoryTheory.Limits.IsLimit.{u1, u2, u1, u3} J _inst_2 C _inst_1 K c)
+but is expected to have type
+  forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] (J : Type.{u1}) [_inst_2 : CategoryTheory.SmallCategory.{u1} J] (K : CategoryTheory.Functor.{u1, u2, u1, u3} J _inst_2 C _inst_1) (c : CategoryTheory.Limits.Cone.{u1, u2, u1, u3} J _inst_2 C _inst_1 K), (forall (X : Opposite.{succ u3} C), CategoryTheory.Limits.IsLimit.{u1, u2, u1, succ u2} J _inst_2 Type.{u2} CategoryTheory.types.{u2} (CategoryTheory.Functor.comp.{u1, u2, u2, u1, u3, succ u2} J _inst_2 C _inst_1 Type.{u2} CategoryTheory.types.{u2} K (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u3, max u3 (succ u2)} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) (CategoryTheory.Functor.{u2, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max u3 (succ u2)} (CategoryTheory.Functor.{u2, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max u3 (succ u2)} (CategoryTheory.Functor.{u2, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.Functor.category.{u2, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2}))) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, max u3 (succ u2)} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) (CategoryTheory.Functor.{u2, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.Functor.category.{u2, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.coyoneda.{u2, u3} C _inst_1)) X)) (CategoryTheory.Functor.mapCone.{u1, u2, u2, u1, u3, succ u2} J _inst_2 C _inst_1 Type.{u2} CategoryTheory.types.{u2} K (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u3, max u3 (succ u2)} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) (CategoryTheory.Functor.{u2, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max u3 (succ u2)} (CategoryTheory.Functor.{u2, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max u3 (succ u2)} (CategoryTheory.Functor.{u2, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.Functor.category.{u2, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2}))) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u3, max u3 (succ u2)} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) (CategoryTheory.Functor.{u2, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.Functor.category.{u2, u2, u3, succ u2} C _inst_1 Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.coyoneda.{u2, u3} C _inst_1)) X) c)) -> (CategoryTheory.Limits.IsLimit.{u1, u2, u1, u3} J _inst_2 C _inst_1 K c)
+Case conversion may be inaccurate. Consider using '#align category_theory.coyoneda_jointly_reflects_limits CategoryTheory.coyonedaJointlyReflectsLimitsₓ'. -/
 /-- The coyoneda embeddings jointly reflect limits. -/
 def coyonedaJointlyReflectsLimits (J : Type w) [SmallCategory J] (K : J ⥤ C) (c : Cone K)
     (t : ∀ X : Cᵒᵖ, IsLimit ((coyoneda.obj X).mapCone c)) : IsLimit c :=
@@ -154,6 +196,7 @@ def coyonedaJointlyReflectsLimits (J : Type w) [SmallCategory J] (K : J ⥤ C) (
 
 variable {D : Type u} [SmallCategory D]
 
+#print CategoryTheory.yonedaFunctorPreservesLimits /-
 instance yonedaFunctorPreservesLimits : PreservesLimits (@yoneda D _) :=
   by
   apply preserves_limits_of_evaluation
@@ -161,7 +204,9 @@ instance yonedaFunctorPreservesLimits : PreservesLimits (@yoneda D _) :=
   change preserves_limits (coyoneda.obj K)
   infer_instance
 #align category_theory.yoneda_functor_preserves_limits CategoryTheory.yonedaFunctorPreservesLimits
+-/
 
+#print CategoryTheory.coyonedaFunctorPreservesLimits /-
 instance coyonedaFunctorPreservesLimits : PreservesLimits (@coyoneda D _) :=
   by
   apply preserves_limits_of_evaluation
@@ -169,14 +214,19 @@ instance coyonedaFunctorPreservesLimits : PreservesLimits (@coyoneda D _) :=
   change preserves_limits (yoneda.obj K)
   infer_instance
 #align category_theory.coyoneda_functor_preserves_limits CategoryTheory.coyonedaFunctorPreservesLimits
+-/
 
+#print CategoryTheory.yonedaFunctorReflectsLimits /-
 instance yonedaFunctorReflectsLimits : ReflectsLimits (@yoneda D _) :=
   Limits.fullyFaithfulReflectsLimits _
 #align category_theory.yoneda_functor_reflects_limits CategoryTheory.yonedaFunctorReflectsLimits
+-/
 
+#print CategoryTheory.coyonedaFunctorReflectsLimits /-
 instance coyonedaFunctorReflectsLimits : ReflectsLimits (@coyoneda D _) :=
   Limits.fullyFaithfulReflectsLimits _
 #align category_theory.coyoneda_functor_reflects_limits CategoryTheory.coyonedaFunctorReflectsLimits
+-/
 
 end CategoryTheory
 
Diff
@@ -40,7 +40,7 @@ variable {C : Type v} [SmallCategory C]
 @[simps]
 def colimitCocone (X : Cᵒᵖ) : Cocone (coyoneda.obj X)
     where
-  x := PUnit
+  pt := PUnit
   ι := { app := by tidy }
 #align category_theory.coyoneda.colimit_cocone CategoryTheory.coyoneda.colimitCocone
 
@@ -123,11 +123,11 @@ instance coyonedaPreservesLimits (X : Cᵒᵖ) : PreservesLimits (coyoneda.obj X
 /-- The yoneda embeddings jointly reflect limits. -/
 def yonedaJointlyReflectsLimits (J : Type w) [SmallCategory J] (K : J ⥤ Cᵒᵖ) (c : Cone K)
     (t : ∀ X : C, IsLimit ((yoneda.obj X).mapCone c)) : IsLimit c :=
-  let s' : ∀ s : Cone K, Cone (K ⋙ yoneda.obj s.x.unop) := fun s =>
+  let s' : ∀ s : Cone K, Cone (K ⋙ yoneda.obj s.pt.unop) := fun s =>
     ⟨PUnit, fun j _ => (s.π.app j).unop, fun j₁ j₂ α =>
       funext fun _ => Quiver.Hom.op_inj (s.w α).symm⟩
-  { lift := fun s => ((t s.x.unop).lift (s' s) PUnit.unit).op
-    fac := fun s j => Quiver.Hom.unop_inj (congr_fun ((t s.x.unop).fac (s' s) j) PUnit.unit)
+  { lift := fun s => ((t s.pt.unop).lift (s' s) PUnit.unit).op
+    fac := fun s j => Quiver.Hom.unop_inj (congr_fun ((t s.pt.unop).fac (s' s) j) PUnit.unit)
     uniq := fun s m w => by
       apply Quiver.Hom.unop_inj
       suffices (fun x : PUnit => m.unop) = (t s.X.unop).lift (s' s) by
@@ -140,9 +140,9 @@ def yonedaJointlyReflectsLimits (J : Type w) [SmallCategory J] (K : J ⥤ Cᵒ
 /-- The coyoneda embeddings jointly reflect limits. -/
 def coyonedaJointlyReflectsLimits (J : Type w) [SmallCategory J] (K : J ⥤ C) (c : Cone K)
     (t : ∀ X : Cᵒᵖ, IsLimit ((coyoneda.obj X).mapCone c)) : IsLimit c :=
-  let s' : ∀ s : Cone K, Cone (K ⋙ coyoneda.obj (op s.x)) := fun s =>
+  let s' : ∀ s : Cone K, Cone (K ⋙ coyoneda.obj (op s.pt)) := fun s =>
     ⟨PUnit, fun j _ => s.π.app j, fun j₁ j₂ α => funext fun _ => (s.w α).symm⟩
-  { lift := fun s => (t (op s.x)).lift (s' s) PUnit.unit
+  { lift := fun s => (t (op s.pt)).lift (s' s) PUnit.unit
     fac := fun s j => congr_fun ((t _).fac (s' s) j) PUnit.unit
     uniq := fun s m w =>
       by
Diff
@@ -50,11 +50,11 @@ def colimitCocone (X : Cᵒᵖ) : Cocone (coyoneda.obj X)
 def colimitCoconeIsColimit (X : Cᵒᵖ) : IsColimit (colimitCocone X)
     where
   desc s x := s.ι.app (unop X) (𝟙 _)
-  fac' s Y := by
+  fac s Y := by
     ext f
     convert congr_fun (s.w f).symm (𝟙 (unop X))
     simp
-  uniq' s m w := by
+  uniq s m w := by
     ext ⟨⟩
     rw [← w]
     simp
@@ -88,8 +88,8 @@ instance yonedaPreservesLimits (X : C) : PreservesLimits (yoneda.obj X)
           preserves := fun c t =>
             { lift := fun s x =>
                 Quiver.Hom.unop (t.lift ⟨op X, fun j => (s.π.app j x).op, fun j₁ j₂ α => _⟩)
-              fac' := fun s j => funext fun x => Quiver.Hom.op_inj (t.fac _ _)
-              uniq' := fun s m w =>
+              fac := fun s j => funext fun x => Quiver.Hom.op_inj (t.fac _ _)
+              uniq := fun s m w =>
                 funext fun x =>
                   by
                   refine' Quiver.Hom.op_inj (t.uniq ⟨op X, _, _⟩ _ fun j => _)
@@ -113,8 +113,8 @@ instance coyonedaPreservesLimits (X : Cᵒᵖ) : PreservesLimits (coyoneda.obj X
                     dsimp
                     simp [← s.w α]⟩
               -- See library note [dsimp, simp]
-              fac' := fun s j => funext fun x => t.fac _ _
-              uniq' := fun s m w =>
+              fac := fun s j => funext fun x => t.fac _ _
+              uniq := fun s m w =>
                 funext fun x => by
                   refine' t.uniq ⟨unop X, _⟩ _ fun j => _
                   exact congr_fun (w j) x } } }
@@ -127,8 +127,8 @@ def yonedaJointlyReflectsLimits (J : Type w) [SmallCategory J] (K : J ⥤ Cᵒ
     ⟨PUnit, fun j _ => (s.π.app j).unop, fun j₁ j₂ α =>
       funext fun _ => Quiver.Hom.op_inj (s.w α).symm⟩
   { lift := fun s => ((t s.x.unop).lift (s' s) PUnit.unit).op
-    fac' := fun s j => Quiver.Hom.unop_inj (congr_fun ((t s.x.unop).fac (s' s) j) PUnit.unit)
-    uniq' := fun s m w => by
+    fac := fun s j => Quiver.Hom.unop_inj (congr_fun ((t s.x.unop).fac (s' s) j) PUnit.unit)
+    uniq := fun s m w => by
       apply Quiver.Hom.unop_inj
       suffices (fun x : PUnit => m.unop) = (t s.X.unop).lift (s' s) by
         apply congr_fun this PUnit.unit
@@ -143,8 +143,8 @@ def coyonedaJointlyReflectsLimits (J : Type w) [SmallCategory J] (K : J ⥤ C) (
   let s' : ∀ s : Cone K, Cone (K ⋙ coyoneda.obj (op s.x)) := fun s =>
     ⟨PUnit, fun j _ => s.π.app j, fun j₁ j₂ α => funext fun _ => (s.w α).symm⟩
   { lift := fun s => (t (op s.x)).lift (s' s) PUnit.unit
-    fac' := fun s j => congr_fun ((t _).fac (s' s) j) PUnit.unit
-    uniq' := fun s m w =>
+    fac := fun s j => congr_fun ((t _).fac (s' s) j) PUnit.unit
+    uniq := fun s m w =>
       by
       suffices (fun x : PUnit => m) = (t _).lift (s' s) by apply congr_fun this PUnit.unit
       apply (t _).uniq (s' s) _ fun j => _

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
@@ -175,11 +175,11 @@ noncomputable instance coyonedaFunctorPreservesLimits :
   infer_instance
 #align category_theory.coyoneda_functor_preserves_limits CategoryTheory.coyonedaFunctorPreservesLimits
 
-instance yonedaFunctorReflectsLimits :
+noncomputable instance yonedaFunctorReflectsLimits :
     ReflectsLimitsOfSize.{t, w} (@yoneda C _) := inferInstance
 #align category_theory.yoneda_functor_reflects_limits CategoryTheory.yonedaFunctorReflectsLimits
 
-instance coyonedaFunctorReflectsLimits :
+noncomputable instance coyonedaFunctorReflectsLimits :
     ReflectsLimitsOfSize.{t, w} (@coyoneda C _) := inferInstance
 #align category_theory.coyoneda_functor_reflects_limits CategoryTheory.coyonedaFunctorReflectsLimits
 
feat: existence of a limit in a concrete category implies smallness (#11625)

In this PR, it is shown that if a functor G : J ⥤ C to a concrete category has a limit and that forget C is corepresentable, then G ⋙ forget C).sections is small. As the corepresentability property holds in many concrete categories (e.g. groups, abelian groups) and that we already know since #11420 that limits exist under the smallness assumption in such categories, then this lemma may be used in future PR in order to show that usual forgetful functors preserve all limits (regardless of universe assumptions). This shall be convenient in the development of sheaves of modules.

In this PR, universes assumptions have also been generalized in the file Limits.Yoneda. In order to do this, a small refactor of the file Limits.Types was necessary. This introduces bijections like compCoyonedaSectionsEquiv (F : J ⥤ C) (X : C) : (F ⋙ coyoneda.obj (op X)).sections ≃ ((const J).obj X ⟶ F) with general universe parameters. In order to reduce imports in Limits.Yoneda, part of the file Limits.Types was moved to a new file Limits.TypesFiltered.

Co-authored-by: Joël Riou <joel.riou@universite-paris-saclay.fr>

Diff
@@ -4,6 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Scott Morrison, Bhavik Mehta
 -/
 import Mathlib.CategoryTheory.Limits.FunctorCategory
+import Mathlib.CategoryTheory.Limits.Types
 import Mathlib.Util.AssertExists
 
 #align_import category_theory.limits.yoneda from "leanprover-community/mathlib"@"e97cf15cd1aec9bd5c193b2ffac5a6dc9118912b"
@@ -19,7 +20,7 @@ We also show the (co)yoneda embeddings preserve limits and jointly reflect them.
 
 open Opposite CategoryTheory Limits
 
-universe w v u
+universe t w v u
 
 namespace CategoryTheory
 
@@ -72,94 +73,154 @@ variable {C : Type u} [Category.{v} C]
 
 open Limits
 
-/-- The yoneda embedding `yoneda.obj X : Cᵒᵖ ⥤ Type v` for `X : C` preserves limits. -/
-instance yonedaPreservesLimits (X : C) : PreservesLimits (yoneda.obj X) where
-  preservesLimitsOfShape {J} 𝒥 :=
-    { preservesLimit := fun {K} =>
-        { preserves := fun {c} t =>
-            { lift := fun s x =>
-                Quiver.Hom.unop (t.lift ⟨op X, fun j => (s.π.app j x).op, fun j₁ j₂ α => by
-                  simp [← s.w α]⟩)
-              fac := fun s j => funext fun x => Quiver.Hom.op_inj (t.fac _ _)
-              uniq := fun s m w =>
-                funext fun x => by
-                  refine Quiver.Hom.op_inj (t.uniq ⟨op X, _, _⟩ _ fun j => ?_)
-                  exact Quiver.Hom.unop_inj (congrFun (w j) x) } } }
-#align category_theory.yoneda_preserves_limits CategoryTheory.yonedaPreservesLimits
+section
 
-/-- The coyoneda embedding `coyoneda.obj X : C ⥤ Type v` for `X : Cᵒᵖ` preserves limits. -/
-instance coyonedaPreservesLimits (X : Cᵒᵖ) : PreservesLimits (coyoneda.obj X) where
-  preservesLimitsOfShape {J} 𝒥 :=
-    { preservesLimit := fun {K} =>
-        { preserves := fun {c} t =>
-            { lift := fun s x =>
-                t.lift
-                  ⟨unop X, fun j => s.π.app j x, fun j₁ j₂ α => by
-                    dsimp
-                    simp [← s.w α]⟩
-              -- See library note [dsimp, simp]
-              fac := fun s j => funext fun x => t.fac _ _
-              uniq := fun s m w =>
-                funext fun x => by
-                  refine' t.uniq ⟨unop X, _⟩ _ fun j => _
-                  exact congrFun (w j) x } } }
-#align category_theory.coyoneda_preserves_limits CategoryTheory.coyonedaPreservesLimits
+variable {J : Type w} [Category.{t} J]
+
+/-- The cone of `F` corresponding to an element in `(F ⋙ yoneda.obj X).sections`. -/
+@[simps]
+def Limits.coneOfSectionCompYoneda (F : J ⥤ Cᵒᵖ) (X : C)
+    (s : (F ⋙ yoneda.obj X).sections) : Cone F where
+  pt := Opposite.op X
+  π := compYonedaSectionsEquiv F X s
+
+noncomputable instance yonedaPreservesLimit (F : J ⥤ Cᵒᵖ) (X : C) :
+    PreservesLimit F (yoneda.obj X) where
+  preserves {c} hc := Nonempty.some (by
+    rw [Types.isLimit_iff]
+    intro s hs
+    exact ⟨(hc.lift (Limits.coneOfSectionCompYoneda F X ⟨s, hs⟩)).unop,
+      fun j => Quiver.Hom.op_inj (hc.fac (Limits.coneOfSectionCompYoneda F X ⟨s, hs⟩) j),
+      fun m hm => Quiver.Hom.op_inj
+        (hc.uniq (Limits.coneOfSectionCompYoneda F X ⟨s, hs⟩) _
+          (fun j => Quiver.Hom.unop_inj (hm j)))⟩)
+
+variable (J) in
+noncomputable instance yonedaPreservesLimitsOfShape (X : C) :
+    PreservesLimitsOfShape J (yoneda.obj X) where
 
 /-- The yoneda embeddings jointly reflect limits. -/
-def yonedaJointlyReflectsLimits (J : Type w) [SmallCategory J] (K : J ⥤ Cᵒᵖ) (c : Cone K)
-    (t : ∀ X : C, IsLimit ((yoneda.obj X).mapCone c)) : IsLimit c :=
-  let s' : ∀ s : Cone K, Cone (K ⋙ yoneda.obj s.pt.unop) := fun s =>
-    ⟨PUnit, fun j _ => (s.π.app j).unop, fun j₁ j₂ α =>
-      funext fun _ => Quiver.Hom.op_inj (s.w α).symm⟩
-  { lift := fun s => ((t s.pt.unop).lift (s' s) PUnit.unit).op
-    fac := fun s j => Quiver.Hom.unop_inj (congr_fun ((t s.pt.unop).fac (s' s) j) PUnit.unit)
-    uniq := fun s m w => by
-      apply Quiver.Hom.unop_inj
-      suffices (fun _ : PUnit => m.unop) = (t s.pt.unop).lift (s' s) by
-        apply congr_fun this PUnit.unit
-      apply (t _).uniq (s' s) _ fun j => _
-      intro j
-      funext
-      exact Quiver.Hom.op_inj (w j) }
+def yonedaJointlyReflectsLimits (F : J ⥤ Cᵒᵖ) (c : Cone F)
+    (hc : ∀ X : C, IsLimit ((yoneda.obj X).mapCone c)) : IsLimit c where
+  lift s := ((hc s.pt.unop).lift ((yoneda.obj s.pt.unop).mapCone s) (𝟙 _)).op
+  fac s j := Quiver.Hom.unop_inj (by
+    simpa using congr_fun ((hc s.pt.unop).fac ((yoneda.obj s.pt.unop).mapCone s) j) (𝟙 _))
+  uniq s m hm := Quiver.Hom.unop_inj (by
+    apply (Types.isLimitEquivSections (hc s.pt.unop)).injective
+    ext j
+    have eq := congr_fun ((hc s.pt.unop).fac ((yoneda.obj s.pt.unop).mapCone s) j) (𝟙 _)
+    dsimp at eq
+    dsimp [Types.isLimitEquivSections, Types.sectionOfCone]
+    rw [eq, Category.comp_id, ← hm, unop_comp])
 #align category_theory.yoneda_jointly_reflects_limits CategoryTheory.yonedaJointlyReflectsLimits
 
+/-- The cone of `F` corresponding to an element in `(F ⋙ coyoneda.obj X).sections`. -/
+@[simps]
+def Limits.coneOfSectionCompCoyoneda (F : J ⥤ C) (X : Cᵒᵖ)
+    (s : (F ⋙ coyoneda.obj X).sections) : Cone F where
+  pt := X.unop
+  π := compCoyonedaSectionsEquiv F X.unop s
+
+noncomputable instance coyonedaPreservesLimit (F : J ⥤ C) (X : Cᵒᵖ) :
+    PreservesLimit F (coyoneda.obj X) where
+  preserves {c} hc := Nonempty.some (by
+    rw [Types.isLimit_iff]
+    intro s hs
+    exact ⟨hc.lift (Limits.coneOfSectionCompCoyoneda F X ⟨s, hs⟩), hc.fac _,
+      hc.uniq (Limits.coneOfSectionCompCoyoneda F X ⟨s, hs⟩)⟩)
+
+variable (J) in
+noncomputable instance coyonedaPreservesLimitsOfShape (X : Cᵒᵖ) :
+    PreservesLimitsOfShape J (coyoneda.obj X) where
+
 /-- The coyoneda embeddings jointly reflect limits. -/
-def coyonedaJointlyReflectsLimits (J : Type w) [SmallCategory J] (K : J ⥤ C) (c : Cone K)
-    (t : ∀ X : Cᵒᵖ, IsLimit ((coyoneda.obj X).mapCone c)) : IsLimit c :=
-  let s' : ∀ s : Cone K, Cone (K ⋙ coyoneda.obj (op s.pt)) := fun s =>
-    ⟨PUnit, fun j _ => s.π.app j, fun j₁ j₂ α => funext fun _ => (s.w α).symm⟩
-  { lift := fun s => (t (op s.pt)).lift (s' s) PUnit.unit
-    fac := fun s j => congr_fun ((t _).fac (s' s) j) PUnit.unit
-    uniq := fun s m w => by
-      suffices (fun _ : PUnit => m) = (t _).lift (s' s) by apply congr_fun this PUnit.unit
-      apply (t _).uniq (s' s) _ fun j => _
-      intro j
-      funext
-      exact w j }
+def coyonedaJointlyReflectsLimits (F : J ⥤ C) (c : Cone F)
+    (hc : ∀ X : Cᵒᵖ, IsLimit ((coyoneda.obj X).mapCone c)) : IsLimit c where
+  lift s := (hc (op s.pt)).lift ((coyoneda.obj (op s.pt)).mapCone s) (𝟙 _)
+  fac s j := by simpa using congr_fun ((hc (op s.pt)).fac
+    ((coyoneda.obj (op s.pt)).mapCone s) j) (𝟙 _)
+  uniq s m hm := by
+    apply (Types.isLimitEquivSections (hc (op s.pt))).injective
+    ext j
+    dsimp [Types.isLimitEquivSections, Types.sectionOfCone]
+    have eq := congr_fun ((hc (op s.pt)).fac ((coyoneda.obj (op s.pt)).mapCone s) j) (𝟙 _)
+    dsimp at eq
+    rw [eq, Category.id_comp, ← hm]
 #align category_theory.coyoneda_jointly_reflects_limits CategoryTheory.coyonedaJointlyReflectsLimits
 
-variable {D : Type u} [SmallCategory D]
+end
 
-instance yonedaFunctorPreservesLimits : PreservesLimits (@yoneda D _) := by
+/-- The yoneda embedding `yoneda.obj X : Cᵒᵖ ⥤ Type v` for `X : C` preserves limits. -/
+noncomputable instance yonedaPreservesLimits (X : C) :
+    PreservesLimitsOfSize.{t, w} (yoneda.obj X) where
+
+/-- The coyoneda embedding `coyoneda.obj X : C ⥤ Type v` for `X : Cᵒᵖ` preserves limits. -/
+noncomputable instance coyonedaPreservesLimits (X : Cᵒᵖ) :
+    PreservesLimitsOfSize.{t, w} (coyoneda.obj X) where
+#align category_theory.coyoneda_preserves_limits CategoryTheory.coyonedaPreservesLimits
+
+noncomputable instance yonedaFunctorPreservesLimits :
+    PreservesLimitsOfSize.{t, w} (@yoneda C _) := by
   apply preservesLimitsOfEvaluation
   intro K
-  change PreservesLimits (coyoneda.obj K)
+  change PreservesLimitsOfSize (coyoneda.obj K)
   infer_instance
 #align category_theory.yoneda_functor_preserves_limits CategoryTheory.yonedaFunctorPreservesLimits
 
-instance coyonedaFunctorPreservesLimits : PreservesLimits (@coyoneda D _) := by
+noncomputable instance coyonedaFunctorPreservesLimits :
+    PreservesLimitsOfSize.{t, w} (@coyoneda C _) := by
   apply preservesLimitsOfEvaluation
   intro K
-  change PreservesLimits (yoneda.obj K)
+  change PreservesLimitsOfSize (yoneda.obj K)
   infer_instance
 #align category_theory.coyoneda_functor_preserves_limits CategoryTheory.coyonedaFunctorPreservesLimits
 
-instance yonedaFunctorReflectsLimits : ReflectsLimits (@yoneda D _) := inferInstance
+instance yonedaFunctorReflectsLimits :
+    ReflectsLimitsOfSize.{t, w} (@yoneda C _) := inferInstance
 #align category_theory.yoneda_functor_reflects_limits CategoryTheory.yonedaFunctorReflectsLimits
 
-instance coyonedaFunctorReflectsLimits : ReflectsLimits (@coyoneda D _) := inferInstance
+instance coyonedaFunctorReflectsLimits :
+    ReflectsLimitsOfSize.{t, w} (@coyoneda C _) := inferInstance
 #align category_theory.coyoneda_functor_reflects_limits CategoryTheory.coyonedaFunctorReflectsLimits
 
+namespace Functor
+
+section Representable
+
+variable (F : Cᵒᵖ ⥤ Type v) [F.Representable] {J : Type*} [Category J]
+
+noncomputable instance representablePreservesLimit (G : J ⥤ Cᵒᵖ) :
+    PreservesLimit G F :=
+  preservesLimitOfNatIso _ F.reprW
+
+variable (J) in
+noncomputable instance representablePreservesLimitsOfShape :
+    PreservesLimitsOfShape J F where
+
+noncomputable instance representablePreservesLimits :
+    PreservesLimitsOfSize.{t, w} F where
+
+end Representable
+
+section Corepresentable
+
+variable (F : C ⥤ Type v) [F.Corepresentable] {J : Type*} [Category J]
+
+noncomputable instance corepresentablePreservesLimit (G : J ⥤ C) :
+    PreservesLimit G F :=
+  preservesLimitOfNatIso _ F.coreprW
+
+variable (J) in
+noncomputable instance corepresentablePreservesLimitsOfShape :
+    PreservesLimitsOfShape J F where
+
+noncomputable instance corepresentablePreservesLimits :
+    PreservesLimitsOfSize.{t, w} F where
+
+end Corepresentable
+
+end Functor
+
 end CategoryTheory
 
 assert_not_exists AddCommMonoid
feat: final functors with filtered domain (#10720)
Diff
@@ -25,7 +25,7 @@ namespace CategoryTheory
 
 namespace Coyoneda
 
-variable {C : Type v} [SmallCategory C]
+variable {C : Type u} [Category.{v} C]
 
 /-- The colimit cocone over `coyoneda.obj X`, with cocone point `PUnit`.
 -/
feat: switch to weaker UnivLE (#8556)

Switch from the strong version of UnivLE ∀ α : Type max u v, Small.{v} α to the weaker version ∀ α : Type u, Small.{v} α.

Transfer Has/Preserves/Reflects(Co)limitsOfSize from a larger size (higher universe) to a smaller size.

In a few places it's now necessary to make the type explicit (for Lean to infer the Small instance, I think).

Also prove a characterization of UnivLE and the totality of the UnivLE relation.

A pared down version of #7695.

Co-authored-by: Scott Morrison <scott.morrison@gmail.com> Co-authored-by: Junyan Xu <junyanxu.math@gmail.com>

Diff
@@ -162,7 +162,4 @@ instance coyonedaFunctorReflectsLimits : ReflectsLimits (@coyoneda D _) := infer
 
 end CategoryTheory
 
-assert_not_exists Set.range
-
--- Porting note: after the port see if this import can be removed
--- assert_not_exists AddCommMonoid
+assert_not_exists AddCommMonoid
chore: make fullyFaithfulReflects(Co)Limits instances (#8462)

Co-authored-by: Junyan Xu <junyanxu.math@gmail.com>

Diff
@@ -154,12 +154,10 @@ instance coyonedaFunctorPreservesLimits : PreservesLimits (@coyoneda D _) := by
   infer_instance
 #align category_theory.coyoneda_functor_preserves_limits CategoryTheory.coyonedaFunctorPreservesLimits
 
-instance yonedaFunctorReflectsLimits : ReflectsLimits (@yoneda D _) :=
-  Limits.fullyFaithfulReflectsLimits _
+instance yonedaFunctorReflectsLimits : ReflectsLimits (@yoneda D _) := inferInstance
 #align category_theory.yoneda_functor_reflects_limits CategoryTheory.yonedaFunctorReflectsLimits
 
-instance coyonedaFunctorReflectsLimits : ReflectsLimits (@coyoneda D _) :=
-  Limits.fullyFaithfulReflectsLimits _
+instance coyonedaFunctorReflectsLimits : ReflectsLimits (@coyoneda D _) := inferInstance
 #align category_theory.coyoneda_functor_reflects_limits CategoryTheory.coyonedaFunctorReflectsLimits
 
 end CategoryTheory
chore: bump toolchain to v4.2.0-rc1 (#7370)

This rolls in the changed from #6928.

Co-authored-by: Thomas Murrills <thomasmurrills@gmail.com>

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

Diff
@@ -78,16 +78,13 @@ instance yonedaPreservesLimits (X : C) : PreservesLimits (yoneda.obj X) where
     { preservesLimit := fun {K} =>
         { preserves := fun {c} t =>
             { lift := fun s x =>
-                Quiver.Hom.unop (t.lift ⟨op X, fun j => (s.π.app j x).op, fun j₁ j₂ α => _⟩)
+                Quiver.Hom.unop (t.lift ⟨op X, fun j => (s.π.app j x).op, fun j₁ j₂ α => by
+                  simp [← s.w α]⟩)
               fac := fun s j => funext fun x => Quiver.Hom.op_inj (t.fac _ _)
               uniq := fun s m w =>
                 funext fun x => by
-                  refine' Quiver.Hom.op_inj (t.uniq ⟨op X, _, _⟩ _ fun j => _)
-                  · intro X _ _ _ _ _ s _ _ _ α  -- Porting note: refine' gave a crazy goal
-                    dsimp
-                    simp [← s.w α]
-                  -- See library note [dsimp, simp]
-                  · exact Quiver.Hom.unop_inj (congrFun (w j) x) } } }
+                  refine Quiver.Hom.op_inj (t.uniq ⟨op X, _, _⟩ _ fun j => ?_)
+                  exact Quiver.Hom.unop_inj (congrFun (w j) x) } } }
 #align category_theory.yoneda_preserves_limits CategoryTheory.yonedaPreservesLimits
 
 /-- The coyoneda embedding `coyoneda.obj X : C ⥤ Type v` for `X : Cᵒᵖ` preserves limits. -/
style: fix wrapping of where (#7149)
Diff
@@ -73,8 +73,8 @@ variable {C : Type u} [Category.{v} C]
 open Limits
 
 /-- The yoneda embedding `yoneda.obj X : Cᵒᵖ ⥤ Type v` for `X : C` preserves limits. -/
-instance yonedaPreservesLimits (X : C) : PreservesLimits (yoneda.obj X)
-    where preservesLimitsOfShape {J} 𝒥 :=
+instance yonedaPreservesLimits (X : C) : PreservesLimits (yoneda.obj X) where
+  preservesLimitsOfShape {J} 𝒥 :=
     { preservesLimit := fun {K} =>
         { preserves := fun {c} t =>
             { lift := fun s x =>
@@ -91,8 +91,8 @@ instance yonedaPreservesLimits (X : C) : PreservesLimits (yoneda.obj X)
 #align category_theory.yoneda_preserves_limits CategoryTheory.yonedaPreservesLimits
 
 /-- The coyoneda embedding `coyoneda.obj X : C ⥤ Type v` for `X : Cᵒᵖ` preserves limits. -/
-instance coyonedaPreservesLimits (X : Cᵒᵖ) : PreservesLimits (coyoneda.obj X)
-    where preservesLimitsOfShape {J} 𝒥 :=
+instance coyonedaPreservesLimits (X : Cᵒᵖ) : PreservesLimits (coyoneda.obj X) where
+  preservesLimitsOfShape {J} 𝒥 :=
     { preservesLimit := fun {K} =>
         { preserves := fun {c} t =>
             { lift := fun s x =>
chore: fix grammar mistakes (#6121)
Diff
@@ -72,7 +72,7 @@ variable {C : Type u} [Category.{v} C]
 
 open Limits
 
-/--n The yoneda embedding `yoneda.obj X : Cᵒᵖ ⥤ Type v` for `X : C` preserves limits. -/
+/-- The yoneda embedding `yoneda.obj X : Cᵒᵖ ⥤ Type v` for `X : C` preserves limits. -/
 instance yonedaPreservesLimits (X : C) : PreservesLimits (yoneda.obj X)
     where preservesLimitsOfShape {J} 𝒥 :=
     { preservesLimit := fun {K} =>
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,15 +2,12 @@
 Copyright (c) 2020 Scott Morrison. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Scott Morrison, Bhavik Mehta
-
-! This file was ported from Lean 3 source module category_theory.limits.yoneda
-! 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.Limits.FunctorCategory
 import Mathlib.Util.AssertExists
 
+#align_import category_theory.limits.yoneda from "leanprover-community/mathlib"@"e97cf15cd1aec9bd5c193b2ffac5a6dc9118912b"
+
 /-!
 # Limit properties relating to the (co)yoneda embedding.
 
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
@@ -35,8 +35,7 @@ variable {C : Type v} [SmallCategory C]
 @[simps]
 def colimitCocone (X : Cᵒᵖ) : Cocone (coyoneda.obj X) where
   pt := PUnit
-  ι := { app := by aesop_cat
-         naturality := by aesop_cat }
+  ι := { app := by aesop_cat }
 #align category_theory.coyoneda.colimit_cocone CategoryTheory.Coyoneda.colimitCocone
 
 /-- The proposed colimit cocone over `coyoneda.obj X` is a colimit cocone.
feat: port CategoryTheory.Bicategory.CoherenceTactic (#4610)

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

Diff
@@ -20,13 +20,7 @@ We calculate the colimit of `Y ↦ (X ⟶ Y)`, which is just `PUnit`.
 We also show the (co)yoneda embeddings preserve limits and jointly reflect them.
 -/
 
--- import Mathlib.Tactic.AssertExists -- Porting note: see end of file
-
-open Opposite
-
-open CategoryTheory
-
-open CategoryTheory.Limits
+open Opposite CategoryTheory Limits
 
 universe w v u
 
chore: fix upper/lowercase in comments (#4360)
  • Run a non-interactive version of fix-comments.py on all files.
  • Go through the diff and manually add/discard/edit chunks.
Diff
@@ -36,7 +36,7 @@ namespace Coyoneda
 
 variable {C : Type v} [SmallCategory C]
 
-/-- The colimit cocone over `coyoneda.obj X`, with cocone point `punit`.
+/-- The colimit cocone over `coyoneda.obj X`, with cocone point `PUnit`.
 -/
 @[simps]
 def colimitCocone (X : Cᵒᵖ) : Cocone (coyoneda.obj X) where
@@ -68,7 +68,7 @@ instance (X : Cᵒᵖ) : HasColimit (coyoneda.obj X) :=
     { cocone := _
       isColimit := colimitCoconeIsColimit X }
 
-/-- The colimit of `coyoneda.obj X` is isomorphic to `punit`.
+/-- The colimit of `coyoneda.obj X` is isomorphic to `PUnit`.
 -/
 noncomputable def colimitCoyonedaIso (X : Cᵒᵖ) : colimit (coyoneda.obj X) ≅ PUnit := by
   apply colimit.isoColimitCocone
feat: assert_not_exists (#4245)
Diff
@@ -9,6 +9,7 @@ Authors: Scott Morrison, Bhavik Mehta
 ! if you have ported upstream changes.
 -/
 import Mathlib.CategoryTheory.Limits.FunctorCategory
+import Mathlib.Util.AssertExists
 
 /-!
 # Limit properties relating to the (co)yoneda embedding.
@@ -176,9 +177,7 @@ instance coyonedaFunctorReflectsLimits : ReflectsLimits (@coyoneda D _) :=
 
 end CategoryTheory
 
--- Porting note: assert_not_exists doesn't exist in Lean 4 now. Is there value in keeping this?
--- We don't need to have developed any algebra or set theory to reach (at least) this point
--- in the category theory hierarchy.
--- assert_not_exists Set.range
+assert_not_exists Set.range
 
+-- Porting note: after the port see if this import can be removed
 -- assert_not_exists AddCommMonoid
chore: bye-bye, solo bys! (#3825)

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

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

Diff
@@ -106,8 +106,7 @@ instance coyonedaPreservesLimits (X : Cᵒᵖ) : PreservesLimits (coyoneda.obj X
         { preserves := fun {c} t =>
             { lift := fun s x =>
                 t.lift
-                  ⟨unop X, fun j => s.π.app j x, fun j₁ j₂ α =>
-                    by
+                  ⟨unop X, fun j => s.π.app j x, fun j₁ j₂ α => by
                     dsimp
                     simp [← s.w α]⟩
               -- See library note [dsimp, simp]
feat: port CategoryTheory.ConcreteCategory.Elementwise (#2901)

Co-authored-by: Scott Morrison <scott.morrison@gmail.com> Co-authored-by: Joël Riou <joel.riou@universite-paris-saclay.fr> Co-authored-by: Parcly Taxel <reddeloostw@gmail.com>

Diff
@@ -53,7 +53,8 @@ def colimitCoconeIsColimit (X : Cᵒᵖ) : IsColimit (colimitCocone X)
   fac s Y := by
     funext f
     convert congr_fun (s.w f).symm (𝟙 (unop X))
-    simp
+    simp only [coyoneda_obj_obj, Functor.const_obj_obj, types_comp_apply,
+      coyoneda_obj_map, Category.id_comp]
   uniq s m w := by
     apply funext; rintro ⟨⟩
     dsimp
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
@@ -55,7 +55,7 @@ def colimitCoconeIsColimit (X : Cᵒᵖ) : IsColimit (colimitCocone X)
     convert congr_fun (s.w f).symm (𝟙 (unop X))
     simp
   uniq s m w := by
-    apply funext; rintro ⟨⟩ 
+    apply funext; rintro ⟨⟩
     dsimp
     rw [← w]
     simp
@@ -130,7 +130,7 @@ def yonedaJointlyReflectsLimits (J : Type w) [SmallCategory J] (K : J ⥤ Cᵒ
       suffices (fun _ : PUnit => m.unop) = (t s.pt.unop).lift (s' s) by
         apply congr_fun this PUnit.unit
       apply (t _).uniq (s' s) _ fun j => _
-      intro j 
+      intro j
       funext
       exact Quiver.Hom.op_inj (w j) }
 #align category_theory.yoneda_jointly_reflects_limits CategoryTheory.yonedaJointlyReflectsLimits
@@ -182,4 +182,3 @@ end CategoryTheory
 -- assert_not_exists Set.range
 
 -- assert_not_exists AddCommMonoid
-
chore: bump lean, std4, quote4, aesop (#2709)
Diff
@@ -40,9 +40,7 @@ variable {C : Type v} [SmallCategory C]
 @[simps]
 def colimitCocone (X : Cᵒᵖ) : Cocone (coyoneda.obj X) where
   pt := PUnit
-  ι := { app := fun {Y} _ => by 
-          aesop_cat
-          exact ⟨⟩ 
+  ι := { app := by aesop_cat
          naturality := by aesop_cat }
 #align category_theory.coyoneda.colimit_cocone CategoryTheory.Coyoneda.colimitCocone
 
fix: use dot notation for mapCone/mapCocone (#2696)

Thanks to #2661 we have G.mapCone back. This swiches over globally.

Diff
@@ -121,7 +121,7 @@ instance coyonedaPreservesLimits (X : Cᵒᵖ) : PreservesLimits (coyoneda.obj X
 
 /-- The yoneda embeddings jointly reflect limits. -/
 def yonedaJointlyReflectsLimits (J : Type w) [SmallCategory J] (K : J ⥤ Cᵒᵖ) (c : Cone K)
-    (t : ∀ X : C, IsLimit (Functor.mapCone (yoneda.obj X) c)) : IsLimit c :=
+    (t : ∀ X : C, IsLimit ((yoneda.obj X).mapCone c)) : IsLimit c :=
   let s' : ∀ s : Cone K, Cone (K ⋙ yoneda.obj s.pt.unop) := fun s =>
     ⟨PUnit, fun j _ => (s.π.app j).unop, fun j₁ j₂ α =>
       funext fun _ => Quiver.Hom.op_inj (s.w α).symm⟩
@@ -139,7 +139,7 @@ def yonedaJointlyReflectsLimits (J : Type w) [SmallCategory J] (K : J ⥤ Cᵒ
 
 /-- The coyoneda embeddings jointly reflect limits. -/
 def coyonedaJointlyReflectsLimits (J : Type w) [SmallCategory J] (K : J ⥤ C) (c : Cone K)
-    (t : ∀ X : Cᵒᵖ, IsLimit (Functor.mapCone (coyoneda.obj X) c)) : IsLimit c :=
+    (t : ∀ X : Cᵒᵖ, IsLimit ((coyoneda.obj X).mapCone c)) : IsLimit c :=
   let s' : ∀ s : Cone K, Cone (K ⋙ coyoneda.obj (op s.pt)) := fun s =>
     ⟨PUnit, fun j _ => s.π.app j, fun j₁ j₂ α => funext fun _ => (s.w α).symm⟩
   { lift := fun s => (t (op s.pt)).lift (s' s) PUnit.unit
feat: port/CategoryTheory.Limits.Yoneda (#2381)

Co-authored-by: Matthew Robert Ballard <100034030+mattrobball@users.noreply.github.com> Co-authored-by: Johan Commelin <johan@commelin.net>

Dependencies 76

77 files ported (100.0%)
26703 lines ported (100.0%)

All dependencies are ported!