category_theory.limits.cones
⟷
Mathlib.CategoryTheory.Limits.Cones
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.
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(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)
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -458,13 +458,13 @@ def functoriality : Cone F ⥤ Cone (F ⋙ G)
#align category_theory.limits.cones.functoriality CategoryTheory.Limits.Cones.functoriality
-/
-#print CategoryTheory.Limits.Cones.functorialityFull /-
-instance functorialityFull [CategoryTheory.Functor.Full G] [CategoryTheory.Functor.Faithful G] :
+#print CategoryTheory.Limits.Cones.functoriality_full /-
+instance functoriality_full [CategoryTheory.Functor.Full G] [CategoryTheory.Functor.Faithful G] :
CategoryTheory.Functor.Full (functoriality F G)
where preimage X Y t :=
{ Hom := G.preimage t.Hom
w' := fun j => G.map_injective (by simpa using t.w j) }
-#align category_theory.limits.cones.functoriality_full CategoryTheory.Limits.Cones.functorialityFull
+#align category_theory.limits.cones.functoriality_full CategoryTheory.Limits.Cones.functoriality_full
-/
#print CategoryTheory.Limits.Cones.functoriality_faithful /-
@@ -692,13 +692,13 @@ def functoriality : Cocone F ⥤ Cocone (F ⋙ G)
#align category_theory.limits.cocones.functoriality CategoryTheory.Limits.Cocones.functoriality
-/
-#print CategoryTheory.Limits.Cocones.functorialityFull /-
-instance functorialityFull [CategoryTheory.Functor.Full G] [CategoryTheory.Functor.Faithful G] :
+#print CategoryTheory.Limits.Cocones.functoriality_full /-
+instance functoriality_full [CategoryTheory.Functor.Full G] [CategoryTheory.Functor.Faithful G] :
CategoryTheory.Functor.Full (functoriality F G)
where preimage X Y t :=
{ Hom := G.preimage t.Hom
w' := fun j => G.map_injective (by simpa using t.w j) }
-#align category_theory.limits.cocones.functoriality_full CategoryTheory.Limits.Cocones.functorialityFull
+#align category_theory.limits.cocones.functoriality_full CategoryTheory.Limits.Cocones.functoriality_full
-/
#print CategoryTheory.Limits.Cocones.functoriality_faithful /-
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -459,7 +459,8 @@ def functoriality : Cone F ⥤ Cone (F ⋙ G)
-/
#print CategoryTheory.Limits.Cones.functorialityFull /-
-instance functorialityFull [Full G] [Faithful G] : Full (functoriality F G)
+instance functorialityFull [CategoryTheory.Functor.Full G] [CategoryTheory.Functor.Faithful G] :
+ CategoryTheory.Functor.Full (functoriality F G)
where preimage X Y t :=
{ Hom := G.preimage t.Hom
w' := fun j => G.map_injective (by simpa using t.w j) }
@@ -467,7 +468,8 @@ instance functorialityFull [Full G] [Faithful G] : Full (functoriality F G)
-/
#print CategoryTheory.Limits.Cones.functoriality_faithful /-
-instance functoriality_faithful [Faithful G] : Faithful (Cones.functoriality F G)
+instance functoriality_faithful [CategoryTheory.Functor.Faithful G] :
+ CategoryTheory.Functor.Faithful (Cones.functoriality F G)
where map_injective' X Y f g e := by ext1; injection e; apply G.map_injective h_1
#align category_theory.limits.cones.functoriality_faithful CategoryTheory.Limits.Cones.functoriality_faithful
-/
@@ -491,8 +493,8 @@ def functorialityEquivalence (e : C ≌ D) : Cone F ≌ Cone (F ⋙ e.Functor) :
/-- If `F` reflects isomorphisms, then `cones.functoriality F` reflects isomorphisms
as well.
-/
-instance reflects_cone_isomorphism (F : C ⥤ D) [ReflectsIsomorphisms F] (K : J ⥤ C) :
- ReflectsIsomorphisms (Cones.functoriality K F) :=
+instance reflects_cone_isomorphism (F : C ⥤ D) [CategoryTheory.Functor.ReflectsIsomorphisms F]
+ (K : J ⥤ C) : CategoryTheory.Functor.ReflectsIsomorphisms (Cones.functoriality K F) :=
by
constructor
intros
@@ -691,7 +693,8 @@ def functoriality : Cocone F ⥤ Cocone (F ⋙ G)
-/
#print CategoryTheory.Limits.Cocones.functorialityFull /-
-instance functorialityFull [Full G] [Faithful G] : Full (functoriality F G)
+instance functorialityFull [CategoryTheory.Functor.Full G] [CategoryTheory.Functor.Faithful G] :
+ CategoryTheory.Functor.Full (functoriality F G)
where preimage X Y t :=
{ Hom := G.preimage t.Hom
w' := fun j => G.map_injective (by simpa using t.w j) }
@@ -699,7 +702,8 @@ instance functorialityFull [Full G] [Faithful G] : Full (functoriality F G)
-/
#print CategoryTheory.Limits.Cocones.functoriality_faithful /-
-instance functoriality_faithful [Faithful G] : Faithful (functoriality F G)
+instance functoriality_faithful [CategoryTheory.Functor.Faithful G] :
+ CategoryTheory.Functor.Faithful (functoriality F G)
where map_injective' X Y f g e := by ext1; injection e; apply G.map_injective h_1
#align category_theory.limits.cocones.functoriality_faithful CategoryTheory.Limits.Cocones.functoriality_faithful
-/
@@ -735,8 +739,8 @@ def functorialityEquivalence (e : C ≌ D) : Cocone F ≌ Cocone (F ⋙ e.Functo
/-- If `F` reflects isomorphisms, then `cocones.functoriality F` reflects isomorphisms
as well.
-/
-instance reflects_cocone_isomorphism (F : C ⥤ D) [ReflectsIsomorphisms F] (K : J ⥤ C) :
- ReflectsIsomorphisms (Cocones.functoriality K F) :=
+instance reflects_cocone_isomorphism (F : C ⥤ D) [CategoryTheory.Functor.ReflectsIsomorphisms F]
+ (K : J ⥤ C) : CategoryTheory.Functor.ReflectsIsomorphisms (Cocones.functoriality K F) :=
by
constructor
intros
@@ -793,23 +797,23 @@ def mapCoconeMorphism {c c' : Cocone F} (f : c ⟶ c') : H.mapCocone c ⟶ H.map
#print CategoryTheory.Functor.mapConeInv /-
/-- If `H` is an equivalence, we invert `H.map_cone` and get a cone for `F` from a cone
for `F ⋙ H`.-/
-def mapConeInv [IsEquivalence H] (c : Cone (F ⋙ H)) : Cone F :=
+def mapConeInv [CategoryTheory.Functor.IsEquivalence H] (c : Cone (F ⋙ H)) : Cone F :=
(Limits.Cones.functorialityEquivalence F (asEquivalence H)).inverse.obj c
#align category_theory.functor.map_cone_inv CategoryTheory.Functor.mapConeInv
-/
#print CategoryTheory.Functor.mapConeMapConeInv /-
/-- `map_cone` is the left inverse to `map_cone_inv`. -/
-def mapConeMapConeInv {F : J ⥤ D} (H : D ⥤ C) [IsEquivalence H] (c : Cone (F ⋙ H)) :
- mapCone H (mapConeInv H c) ≅ c :=
+def mapConeMapConeInv {F : J ⥤ D} (H : D ⥤ C) [CategoryTheory.Functor.IsEquivalence H]
+ (c : Cone (F ⋙ H)) : mapCone H (mapConeInv H c) ≅ c :=
(Limits.Cones.functorialityEquivalence F (asEquivalence H)).counitIso.app c
#align category_theory.functor.map_cone_map_cone_inv CategoryTheory.Functor.mapConeMapConeInv
-/
#print CategoryTheory.Functor.mapConeInvMapCone /-
/-- `map_cone` is the right inverse to `map_cone_inv`. -/
-def mapConeInvMapCone {F : J ⥤ D} (H : D ⥤ C) [IsEquivalence H] (c : Cone F) :
- mapConeInv H (mapCone H c) ≅ c :=
+def mapConeInvMapCone {F : J ⥤ D} (H : D ⥤ C) [CategoryTheory.Functor.IsEquivalence H]
+ (c : Cone F) : mapConeInv H (mapCone H c) ≅ c :=
(Limits.Cones.functorialityEquivalence F (asEquivalence H)).unitIso.symm.app c
#align category_theory.functor.map_cone_inv_map_cone CategoryTheory.Functor.mapConeInvMapCone
-/
@@ -817,23 +821,23 @@ def mapConeInvMapCone {F : J ⥤ D} (H : D ⥤ C) [IsEquivalence H] (c : Cone F)
#print CategoryTheory.Functor.mapCoconeInv /-
/-- If `H` is an equivalence, we invert `H.map_cone` and get a cone for `F` from a cone
for `F ⋙ H`.-/
-def mapCoconeInv [IsEquivalence H] (c : Cocone (F ⋙ H)) : Cocone F :=
+def mapCoconeInv [CategoryTheory.Functor.IsEquivalence H] (c : Cocone (F ⋙ H)) : Cocone F :=
(Limits.Cocones.functorialityEquivalence F (asEquivalence H)).inverse.obj c
#align category_theory.functor.map_cocone_inv CategoryTheory.Functor.mapCoconeInv
-/
#print CategoryTheory.Functor.mapCoconeMapCoconeInv /-
/-- `map_cocone` is the left inverse to `map_cocone_inv`. -/
-def mapCoconeMapCoconeInv {F : J ⥤ D} (H : D ⥤ C) [IsEquivalence H] (c : Cocone (F ⋙ H)) :
- mapCocone H (mapCoconeInv H c) ≅ c :=
+def mapCoconeMapCoconeInv {F : J ⥤ D} (H : D ⥤ C) [CategoryTheory.Functor.IsEquivalence H]
+ (c : Cocone (F ⋙ H)) : mapCocone H (mapCoconeInv H c) ≅ c :=
(Limits.Cocones.functorialityEquivalence F (asEquivalence H)).counitIso.app c
#align category_theory.functor.map_cocone_map_cocone_inv CategoryTheory.Functor.mapCoconeMapCoconeInv
-/
#print CategoryTheory.Functor.mapCoconeInvMapCocone /-
/-- `map_cocone` is the right inverse to `map_cocone_inv`. -/
-def mapCoconeInvMapCocone {F : J ⥤ D} (H : D ⥤ C) [IsEquivalence H] (c : Cocone F) :
- mapCoconeInv H (mapCocone H c) ≅ c :=
+def mapCoconeInvMapCocone {F : J ⥤ D} (H : D ⥤ C) [CategoryTheory.Functor.IsEquivalence H]
+ (c : Cocone F) : mapCoconeInv H (mapCocone H c) ≅ c :=
(Limits.Cocones.functorialityEquivalence F (asEquivalence H)).unitIso.symm.app c
#align category_theory.functor.map_cocone_inv_map_cocone CategoryTheory.Functor.mapCoconeInvMapCocone
-/
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -6,7 +6,7 @@ Authors: Stephen Morgan, Scott Morrison, Floris van Doorn
import CategoryTheory.Functor.Const
import CategoryTheory.DiscreteCategory
import CategoryTheory.Yoneda
-import CategoryTheory.Functor.ReflectsIsomorphisms
+import CategoryTheory.Functor.ReflectsIso
#align_import category_theory.limits.cones from "leanprover-community/mathlib"@"ee05e9ce1322178f0c12004eb93c00d2c8c00ed2"
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -466,10 +466,10 @@ instance functorialityFull [Full G] [Faithful G] : Full (functoriality F G)
#align category_theory.limits.cones.functoriality_full CategoryTheory.Limits.Cones.functorialityFull
-/
-#print CategoryTheory.Limits.Cones.functorialityFaithful /-
-instance functorialityFaithful [Faithful G] : Faithful (Cones.functoriality F G)
+#print CategoryTheory.Limits.Cones.functoriality_faithful /-
+instance functoriality_faithful [Faithful G] : Faithful (Cones.functoriality F G)
where map_injective' X Y f g e := by ext1; injection e; apply G.map_injective h_1
-#align category_theory.limits.cones.functoriality_faithful CategoryTheory.Limits.Cones.functorialityFaithful
+#align category_theory.limits.cones.functoriality_faithful CategoryTheory.Limits.Cones.functoriality_faithful
-/
#print CategoryTheory.Limits.Cones.functorialityEquivalence /-
mathlib commit https://github.com/leanprover-community/mathlib/commit/ce64cd319bb6b3e82f31c2d38e79080d377be451
@@ -3,10 +3,10 @@ Copyright (c) 2017 Scott Morrison. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Stephen Morgan, Scott Morrison, Floris van Doorn
-/
-import Mathbin.CategoryTheory.Functor.Const
-import Mathbin.CategoryTheory.DiscreteCategory
-import Mathbin.CategoryTheory.Yoneda
-import Mathbin.CategoryTheory.Functor.ReflectsIsomorphisms
+import CategoryTheory.Functor.Const
+import CategoryTheory.DiscreteCategory
+import CategoryTheory.Yoneda
+import CategoryTheory.Functor.ReflectsIsomorphisms
#align_import category_theory.limits.cones from "leanprover-community/mathlib"@"ee05e9ce1322178f0c12004eb93c00d2c8c00ed2"
mathlib commit https://github.com/leanprover-community/mathlib/commit/442a83d738cb208d3600056c489be16900ba701d
@@ -285,8 +285,6 @@ structure ConeMorphism (A B : Cone F) where
#align category_theory.limits.cone_morphism CategoryTheory.Limits.ConeMorphism
-/
-restate_axiom cone_morphism.w'
-
attribute [simp, reassoc] cone_morphism.w
#print CategoryTheory.Limits.inhabitedConeMorphism /-
@@ -524,8 +522,6 @@ instance inhabitedCoconeMorphism (A : Cocone F) : Inhabited (CoconeMorphism A A)
#align category_theory.limits.inhabited_cocone_morphism CategoryTheory.Limits.inhabitedCoconeMorphism
-/
-restate_axiom cocone_morphism.w'
-
attribute [simp, reassoc] cocone_morphism.w
#print CategoryTheory.Limits.Cocone.category /-
mathlib commit https://github.com/leanprover-community/mathlib/commit/8ea5598db6caeddde6cb734aa179cc2408dbd345
@@ -2,17 +2,14 @@
Copyright (c) 2017 Scott Morrison. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Stephen Morgan, Scott Morrison, Floris van Doorn
-
-! This file was ported from Lean 3 source module category_theory.limits.cones
-! leanprover-community/mathlib commit ee05e9ce1322178f0c12004eb93c00d2c8c00ed2
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
-/
import Mathbin.CategoryTheory.Functor.Const
import Mathbin.CategoryTheory.DiscreteCategory
import Mathbin.CategoryTheory.Yoneda
import Mathbin.CategoryTheory.Functor.ReflectsIsomorphisms
+#align_import category_theory.limits.cones from "leanprover-community/mathlib"@"ee05e9ce1322178f0c12004eb93c00d2c8c00ed2"
+
/-!
# Cones and cocones
mathlib commit https://github.com/leanprover-community/mathlib/commit/9fb8964792b4237dac6200193a0d533f1b3f7423
@@ -149,10 +149,12 @@ instance inhabitedCone (F : Discrete PUnit ⥤ C) : Inhabited (Cone F) :=
#align category_theory.limits.inhabited_cone CategoryTheory.Limits.inhabitedCone
-/
+#print CategoryTheory.Limits.Cone.w /-
@[simp, reassoc]
theorem Cone.w {F : J ⥤ C} (c : Cone F) {j j' : J} (f : j ⟶ j') :
c.π.app j ≫ F.map f = c.π.app j' := by rw [← c.π.naturality f]; apply id_comp
#align category_theory.limits.cone.w CategoryTheory.Limits.Cone.w
+-/
#print CategoryTheory.Limits.Cocone /-
/-- A `c : cocone F` is
@@ -174,10 +176,12 @@ instance inhabitedCocone (F : Discrete PUnit ⥤ C) : Inhabited (Cocone F) :=
#align category_theory.limits.inhabited_cocone CategoryTheory.Limits.inhabitedCocone
-/
+#print CategoryTheory.Limits.Cocone.w /-
@[simp, reassoc]
theorem Cocone.w {F : J ⥤ C} (c : Cocone F) {j j' : J} (f : j ⟶ j') :
F.map f ≫ c.ι.app j' = c.ι.app j := by rw [c.ι.naturality f]; apply comp_id
#align category_theory.limits.cocone.w CategoryTheory.Limits.Cocone.w
+-/
end
@@ -185,6 +189,7 @@ variable {F : J ⥤ C}
namespace Cone
+#print CategoryTheory.Limits.Cone.equiv /-
/-- The isomorphism between a cone on `F` and an element of the functor `F.cones`. -/
@[simps]
def equiv (F : J ⥤ C) : Cone F ≅ Σ X, F.cones.obj X
@@ -196,12 +201,15 @@ def equiv (F : J ⥤ C) : Cone F ≅ Σ X, F.cones.obj X
hom_inv_id' := by ext1; cases x; rfl
inv_hom_id' := by ext1; cases x; rfl
#align category_theory.limits.cone.equiv CategoryTheory.Limits.Cone.equiv
+-/
+#print CategoryTheory.Limits.Cone.extensions /-
/-- A map to the vertex of a cone naturally induces a cone by composition. -/
@[simps]
def extensions (c : Cone F) : yoneda.obj c.pt ⋙ uliftFunctor.{u₁} ⟶ F.cones
where app X f := (const J).map f.down ≫ c.π
#align category_theory.limits.cone.extensions CategoryTheory.Limits.Cone.extensions
+-/
#print CategoryTheory.Limits.Cone.extend /-
/-- A map to the vertex of a cone induces a cone by composition. -/
@@ -226,6 +234,7 @@ end Cone
namespace Cocone
+#print CategoryTheory.Limits.Cocone.equiv /-
/-- The isomorphism between a cocone on `F` and an element of the functor `F.cocones`. -/
def equiv (F : J ⥤ C) : Cocone F ≅ Σ X, F.cocones.obj X
where
@@ -236,12 +245,15 @@ def equiv (F : J ⥤ C) : Cocone F ≅ Σ X, F.cocones.obj X
hom_inv_id' := by ext1; cases x; rfl
inv_hom_id' := by ext1; cases x; rfl
#align category_theory.limits.cocone.equiv CategoryTheory.Limits.Cocone.equiv
+-/
+#print CategoryTheory.Limits.Cocone.extensions /-
/-- A map from the vertex of a cocone naturally induces a cocone by composition. -/
@[simps]
def extensions (c : Cocone F) : coyoneda.obj (op c.pt) ⋙ uliftFunctor.{u₁} ⟶ F.cocones
where app X f := c.ι ≫ (const J).map f.down
#align category_theory.limits.cocone.extensions CategoryTheory.Limits.Cocone.extensions
+-/
#print CategoryTheory.Limits.Cocone.extend /-
/-- A map from the vertex of a cocone induces a cocone by composition. -/
@@ -299,6 +311,7 @@ instance Cone.category : Category (Cone F)
namespace Cones
+#print CategoryTheory.Limits.Cones.ext /-
/-- To give an isomorphism between cones, it suffices to give an
isomorphism between their vertices which commutes with the cone
maps. -/
@@ -310,6 +323,7 @@ def ext {c c' : Cone F} (φ : c.pt ≅ c'.pt) (w : ∀ j, c.π.app j = φ.Hom
{ Hom := φ.inv
w' := fun j => φ.inv_comp_eq.mpr (w j) }
#align category_theory.limits.cones.ext CategoryTheory.Limits.Cones.ext
+-/
#print CategoryTheory.Limits.Cones.eta /-
/-- Eta rule for cones. -/
@@ -361,6 +375,7 @@ def postcomposeId : postcompose (𝟙 F) ≅ 𝟭 (Cone F) :=
#align category_theory.limits.cones.postcompose_id CategoryTheory.Limits.Cones.postcomposeId
-/
+#print CategoryTheory.Limits.Cones.postcomposeEquivalence /-
/-- If `F` and `G` are naturally isomorphic functors, then they have equivalent categories of
cones.
-/
@@ -372,6 +387,7 @@ def postcomposeEquivalence {G : J ⥤ C} (α : F ≅ G) : Cone F ≌ Cone G
unitIso := NatIso.ofComponents (fun s => Cones.ext (Iso.refl _) (by tidy)) (by tidy)
counitIso := NatIso.ofComponents (fun s => Cones.ext (Iso.refl _) (by tidy)) (by tidy)
#align category_theory.limits.cones.postcompose_equivalence CategoryTheory.Limits.Cones.postcomposeEquivalence
+-/
#print CategoryTheory.Limits.Cones.whiskering /-
/-- Whiskering on the left by `E : K ⥤ J` gives a functor from `cone F` to `cone (E ⋙ F)`.
@@ -384,6 +400,7 @@ def whiskering (E : K ⥤ J) : Cone F ⥤ Cone (E ⋙ F)
#align category_theory.limits.cones.whiskering CategoryTheory.Limits.Cones.whiskering
-/
+#print CategoryTheory.Limits.Cones.whiskeringEquivalence /-
/-- Whiskering by an equivalence gives an equivalence between categories of cones.
-/
@[simps]
@@ -403,7 +420,9 @@ def whiskeringEquivalence (e : K ≌ J) : Cone F ≌ Cone (e.Functor ⋙ F)
simpa [e.counit_app_functor] using s.w (e.unit_inv.app k)))
(by tidy)
#align category_theory.limits.cones.whiskering_equivalence CategoryTheory.Limits.Cones.whiskeringEquivalence
+-/
+#print CategoryTheory.Limits.Cones.equivalenceOfReindexing /-
/-- The categories of cones over `F` and `G` are equivalent if `F` and `G` are naturally isomorphic
(possibly after changing the indexing category by an equivalence).
-/
@@ -411,6 +430,7 @@ def whiskeringEquivalence (e : K ≌ J) : Cone F ≌ Cone (e.Functor ⋙ F)
def equivalenceOfReindexing {G : K ⥤ C} (e : K ≌ J) (α : e.Functor ⋙ F ≅ G) : Cone F ≌ Cone G :=
(whiskeringEquivalence e).trans (postcomposeEquivalence α)
#align category_theory.limits.cones.equivalence_of_reindexing CategoryTheory.Limits.Cones.equivalenceOfReindexing
+-/
section
@@ -457,6 +477,7 @@ instance functorialityFaithful [Faithful G] : Faithful (Cones.functoriality F G)
#align category_theory.limits.cones.functoriality_faithful CategoryTheory.Limits.Cones.functorialityFaithful
-/
+#print CategoryTheory.Limits.Cones.functorialityEquivalence /-
/-- If `e : C ≌ D` is an equivalence of categories, then `functoriality F e.functor` induces an
equivalence between cones over `F` and cones over `F ⋙ e.functor`.
-/
@@ -469,6 +490,7 @@ def functorialityEquivalence (e : C ≌ D) : Cone F ≌ Cone (F ⋙ e.Functor) :
unitIso := NatIso.ofComponents (fun c => Cones.ext (e.unitIso.app _) (by tidy)) (by tidy)
counitIso := NatIso.ofComponents (fun c => Cones.ext (e.counitIso.app _) (by tidy)) (by tidy) }
#align category_theory.limits.cones.functoriality_equivalence CategoryTheory.Limits.Cones.functorialityEquivalence
+-/
#print CategoryTheory.Limits.Cones.reflects_cone_isomorphism /-
/-- If `F` reflects isomorphisms, then `cones.functoriality F` reflects isomorphisms
@@ -521,6 +543,7 @@ instance Cocone.category : Category (Cocone F)
namespace Cocones
+#print CategoryTheory.Limits.Cocones.ext /-
/-- To give an isomorphism between cocones, it suffices to give an
isomorphism between their vertices which commutes with the cocone
maps. -/
@@ -532,6 +555,7 @@ def ext {c c' : Cocone F} (φ : c.pt ≅ c'.pt) (w : ∀ j, c.ι.app j ≫ φ.Ho
{ Hom := φ.inv
w' := fun j => φ.comp_inv_eq.mpr (w j).symm }
#align category_theory.limits.cocones.ext CategoryTheory.Limits.Cocones.ext
+-/
#print CategoryTheory.Limits.Cocones.eta /-
/-- Eta rule for cocones. -/
@@ -581,6 +605,7 @@ def precomposeId : precompose (𝟙 F) ≅ 𝟭 (Cocone F) :=
#align category_theory.limits.cocones.precompose_id CategoryTheory.Limits.Cocones.precomposeId
-/
+#print CategoryTheory.Limits.Cocones.precomposeEquivalence /-
/-- If `F` and `G` are naturally isomorphic functors, then they have equivalent categories of
cocones.
-/
@@ -592,6 +617,7 @@ def precomposeEquivalence {G : J ⥤ C} (α : G ≅ F) : Cocone F ≌ Cocone G
unitIso := NatIso.ofComponents (fun s => Cocones.ext (Iso.refl _) (by tidy)) (by tidy)
counitIso := NatIso.ofComponents (fun s => Cocones.ext (Iso.refl _) (by tidy)) (by tidy)
#align category_theory.limits.cocones.precompose_equivalence CategoryTheory.Limits.Cocones.precomposeEquivalence
+-/
#print CategoryTheory.Limits.Cocones.whiskering /-
/-- Whiskering on the left by `E : K ⥤ J` gives a functor from `cocone F` to `cocone (E ⋙ F)`.
@@ -604,6 +630,7 @@ def whiskering (E : K ⥤ J) : Cocone F ⥤ Cocone (E ⋙ F)
#align category_theory.limits.cocones.whiskering CategoryTheory.Limits.Cocones.whiskering
-/
+#print CategoryTheory.Limits.Cocones.whiskeringEquivalence /-
/-- Whiskering by an equivalence gives an equivalence between categories of cones.
-/
@[simps]
@@ -626,7 +653,9 @@ def whiskeringEquivalence (e : K ≌ J) : Cocone F ≌ Cocone (e.Functor ⋙ F)
simpa [e.counit_inv_app_functor k] using s.w (e.unit.app k)))
(by tidy)
#align category_theory.limits.cocones.whiskering_equivalence CategoryTheory.Limits.Cocones.whiskeringEquivalence
+-/
+#print CategoryTheory.Limits.Cocones.equivalenceOfReindexing /-
/--
The categories of cocones over `F` and `G` are equivalent if `F` and `G` are naturally isomorphic
(possibly after changing the indexing category by an equivalence).
@@ -635,6 +664,7 @@ The categories of cocones over `F` and `G` are equivalent if `F` and `G` are nat
def equivalenceOfReindexing {G : K ⥤ C} (e : K ≌ J) (α : e.Functor ⋙ F ≅ G) : Cocone F ≌ Cocone G :=
(whiskeringEquivalence e).trans (precomposeEquivalence α.symm)
#align category_theory.limits.cocones.equivalence_of_reindexing CategoryTheory.Limits.Cocones.equivalenceOfReindexing
+-/
section
@@ -681,6 +711,7 @@ instance functoriality_faithful [Faithful G] : Faithful (functoriality F G)
#align category_theory.limits.cocones.functoriality_faithful CategoryTheory.Limits.Cocones.functoriality_faithful
-/
+#print CategoryTheory.Limits.Cocones.functorialityEquivalence /-
/-- If `e : C ≌ D` is an equivalence of categories, then `functoriality F e.functor` induces an
equivalence between cocones over `F` and cocones over `F ⋙ e.functor`.
-/
@@ -705,6 +736,7 @@ def functorialityEquivalence (e : C ≌ D) : Cocone F ≌ Cocone (F ⋙ e.Functo
dsimp; simp))-- See note [dsimp, simp].
fun c c' f => by ext; dsimp; simp; dsimp; simp }
#align category_theory.limits.cocones.functoriality_equivalence CategoryTheory.Limits.Cocones.functorialityEquivalence
+-/
#print CategoryTheory.Limits.Cocones.reflects_cocone_isomorphism /-
/-- If `F` reflects isomorphisms, then `cocones.functoriality F` reflects isomorphisms
@@ -734,64 +766,84 @@ variable {F : J ⥤ C} {G : J ⥤ C} (H : C ⥤ D)
open CategoryTheory.Limits
+#print CategoryTheory.Functor.mapCone /-
/-- The image of a cone in C under a functor G : C ⥤ D is a cone in D. -/
@[simps]
def mapCone (c : Cone F) : Cone (F ⋙ H) :=
(Cones.functoriality F H).obj c
#align category_theory.functor.map_cone CategoryTheory.Functor.mapCone
+-/
+#print CategoryTheory.Functor.mapCocone /-
/-- The image of a cocone in C under a functor G : C ⥤ D is a cocone in D. -/
@[simps]
def mapCocone (c : Cocone F) : Cocone (F ⋙ H) :=
(Cocones.functoriality F H).obj c
#align category_theory.functor.map_cocone CategoryTheory.Functor.mapCocone
+-/
+#print CategoryTheory.Functor.mapConeMorphism /-
/-- Given a cone morphism `c ⟶ c'`, construct a cone morphism on the mapped cones functorially. -/
def mapConeMorphism {c c' : Cone F} (f : c ⟶ c') : H.mapCone c ⟶ H.mapCone c' :=
(Cones.functoriality F H).map f
#align category_theory.functor.map_cone_morphism CategoryTheory.Functor.mapConeMorphism
+-/
+#print CategoryTheory.Functor.mapCoconeMorphism /-
/-- Given a cocone morphism `c ⟶ c'`, construct a cocone morphism on the mapped cocones
functorially. -/
def mapCoconeMorphism {c c' : Cocone F} (f : c ⟶ c') : H.mapCocone c ⟶ H.mapCocone c' :=
(Cocones.functoriality F H).map f
#align category_theory.functor.map_cocone_morphism CategoryTheory.Functor.mapCoconeMorphism
+-/
+#print CategoryTheory.Functor.mapConeInv /-
/-- If `H` is an equivalence, we invert `H.map_cone` and get a cone for `F` from a cone
for `F ⋙ H`.-/
def mapConeInv [IsEquivalence H] (c : Cone (F ⋙ H)) : Cone F :=
(Limits.Cones.functorialityEquivalence F (asEquivalence H)).inverse.obj c
#align category_theory.functor.map_cone_inv CategoryTheory.Functor.mapConeInv
+-/
+#print CategoryTheory.Functor.mapConeMapConeInv /-
/-- `map_cone` is the left inverse to `map_cone_inv`. -/
def mapConeMapConeInv {F : J ⥤ D} (H : D ⥤ C) [IsEquivalence H] (c : Cone (F ⋙ H)) :
mapCone H (mapConeInv H c) ≅ c :=
(Limits.Cones.functorialityEquivalence F (asEquivalence H)).counitIso.app c
#align category_theory.functor.map_cone_map_cone_inv CategoryTheory.Functor.mapConeMapConeInv
+-/
+#print CategoryTheory.Functor.mapConeInvMapCone /-
/-- `map_cone` is the right inverse to `map_cone_inv`. -/
def mapConeInvMapCone {F : J ⥤ D} (H : D ⥤ C) [IsEquivalence H] (c : Cone F) :
mapConeInv H (mapCone H c) ≅ c :=
(Limits.Cones.functorialityEquivalence F (asEquivalence H)).unitIso.symm.app c
#align category_theory.functor.map_cone_inv_map_cone CategoryTheory.Functor.mapConeInvMapCone
+-/
+#print CategoryTheory.Functor.mapCoconeInv /-
/-- If `H` is an equivalence, we invert `H.map_cone` and get a cone for `F` from a cone
for `F ⋙ H`.-/
def mapCoconeInv [IsEquivalence H] (c : Cocone (F ⋙ H)) : Cocone F :=
(Limits.Cocones.functorialityEquivalence F (asEquivalence H)).inverse.obj c
#align category_theory.functor.map_cocone_inv CategoryTheory.Functor.mapCoconeInv
+-/
+#print CategoryTheory.Functor.mapCoconeMapCoconeInv /-
/-- `map_cocone` is the left inverse to `map_cocone_inv`. -/
def mapCoconeMapCoconeInv {F : J ⥤ D} (H : D ⥤ C) [IsEquivalence H] (c : Cocone (F ⋙ H)) :
mapCocone H (mapCoconeInv H c) ≅ c :=
(Limits.Cocones.functorialityEquivalence F (asEquivalence H)).counitIso.app c
#align category_theory.functor.map_cocone_map_cocone_inv CategoryTheory.Functor.mapCoconeMapCoconeInv
+-/
+#print CategoryTheory.Functor.mapCoconeInvMapCocone /-
/-- `map_cocone` is the right inverse to `map_cocone_inv`. -/
def mapCoconeInvMapCocone {F : J ⥤ D} (H : D ⥤ C) [IsEquivalence H] (c : Cocone F) :
mapCoconeInv H (mapCocone H c) ≅ c :=
(Limits.Cocones.functorialityEquivalence F (asEquivalence H)).unitIso.symm.app c
#align category_theory.functor.map_cocone_inv_map_cocone CategoryTheory.Functor.mapCoconeInvMapCocone
+-/
#print CategoryTheory.Functor.functorialityCompPostcompose /-
/-- `functoriality F _ ⋙ postcompose (whisker_left F _)` simplifies to `functoriality F _`. -/
@@ -802,6 +854,7 @@ def functorialityCompPostcompose {H H' : C ⥤ D} (α : H ≅ H') :
#align category_theory.functor.functoriality_comp_postcompose CategoryTheory.Functor.functorialityCompPostcompose
-/
+#print CategoryTheory.Functor.postcomposeWhiskerLeftMapCone /-
/-- For `F : J ⥤ C`, given a cone `c : cone F`, and a natural isomorphism `α : H ≅ H'` for functors
`H H' : C ⥤ D`, the postcomposition of the cone `H.map_cone` using the isomorphism `α` is
isomorphic to the cone `H'.map_cone`.
@@ -811,7 +864,9 @@ def postcomposeWhiskerLeftMapCone {H H' : C ⥤ D} (α : H ≅ H') (c : Cone F)
(Cones.postcompose (whiskerLeft F α.Hom : _)).obj (H.mapCone c) ≅ H'.mapCone c :=
(functorialityCompPostcompose α).app c
#align category_theory.functor.postcompose_whisker_left_map_cone CategoryTheory.Functor.postcomposeWhiskerLeftMapCone
+-/
+#print CategoryTheory.Functor.mapConePostcompose /-
/--
`map_cone` commutes with `postcompose`. In particular, for `F : J ⥤ C`, given a cone `c : cone F`, a
natural transformation `α : F ⟶ G` and a functor `H : C ⥤ D`, we have two obvious ways of producing
@@ -823,7 +878,9 @@ def mapConePostcompose {α : F ⟶ G} {c} :
(Cones.postcompose (whiskerRight α H : _)).obj (H.mapCone c) :=
Cones.ext (Iso.refl _) (by tidy)
#align category_theory.functor.map_cone_postcompose CategoryTheory.Functor.mapConePostcompose
+-/
+#print CategoryTheory.Functor.mapConePostcomposeEquivalenceFunctor /-
/-- `map_cone` commutes with `postcompose_equivalence`
-/
@[simps]
@@ -832,6 +889,7 @@ def mapConePostcomposeEquivalenceFunctor {α : F ≅ G} {c} :
(Cones.postcomposeEquivalence (isoWhiskerRight α H : _)).Functor.obj (H.mapCone c) :=
Cones.ext (Iso.refl _) (by tidy)
#align category_theory.functor.map_cone_postcompose_equivalence_functor CategoryTheory.Functor.mapConePostcomposeEquivalenceFunctor
+-/
#print CategoryTheory.Functor.functorialityCompPrecompose /-
/-- `functoriality F _ ⋙ precompose (whisker_left F _)` simplifies to `functoriality F _`. -/
@@ -843,6 +901,7 @@ def functorialityCompPrecompose {H H' : C ⥤ D} (α : H ≅ H') :
#align category_theory.functor.functoriality_comp_precompose CategoryTheory.Functor.functorialityCompPrecompose
-/
+#print CategoryTheory.Functor.precomposeWhiskerLeftMapCocone /-
/--
For `F : J ⥤ C`, given a cocone `c : cocone F`, and a natural isomorphism `α : H ≅ H'` for functors
`H H' : C ⥤ D`, the precomposition of the cocone `H.map_cocone` using the isomorphism `α` is
@@ -853,7 +912,9 @@ def precomposeWhiskerLeftMapCocone {H H' : C ⥤ D} (α : H ≅ H') (c : Cocone
(Cocones.precompose (whiskerLeft F α.inv : _)).obj (H.mapCocone c) ≅ H'.mapCocone c :=
(functorialityCompPrecompose α).app c
#align category_theory.functor.precompose_whisker_left_map_cocone CategoryTheory.Functor.precomposeWhiskerLeftMapCocone
+-/
+#print CategoryTheory.Functor.mapCoconePrecompose /-
/-- `map_cocone` commutes with `precompose`. In particular, for `F : J ⥤ C`, given a cocone
`c : cocone F`, a natural transformation `α : F ⟶ G` and a functor `H : C ⥤ D`, we have two obvious
ways of producing a cocone over `G ⋙ H`, and they are both isomorphic.
@@ -864,7 +925,9 @@ def mapCoconePrecompose {α : F ⟶ G} {c} :
(Cocones.precompose (whiskerRight α H : _)).obj (H.mapCocone c) :=
Cocones.ext (Iso.refl _) (by tidy)
#align category_theory.functor.map_cocone_precompose CategoryTheory.Functor.mapCoconePrecompose
+-/
+#print CategoryTheory.Functor.mapCoconePrecomposeEquivalenceFunctor /-
/-- `map_cocone` commutes with `precompose_equivalence`
-/
@[simps]
@@ -873,14 +936,18 @@ def mapCoconePrecomposeEquivalenceFunctor {α : F ≅ G} {c} :
(Cocones.precomposeEquivalence (isoWhiskerRight α H : _)).Functor.obj (H.mapCocone c) :=
Cocones.ext (Iso.refl _) (by tidy)
#align category_theory.functor.map_cocone_precompose_equivalence_functor CategoryTheory.Functor.mapCoconePrecomposeEquivalenceFunctor
+-/
+#print CategoryTheory.Functor.mapConeWhisker /-
/-- `map_cone` commutes with `whisker`
-/
@[simps]
def mapConeWhisker {E : K ⥤ J} {c : Cone F} : H.mapCone (c.whisker E) ≅ (H.mapCone c).whisker E :=
Cones.ext (Iso.refl _) (by tidy)
#align category_theory.functor.map_cone_whisker CategoryTheory.Functor.mapConeWhisker
+-/
+#print CategoryTheory.Functor.mapCoconeWhisker /-
/-- `map_cocone` commutes with `whisker`
-/
@[simps]
@@ -888,6 +955,7 @@ def mapCoconeWhisker {E : K ⥤ J} {c : Cocone F} :
H.mapCocone (c.whisker E) ≅ (H.mapCocone c).whisker E :=
Cocones.ext (Iso.refl _) (by tidy)
#align category_theory.functor.map_cocone_whisker CategoryTheory.Functor.mapCoconeWhisker
+-/
end Functor
@@ -940,6 +1008,7 @@ def Cone.unop (c : Cone F.op) : Cocone F
variable (F)
+#print CategoryTheory.Limits.coconeEquivalenceOpConeOp /-
/-- The category of cocones on `F`
is equivalent to the opposite category of
the category of cones on the opposite of `F`.
@@ -968,6 +1037,7 @@ def coconeEquivalenceOpConeOp : Cocone F ≌ (Cone F.op)ᵒᵖ
fun X Y f => Quiver.Hom.unop_inj (ConeMorphism.ext _ _ (by dsimp; simp))
functor_unitIso_comp' c := by apply Quiver.Hom.unop_inj; ext; dsimp; apply comp_id
#align category_theory.limits.cocone_equivalence_op_cone_op CategoryTheory.Limits.coconeEquivalenceOpConeOp
+-/
attribute [simps] cocone_equivalence_op_cone_op
@@ -1016,11 +1086,13 @@ def coconeOfConeLeftOp (c : Cone F.leftOp) : Cocone F
#align category_theory.limits.cocone_of_cone_left_op CategoryTheory.Limits.coconeOfConeLeftOp
-/
+#print CategoryTheory.Limits.coconeOfConeLeftOp_ι_app /-
@[simp]
theorem coconeOfConeLeftOp_ι_app (c : Cone F.leftOp) (j) :
(coconeOfConeLeftOp c).ι.app j = (c.π.app (op j)).op := by dsimp only [cocone_of_cone_left_op];
simp
#align category_theory.limits.cocone_of_cone_left_op_ι_app CategoryTheory.Limits.coconeOfConeLeftOp_ι_app
+-/
#print CategoryTheory.Limits.coneLeftOpOfCocone /-
/-- Change a cocone on `F : J ⥤ Cᵒᵖ` to a cone on `F.left_op : Jᵒᵖ ⥤ C`. -/
@@ -1140,17 +1212,21 @@ section
variable (G : C ⥤ D)
+#print CategoryTheory.Functor.mapConeOp /-
/-- The opposite cocone of the image of a cone is the image of the opposite cocone. -/
@[simps (config := { rhsMd := semireducible })]
def mapConeOp (t : Cone F) : (G.mapCone t).op ≅ G.op.mapCocone t.op :=
Cocones.ext (Iso.refl _) (by tidy)
#align category_theory.functor.map_cone_op CategoryTheory.Functor.mapConeOp
+-/
+#print CategoryTheory.Functor.mapCoconeOp /-
/-- The opposite cone of the image of a cocone is the image of the opposite cone. -/
@[simps (config := { rhsMd := semireducible })]
def mapCoconeOp {t : Cocone F} : (G.mapCocone t).op ≅ G.op.mapCone t.op :=
Cones.ext (Iso.refl _) (by tidy)
#align category_theory.functor.map_cocone_op CategoryTheory.Functor.mapCoconeOp
+-/
end
mathlib commit https://github.com/leanprover-community/mathlib/commit/cca40788df1b8755d5baf17ab2f27dacc2e17acb
@@ -187,7 +187,7 @@ namespace Cone
/-- The isomorphism between a cone on `F` and an element of the functor `F.cones`. -/
@[simps]
-def equiv (F : J ⥤ C) : Cone F ≅ ΣX, F.cones.obj X
+def equiv (F : J ⥤ C) : Cone F ≅ Σ X, F.cones.obj X
where
Hom c := ⟨op c.pt, c.π⟩
inv c :=
@@ -227,7 +227,7 @@ end Cone
namespace Cocone
/-- The isomorphism between a cocone on `F` and an element of the functor `F.cocones`. -/
-def equiv (F : J ⥤ C) : Cocone F ≅ ΣX, F.cocones.obj X
+def equiv (F : J ⥤ C) : Cocone F ≅ Σ X, F.cocones.obj X
where
Hom c := ⟨c.pt, c.ι⟩
inv c :=
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -149,12 +149,6 @@ instance inhabitedCone (F : Discrete PUnit ⥤ C) : Inhabited (Cone F) :=
#align category_theory.limits.inhabited_cone CategoryTheory.Limits.inhabitedCone
-/
-/- warning: category_theory.limits.cone.w -> CategoryTheory.Limits.Cone.w is a dubious translation:
-lean 3 declaration is
- forall {J : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} J] {C : Type.{u4}} [_inst_3 : CategoryTheory.Category.{u2, u4} C] {F : CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3} (c : CategoryTheory.Limits.Cone.{u1, u2, u3, u4} J _inst_1 C _inst_3 F) {j : J} {j' : J} (f : Quiver.Hom.{succ u1, u3} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} J (CategoryTheory.Category.toCategoryStruct.{u1, u3} J _inst_1)) j j'), Eq.{succ u2} (Quiver.Hom.{succ u2, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} J _inst_1 C _inst_3 (CategoryTheory.Functor.obj.{u2, max u3 u2, u4, max u1 u2 u3 u4} C _inst_3 (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.const.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Limits.Cone.pt.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c)) j) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} J _inst_1 C _inst_3 F j')) (CategoryTheory.CategoryStruct.comp.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} J _inst_1 C _inst_3 (CategoryTheory.Functor.obj.{u2, max u3 u2, u4, max u1 u2 u3 u4} C _inst_3 (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.const.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Limits.Cone.pt.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c)) j) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} J _inst_1 C _inst_3 F j) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} J _inst_1 C _inst_3 F j') (CategoryTheory.NatTrans.app.{u1, u2, u3, u4} J _inst_1 C _inst_3 (CategoryTheory.Functor.obj.{u2, max u3 u2, u4, max u1 u2 u3 u4} C _inst_3 (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.const.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Limits.Cone.pt.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c)) F (CategoryTheory.Limits.Cone.π.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c) j) (CategoryTheory.Functor.map.{u1, u2, u3, u4} J _inst_1 C _inst_3 F j j' f)) (CategoryTheory.NatTrans.app.{u1, u2, u3, u4} J _inst_1 C _inst_3 (CategoryTheory.Functor.obj.{u2, max u3 u2, u4, max u1 u2 u3 u4} C _inst_3 (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.const.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Limits.Cone.pt.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c)) F (CategoryTheory.Limits.Cone.π.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c) j')
-but is expected to have type
- forall {J : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} J] {C : Type.{u4}} [_inst_3 : CategoryTheory.Category.{u2, u4} C] {F : CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3} (c : CategoryTheory.Limits.Cone.{u1, u2, u3, u4} J _inst_1 C _inst_3 F) {j : J} {j' : J} (f : Quiver.Hom.{succ u1, u3} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} J (CategoryTheory.Category.toCategoryStruct.{u1, u3} J _inst_1)) j j'), Eq.{succ u2} (Quiver.Hom.{succ u2, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) (Prefunctor.obj.{succ u1, succ u2, u3, u4} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} J (CategoryTheory.Category.toCategoryStruct.{u1, u3} J _inst_1)) C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} J _inst_1 C _inst_3 (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u4, max (max (max u3 u1) u2) u4} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max (max (max u3 u1) u4) u2} (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max (max (max u3 u1) u4) u2} (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 C _inst_3))) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u4, max (max (max u3 u1) u4) u2} C _inst_3 (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.const.{u1, u2, u3, u4} J _inst_1 C _inst_3)) (CategoryTheory.Limits.Cone.pt.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c))) j) (Prefunctor.obj.{succ u1, succ u2, u3, u4} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} J (CategoryTheory.Category.toCategoryStruct.{u1, u3} J _inst_1)) C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} J _inst_1 C _inst_3 F) j')) (CategoryTheory.CategoryStruct.comp.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3) (Prefunctor.obj.{succ u1, succ u2, u3, u4} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} J (CategoryTheory.Category.toCategoryStruct.{u1, u3} J _inst_1)) C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} J _inst_1 C _inst_3 (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u4, max (max (max u3 u1) u2) u4} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max (max (max u3 u1) u4) u2} (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max (max (max u3 u1) u4) u2} (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 C _inst_3))) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u4, max (max (max u3 u1) u4) u2} C _inst_3 (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.const.{u1, u2, u3, u4} J _inst_1 C _inst_3)) (CategoryTheory.Limits.Cone.pt.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c))) j) (Prefunctor.obj.{succ u1, succ u2, u3, u4} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} J (CategoryTheory.Category.toCategoryStruct.{u1, u3} J _inst_1)) C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} J _inst_1 C _inst_3 F) j) (Prefunctor.obj.{succ u1, succ u2, u3, u4} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} J (CategoryTheory.Category.toCategoryStruct.{u1, u3} J _inst_1)) C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} J _inst_1 C _inst_3 F) j') (CategoryTheory.NatTrans.app.{u1, u2, u3, u4} J _inst_1 C _inst_3 (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u4, max (max (max u3 u1) u2) u4} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max (max (max u3 u1) u4) u2} (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max (max (max u3 u1) u4) u2} (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 C _inst_3))) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u4, max (max (max u3 u1) u4) u2} C _inst_3 (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.const.{u1, u2, u3, u4} J _inst_1 C _inst_3)) (CategoryTheory.Limits.Cone.pt.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c)) F (CategoryTheory.Limits.Cone.π.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c) j) (Prefunctor.map.{succ u1, succ u2, u3, u4} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} J (CategoryTheory.Category.toCategoryStruct.{u1, u3} J _inst_1)) C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} J _inst_1 C _inst_3 F) j j' f)) (CategoryTheory.NatTrans.app.{u1, u2, u3, u4} J _inst_1 C _inst_3 (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u4, max (max (max u3 u1) u2) u4} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max (max (max u3 u1) u4) u2} (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max (max (max u3 u1) u4) u2} (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 C _inst_3))) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u4, max (max (max u3 u1) u4) u2} C _inst_3 (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.const.{u1, u2, u3, u4} J _inst_1 C _inst_3)) (CategoryTheory.Limits.Cone.pt.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c)) F (CategoryTheory.Limits.Cone.π.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c) j')
-Case conversion may be inaccurate. Consider using '#align category_theory.limits.cone.w CategoryTheory.Limits.Cone.wₓ'. -/
@[simp, reassoc]
theorem Cone.w {F : J ⥤ C} (c : Cone F) {j j' : J} (f : j ⟶ j') :
c.π.app j ≫ F.map f = c.π.app j' := by rw [← c.π.naturality f]; apply id_comp
@@ -180,9 +174,6 @@ instance inhabitedCocone (F : Discrete PUnit ⥤ C) : Inhabited (Cocone F) :=
#align category_theory.limits.inhabited_cocone CategoryTheory.Limits.inhabitedCocone
-/
-/- warning: category_theory.limits.cocone.w -> CategoryTheory.Limits.Cocone.w is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align category_theory.limits.cocone.w CategoryTheory.Limits.Cocone.wₓ'. -/
@[simp, reassoc]
theorem Cocone.w {F : J ⥤ C} (c : Cocone F) {j j' : J} (f : j ⟶ j') :
F.map f ≫ c.ι.app j' = c.ι.app j := by rw [c.ι.naturality f]; apply comp_id
@@ -194,12 +185,6 @@ variable {F : J ⥤ C}
namespace Cone
-/- warning: category_theory.limits.cone.equiv -> CategoryTheory.Limits.Cone.equiv is a dubious translation:
-lean 3 declaration is
- forall {J : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} J] {C : Type.{u4}} [_inst_3 : CategoryTheory.Category.{u2, u4} C] (F : CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3), CategoryTheory.Iso.{max u3 u4 u2, max (succ u3) (succ u4) (succ u2)} Sort.{max (succ u3) (succ u4) (succ u2)} CategoryTheory.types.{max u3 u4 u2} (CategoryTheory.Limits.Cone.{u1, u2, u3, u4} J _inst_1 C _inst_3 F) (Sigma.{u4, max u3 u2} (Opposite.{succ u4} C) (fun (X : Opposite.{succ u4} C) => CategoryTheory.Functor.obj.{u2, max u3 u2, u4, succ (max u3 u2)} (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3) Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.Functor.cones.{u1, u2, u3, u4} J _inst_1 C _inst_3 F) X))
-but is expected to have type
- forall {J : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} J] {C : Type.{u4}} [_inst_3 : CategoryTheory.Category.{u2, u4} C] (F : CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3), CategoryTheory.Iso.{max (max u3 u4) u2, max (max (succ u4) (succ u3)) (succ u2)} Sort.{max (max (succ u3) (succ u4)) (succ u2)} CategoryTheory.types.{max (max u3 u4) u2} (CategoryTheory.Limits.Cone.{u1, u2, u3, u4} J _inst_1 C _inst_3 F) (Sigma.{u4, max u3 u2} (Opposite.{succ u4} C) (fun (X : Opposite.{succ u4} C) => Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u4, max (succ u3) (succ u2)} (Opposite.{succ u4} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} (Opposite.{succ u4} C) (CategoryTheory.Category.toCategoryStruct.{u2, u4} (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3))) Type.{max u3 u2} (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max (succ u3) (succ u2)} Type.{max u3 u2} (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max (succ u3) (succ u2)} Type.{max u3 u2} CategoryTheory.types.{max u3 u2})) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u4, max (succ u3) (succ u2)} (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3) Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.Functor.cones.{u1, u2, u3, u4} J _inst_1 C _inst_3 F)) X))
-Case conversion may be inaccurate. Consider using '#align category_theory.limits.cone.equiv CategoryTheory.Limits.Cone.equivₓ'. -/
/-- The isomorphism between a cone on `F` and an element of the functor `F.cones`. -/
@[simps]
def equiv (F : J ⥤ C) : Cone F ≅ ΣX, F.cones.obj X
@@ -212,12 +197,6 @@ def equiv (F : J ⥤ C) : Cone F ≅ ΣX, F.cones.obj X
inv_hom_id' := by ext1; cases x; rfl
#align category_theory.limits.cone.equiv CategoryTheory.Limits.Cone.equiv
-/- warning: category_theory.limits.cone.extensions -> CategoryTheory.Limits.Cone.extensions is a dubious translation:
-lean 3 declaration is
- forall {J : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} J] {C : Type.{u4}} [_inst_3 : CategoryTheory.Category.{u2, u4} C] {F : CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3} (c : CategoryTheory.Limits.Cone.{u1, u2, u3, u4} J _inst_1 C _inst_3 F), Quiver.Hom.{succ (max u4 u2 u3), max u2 (max u2 u3) u4 (succ (max u2 u3))} (CategoryTheory.Functor.{u2, max u2 u3, u4, succ (max u2 u3)} (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3) Type.{max u2 u3} CategoryTheory.types.{max u2 u3}) (CategoryTheory.CategoryStruct.toQuiver.{max u4 u2 u3, max u2 (max u2 u3) u4 (succ (max u2 u3))} (CategoryTheory.Functor.{u2, max u2 u3, u4, succ (max u2 u3)} (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3) Type.{max u2 u3} CategoryTheory.types.{max u2 u3}) (CategoryTheory.Category.toCategoryStruct.{max u4 u2 u3, max u2 (max u2 u3) u4 (succ (max u2 u3))} (CategoryTheory.Functor.{u2, max u2 u3, u4, succ (max u2 u3)} (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3) Type.{max u2 u3} CategoryTheory.types.{max u2 u3}) (CategoryTheory.Functor.category.{u2, max u2 u3, u4, succ (max u2 u3)} (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3) Type.{max u2 u3} CategoryTheory.types.{max u2 u3}))) (CategoryTheory.Functor.comp.{u2, u2, max u2 u3, u4, succ u2, succ (max u2 u3)} (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3) Type.{u2} CategoryTheory.types.{u2} Type.{max u2 u3} CategoryTheory.types.{max u2 u3} (CategoryTheory.Functor.obj.{u2, max u4 u2, u4, max u2 u4 (succ u2)} C _inst_3 (CategoryTheory.Functor.{u2, u2, u4, succ u2} (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3) Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.Functor.category.{u2, u2, u4, succ u2} (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3) Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.yoneda.{u2, u4} C _inst_3) (CategoryTheory.Limits.Cone.pt.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c)) CategoryTheory.uliftFunctor.{u3, u2}) (CategoryTheory.Functor.cones.{u1, u2, u3, u4} J _inst_1 C _inst_3 F)
-but is expected to have type
- forall {J : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} J] {C : Type.{u4}} [_inst_3 : CategoryTheory.Category.{u2, u4} C] {F : CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3} (c : CategoryTheory.Limits.Cone.{u1, u2, u3, u4} J _inst_1 C _inst_3 F), Quiver.Hom.{max (max (succ u3) (succ u4)) (succ u2), max (max (max (max (succ u3) (succ u2)) u4) u3 u2) u2} (CategoryTheory.Functor.{u2, max u3 u2, u4, max (succ u3) (succ u2)} (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3) Type.{max u2 u3} CategoryTheory.types.{max u2 u3}) (CategoryTheory.CategoryStruct.toQuiver.{max (max u3 u4) u2, max (max (succ u3) u4) (succ u2)} (CategoryTheory.Functor.{u2, max u3 u2, u4, max (succ u3) (succ u2)} (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3) Type.{max u2 u3} CategoryTheory.types.{max u2 u3}) (CategoryTheory.Category.toCategoryStruct.{max (max u3 u4) u2, max (max (succ u3) u4) (succ u2)} (CategoryTheory.Functor.{u2, max u3 u2, u4, max (succ u3) (succ u2)} (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3) Type.{max u2 u3} CategoryTheory.types.{max u2 u3}) (CategoryTheory.Functor.category.{u2, max u3 u2, u4, max (succ u3) (succ u2)} (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3) Type.{max u2 u3} CategoryTheory.types.{max u2 u3}))) (CategoryTheory.Functor.comp.{u2, u2, max u3 u2, u4, succ u2, max (succ u3) (succ u2)} (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3) Type.{u2} CategoryTheory.types.{u2} Type.{max u2 u3} CategoryTheory.types.{max u2 u3} (Prefunctor.obj.{succ u2, max (succ u2) (succ u4), u4, max (succ u2) u4} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) (CategoryTheory.Functor.{u2, u2, u4, succ u2} (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3) Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.CategoryStruct.toQuiver.{max u4 u2, max u4 (succ u2)} (CategoryTheory.Functor.{u2, u2, u4, succ u2} (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3) Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.Category.toCategoryStruct.{max u4 u2, max u4 (succ u2)} (CategoryTheory.Functor.{u2, u2, u4, succ u2} (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3) Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.Functor.category.{u2, u2, u4, succ u2} (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3) Type.{u2} CategoryTheory.types.{u2}))) (CategoryTheory.Functor.toPrefunctor.{u2, max u4 u2, u4, max u4 (succ u2)} C _inst_3 (CategoryTheory.Functor.{u2, u2, u4, succ u2} (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3) Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.Functor.category.{u2, u2, u4, succ u2} (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3) Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.yoneda.{u2, u4} C _inst_3)) (CategoryTheory.Limits.Cone.pt.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c)) CategoryTheory.uliftFunctor.{u3, u2}) (CategoryTheory.Functor.cones.{u1, u2, u3, u4} J _inst_1 C _inst_3 F)
-Case conversion may be inaccurate. Consider using '#align category_theory.limits.cone.extensions CategoryTheory.Limits.Cone.extensionsₓ'. -/
/-- A map to the vertex of a cone naturally induces a cone by composition. -/
@[simps]
def extensions (c : Cone F) : yoneda.obj c.pt ⋙ uliftFunctor.{u₁} ⟶ F.cones
@@ -247,12 +226,6 @@ end Cone
namespace Cocone
-/- warning: category_theory.limits.cocone.equiv -> CategoryTheory.Limits.Cocone.equiv is a dubious translation:
-lean 3 declaration is
- forall {J : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} J] {C : Type.{u4}} [_inst_3 : CategoryTheory.Category.{u2, u4} C] (F : CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3), CategoryTheory.Iso.{max u3 u4 u2, max (succ u3) (succ u4) (succ u2)} Sort.{max (succ u3) (succ u4) (succ u2)} CategoryTheory.types.{max u3 u4 u2} (CategoryTheory.Limits.Cocone.{u1, u2, u3, u4} J _inst_1 C _inst_3 F) (Sigma.{u4, max u3 u2} C (fun (X : C) => CategoryTheory.Functor.obj.{u2, max u3 u2, u4, succ (max u3 u2)} C _inst_3 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.Functor.cocones.{u1, u2, u3, u4} J _inst_1 C _inst_3 F) X))
-but is expected to have type
- forall {J : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} J] {C : Type.{u4}} [_inst_3 : CategoryTheory.Category.{u2, u4} C] (F : CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3), CategoryTheory.Iso.{max (max u3 u4) u2, max (max (succ u4) (succ u3)) (succ u2)} Sort.{max (max (succ u3) (succ u4)) (succ u2)} CategoryTheory.types.{max (max u3 u4) u2} (CategoryTheory.Limits.Cocone.{u1, u2, u3, u4} J _inst_1 C _inst_3 F) (Sigma.{u4, max u3 u2} C (fun (X : C) => Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u4, max (succ u3) (succ u2)} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) Type.{max u3 u2} (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max (succ u3) (succ u2)} Type.{max u3 u2} (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max (succ u3) (succ u2)} Type.{max u3 u2} CategoryTheory.types.{max u3 u2})) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u4, max (succ u3) (succ u2)} C _inst_3 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.Functor.cocones.{u1, u2, u3, u4} J _inst_1 C _inst_3 F)) X))
-Case conversion may be inaccurate. Consider using '#align category_theory.limits.cocone.equiv CategoryTheory.Limits.Cocone.equivₓ'. -/
/-- The isomorphism between a cocone on `F` and an element of the functor `F.cocones`. -/
def equiv (F : J ⥤ C) : Cocone F ≅ ΣX, F.cocones.obj X
where
@@ -264,12 +237,6 @@ def equiv (F : J ⥤ C) : Cocone F ≅ ΣX, F.cocones.obj X
inv_hom_id' := by ext1; cases x; rfl
#align category_theory.limits.cocone.equiv CategoryTheory.Limits.Cocone.equiv
-/- warning: category_theory.limits.cocone.extensions -> CategoryTheory.Limits.Cocone.extensions is a dubious translation:
-lean 3 declaration is
- forall {J : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} J] {C : Type.{u4}} [_inst_3 : CategoryTheory.Category.{u2, u4} C] {F : CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3} (c : CategoryTheory.Limits.Cocone.{u1, u2, u3, u4} J _inst_1 C _inst_3 F), Quiver.Hom.{succ (max u4 u2 u3), max u2 (max u2 u3) u4 (succ (max u2 u3))} (CategoryTheory.Functor.{u2, max u2 u3, u4, succ (max u2 u3)} C _inst_3 Type.{max u2 u3} CategoryTheory.types.{max u2 u3}) (CategoryTheory.CategoryStruct.toQuiver.{max u4 u2 u3, max u2 (max u2 u3) u4 (succ (max u2 u3))} (CategoryTheory.Functor.{u2, max u2 u3, u4, succ (max u2 u3)} C _inst_3 Type.{max u2 u3} CategoryTheory.types.{max u2 u3}) (CategoryTheory.Category.toCategoryStruct.{max u4 u2 u3, max u2 (max u2 u3) u4 (succ (max u2 u3))} (CategoryTheory.Functor.{u2, max u2 u3, u4, succ (max u2 u3)} C _inst_3 Type.{max u2 u3} CategoryTheory.types.{max u2 u3}) (CategoryTheory.Functor.category.{u2, max u2 u3, u4, succ (max u2 u3)} C _inst_3 Type.{max u2 u3} CategoryTheory.types.{max u2 u3}))) (CategoryTheory.Functor.comp.{u2, u2, max u2 u3, u4, succ u2, succ (max u2 u3)} C _inst_3 Type.{u2} CategoryTheory.types.{u2} Type.{max u2 u3} CategoryTheory.types.{max u2 u3} (CategoryTheory.Functor.obj.{u2, max u4 u2, u4, max u2 u4 (succ u2)} (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3) (CategoryTheory.Functor.{u2, u2, u4, succ u2} C _inst_3 Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.Functor.category.{u2, u2, u4, succ u2} C _inst_3 Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.coyoneda.{u2, u4} C _inst_3) (Opposite.op.{succ u4} C (CategoryTheory.Limits.Cocone.pt.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c))) CategoryTheory.uliftFunctor.{u3, u2}) (CategoryTheory.Functor.cocones.{u1, u2, u3, u4} J _inst_1 C _inst_3 F)
-but is expected to have type
- forall {J : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} J] {C : Type.{u4}} [_inst_3 : CategoryTheory.Category.{u2, u4} C] {F : CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3} (c : CategoryTheory.Limits.Cocone.{u1, u2, u3, u4} J _inst_1 C _inst_3 F), Quiver.Hom.{max (max (succ u3) (succ u4)) (succ u2), max (max (max (max (succ u3) (succ u2)) u4) u3 u2) u2} (CategoryTheory.Functor.{u2, max u3 u2, u4, max (succ u3) (succ u2)} C _inst_3 Type.{max u2 u3} CategoryTheory.types.{max u2 u3}) (CategoryTheory.CategoryStruct.toQuiver.{max (max u3 u4) u2, max (max (succ u3) u4) (succ u2)} (CategoryTheory.Functor.{u2, max u3 u2, u4, max (succ u3) (succ u2)} C _inst_3 Type.{max u2 u3} CategoryTheory.types.{max u2 u3}) (CategoryTheory.Category.toCategoryStruct.{max (max u3 u4) u2, max (max (succ u3) u4) (succ u2)} (CategoryTheory.Functor.{u2, max u3 u2, u4, max (succ u3) (succ u2)} C _inst_3 Type.{max u2 u3} CategoryTheory.types.{max u2 u3}) (CategoryTheory.Functor.category.{u2, max u3 u2, u4, max (succ u3) (succ u2)} C _inst_3 Type.{max u2 u3} CategoryTheory.types.{max u2 u3}))) (CategoryTheory.Functor.comp.{u2, u2, max u3 u2, u4, succ u2, max (succ u3) (succ u2)} C _inst_3 Type.{u2} CategoryTheory.types.{u2} Type.{max u2 u3} CategoryTheory.types.{max u2 u3} (Prefunctor.obj.{succ u2, max (succ u4) (succ u2), u4, max u4 (succ u2)} (Opposite.{succ u4} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} (Opposite.{succ u4} C) (CategoryTheory.Category.toCategoryStruct.{u2, u4} (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3))) (CategoryTheory.Functor.{u2, u2, u4, succ u2} C _inst_3 Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.CategoryStruct.toQuiver.{max u4 u2, max u4 (succ u2)} (CategoryTheory.Functor.{u2, u2, u4, succ u2} C _inst_3 Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.Category.toCategoryStruct.{max u4 u2, max u4 (succ u2)} (CategoryTheory.Functor.{u2, u2, u4, succ u2} C _inst_3 Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.Functor.category.{u2, u2, u4, succ u2} C _inst_3 Type.{u2} CategoryTheory.types.{u2}))) (CategoryTheory.Functor.toPrefunctor.{u2, max u4 u2, u4, max u4 (succ u2)} (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3) (CategoryTheory.Functor.{u2, u2, u4, succ u2} C _inst_3 Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.Functor.category.{u2, u2, u4, succ u2} C _inst_3 Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.coyoneda.{u2, u4} C _inst_3)) (Opposite.op.{succ u4} C (CategoryTheory.Limits.Cocone.pt.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c))) CategoryTheory.uliftFunctor.{u3, u2}) (CategoryTheory.Functor.cocones.{u1, u2, u3, u4} J _inst_1 C _inst_3 F)
-Case conversion may be inaccurate. Consider using '#align category_theory.limits.cocone.extensions CategoryTheory.Limits.Cocone.extensionsₓ'. -/
/-- A map from the vertex of a cocone naturally induces a cocone by composition. -/
@[simps]
def extensions (c : Cocone F) : coyoneda.obj (op c.pt) ⋙ uliftFunctor.{u₁} ⟶ F.cocones
@@ -332,12 +299,6 @@ instance Cone.category : Category (Cone F)
namespace Cones
-/- warning: category_theory.limits.cones.ext -> CategoryTheory.Limits.Cones.ext is a dubious translation:
-lean 3 declaration is
- forall {J : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} J] {C : Type.{u4}} [_inst_3 : CategoryTheory.Category.{u2, u4} C] {F : CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3} {c : CategoryTheory.Limits.Cone.{u1, u2, u3, u4} J _inst_1 C _inst_3 F} {c' : CategoryTheory.Limits.Cone.{u1, u2, u3, u4} J _inst_1 C _inst_3 F} (φ : CategoryTheory.Iso.{u2, u4} C _inst_3 (CategoryTheory.Limits.Cone.pt.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c) (CategoryTheory.Limits.Cone.pt.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c')), (forall (j : J), Eq.{succ u2} (Quiver.Hom.{succ u2, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} J _inst_1 C _inst_3 (CategoryTheory.Functor.obj.{u2, max u3 u2, u4, max u1 u2 u3 u4} C _inst_3 (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.const.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Limits.Cone.pt.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c)) j) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} J _inst_1 C _inst_3 F j)) (CategoryTheory.NatTrans.app.{u1, u2, u3, u4} J _inst_1 C _inst_3 (CategoryTheory.Functor.obj.{u2, max u3 u2, u4, max u1 u2 u3 u4} C _inst_3 (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.const.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Limits.Cone.pt.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c)) F (CategoryTheory.Limits.Cone.π.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c) j) (CategoryTheory.CategoryStruct.comp.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} J _inst_1 C _inst_3 (CategoryTheory.Functor.obj.{u2, max u3 u2, u4, max u1 u2 u3 u4} C _inst_3 (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.const.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Limits.Cone.pt.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c)) j) (CategoryTheory.Limits.Cone.pt.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c') (CategoryTheory.Functor.obj.{u1, u2, u3, u4} J _inst_1 C _inst_3 F j) (CategoryTheory.Iso.hom.{u2, u4} C _inst_3 (CategoryTheory.Limits.Cone.pt.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c) (CategoryTheory.Limits.Cone.pt.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c') φ) (CategoryTheory.NatTrans.app.{u1, u2, u3, u4} J _inst_1 C _inst_3 (CategoryTheory.Functor.obj.{u2, max u3 u2, u4, max u1 u2 u3 u4} C _inst_3 (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.const.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Limits.Cone.pt.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c')) F (CategoryTheory.Limits.Cone.π.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c') j))) -> (CategoryTheory.Iso.{u2, max u3 u4 u2} (CategoryTheory.Limits.Cone.{u1, u2, u3, u4} J _inst_1 C _inst_3 F) (CategoryTheory.Limits.Cone.category.{u1, u2, u3, u4} J _inst_1 C _inst_3 F) c c')
-but is expected to have type
- forall {J : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} J] {C : Type.{u4}} [_inst_3 : CategoryTheory.Category.{u2, u4} C] {F : CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3} {c : CategoryTheory.Limits.Cone.{u1, u2, u3, u4} J _inst_1 C _inst_3 F} {c' : CategoryTheory.Limits.Cone.{u1, u2, u3, u4} J _inst_1 C _inst_3 F} (φ : CategoryTheory.Iso.{u2, u4} C _inst_3 (CategoryTheory.Limits.Cone.pt.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c) (CategoryTheory.Limits.Cone.pt.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c')), (forall (j : J), Eq.{succ u2} (Quiver.Hom.{succ u2, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) (Prefunctor.obj.{succ u1, succ u2, u3, u4} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} J (CategoryTheory.Category.toCategoryStruct.{u1, u3} J _inst_1)) C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} J _inst_1 C _inst_3 (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u4, max (max (max u3 u1) u2) u4} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max (max (max u3 u1) u4) u2} (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max (max (max u3 u1) u4) u2} (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 C _inst_3))) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u4, max (max (max u3 u1) u4) u2} C _inst_3 (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.const.{u1, u2, u3, u4} J _inst_1 C _inst_3)) (CategoryTheory.Limits.Cone.pt.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c))) j) (Prefunctor.obj.{succ u1, succ u2, u3, u4} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} J (CategoryTheory.Category.toCategoryStruct.{u1, u3} J _inst_1)) C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} J _inst_1 C _inst_3 F) j)) (CategoryTheory.NatTrans.app.{u1, u2, u3, u4} J _inst_1 C _inst_3 (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u4, max (max (max u3 u1) u2) u4} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max (max (max u3 u1) u4) u2} (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max (max (max u3 u1) u4) u2} (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 C _inst_3))) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u4, max (max (max u3 u1) u4) u2} C _inst_3 (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.const.{u1, u2, u3, u4} J _inst_1 C _inst_3)) (CategoryTheory.Limits.Cone.pt.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c)) F (CategoryTheory.Limits.Cone.π.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c) j) (CategoryTheory.CategoryStruct.comp.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3) (CategoryTheory.Limits.Cone.pt.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c) (CategoryTheory.Limits.Cone.pt.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c') (Prefunctor.obj.{succ u1, succ u2, u3, u4} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} J (CategoryTheory.Category.toCategoryStruct.{u1, u3} J _inst_1)) C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} J _inst_1 C _inst_3 F) j) (CategoryTheory.Iso.hom.{u2, u4} C _inst_3 (CategoryTheory.Limits.Cone.pt.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c) (CategoryTheory.Limits.Cone.pt.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c') φ) (CategoryTheory.NatTrans.app.{u1, u2, u3, u4} J _inst_1 C _inst_3 (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u4, max (max (max u3 u1) u2) u4} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max (max (max u3 u1) u4) u2} (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max (max (max u3 u1) u4) u2} (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 C _inst_3))) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u4, max (max (max u3 u1) u4) u2} C _inst_3 (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.const.{u1, u2, u3, u4} J _inst_1 C _inst_3)) (CategoryTheory.Limits.Cone.pt.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c')) F (CategoryTheory.Limits.Cone.π.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c') j))) -> (CategoryTheory.Iso.{u2, max (max u3 u4) u2} (CategoryTheory.Limits.Cone.{u1, u2, u3, u4} J _inst_1 C _inst_3 F) (CategoryTheory.Limits.Cone.category.{u1, u2, u3, u4} J _inst_1 C _inst_3 F) c c')
-Case conversion may be inaccurate. Consider using '#align category_theory.limits.cones.ext CategoryTheory.Limits.Cones.extₓ'. -/
/-- To give an isomorphism between cones, it suffices to give an
isomorphism between their vertices which commutes with the cone
maps. -/
@@ -400,12 +361,6 @@ def postcomposeId : postcompose (𝟙 F) ≅ 𝟭 (Cone F) :=
#align category_theory.limits.cones.postcompose_id CategoryTheory.Limits.Cones.postcomposeId
-/
-/- warning: category_theory.limits.cones.postcompose_equivalence -> CategoryTheory.Limits.Cones.postcomposeEquivalence is a dubious translation:
-lean 3 declaration is
- forall {J : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} J] {C : Type.{u4}} [_inst_3 : CategoryTheory.Category.{u2, u4} C] {F : CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3} {G : CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3}, (CategoryTheory.Iso.{max u3 u2, max u1 u2 u3 u4} (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 C _inst_3) F G) -> (CategoryTheory.Equivalence.{u2, u2, max u3 u4 u2, max u3 u4 u2} (CategoryTheory.Limits.Cone.{u1, u2, u3, u4} J _inst_1 C _inst_3 F) (CategoryTheory.Limits.Cone.category.{u1, u2, u3, u4} J _inst_1 C _inst_3 F) (CategoryTheory.Limits.Cone.{u1, u2, u3, u4} J _inst_1 C _inst_3 G) (CategoryTheory.Limits.Cone.category.{u1, u2, u3, u4} J _inst_1 C _inst_3 G))
-but is expected to have type
- forall {J : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} J] {C : Type.{u4}} [_inst_3 : CategoryTheory.Category.{u2, u4} C] {F : CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3} {G : CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3}, (CategoryTheory.Iso.{max u3 u2, max (max (max u3 u4) u1) u2} (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 C _inst_3) F G) -> (CategoryTheory.Equivalence.{u2, u2, max (max u4 u3) u2, max (max u4 u3) u2} (CategoryTheory.Limits.Cone.{u1, u2, u3, u4} J _inst_1 C _inst_3 F) (CategoryTheory.Limits.Cone.{u1, u2, u3, u4} J _inst_1 C _inst_3 G) (CategoryTheory.Limits.Cone.category.{u1, u2, u3, u4} J _inst_1 C _inst_3 F) (CategoryTheory.Limits.Cone.category.{u1, u2, u3, u4} J _inst_1 C _inst_3 G))
-Case conversion may be inaccurate. Consider using '#align category_theory.limits.cones.postcompose_equivalence CategoryTheory.Limits.Cones.postcomposeEquivalenceₓ'. -/
/-- If `F` and `G` are naturally isomorphic functors, then they have equivalent categories of
cones.
-/
@@ -429,12 +384,6 @@ def whiskering (E : K ⥤ J) : Cone F ⥤ Cone (E ⋙ F)
#align category_theory.limits.cones.whiskering CategoryTheory.Limits.Cones.whiskering
-/
-/- warning: category_theory.limits.cones.whiskering_equivalence -> CategoryTheory.Limits.Cones.whiskeringEquivalence is a dubious translation:
-lean 3 declaration is
- forall {J : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u1, u4} J] {K : Type.{u5}} [_inst_2 : CategoryTheory.Category.{u2, u5} K] {C : Type.{u6}} [_inst_3 : CategoryTheory.Category.{u3, u6} C] {F : CategoryTheory.Functor.{u1, u3, u4, u6} J _inst_1 C _inst_3} (e : CategoryTheory.Equivalence.{u2, u1, u5, u4} K _inst_2 J _inst_1), CategoryTheory.Equivalence.{u3, u3, max u4 u6 u3, max u5 u6 u3} (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 C _inst_3 F) (CategoryTheory.Limits.Cone.category.{u1, u3, u4, u6} J _inst_1 C _inst_3 F) (CategoryTheory.Limits.Cone.{u2, u3, u5, u6} K _inst_2 C _inst_3 (CategoryTheory.Functor.comp.{u2, u1, u3, u5, u4, u6} K _inst_2 J _inst_1 C _inst_3 (CategoryTheory.Equivalence.functor.{u2, u1, u5, u4} K _inst_2 J _inst_1 e) F)) (CategoryTheory.Limits.Cone.category.{u2, u3, u5, u6} K _inst_2 C _inst_3 (CategoryTheory.Functor.comp.{u2, u1, u3, u5, u4, u6} K _inst_2 J _inst_1 C _inst_3 (CategoryTheory.Equivalence.functor.{u2, u1, u5, u4} K _inst_2 J _inst_1 e) F))
-but is expected to have type
- forall {J : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u1, u4} J] {K : Type.{u5}} [_inst_2 : CategoryTheory.Category.{u2, u5} K] {C : Type.{u6}} [_inst_3 : CategoryTheory.Category.{u3, u6} C] {F : CategoryTheory.Functor.{u1, u3, u4, u6} J _inst_1 C _inst_3} (e : CategoryTheory.Equivalence.{u2, u1, u5, u4} K J _inst_2 _inst_1), CategoryTheory.Equivalence.{u3, u3, max (max u6 u4) u3, max (max u6 u5) u3} (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 C _inst_3 F) (CategoryTheory.Limits.Cone.{u2, u3, u5, u6} K _inst_2 C _inst_3 (CategoryTheory.Functor.comp.{u2, u1, u3, u5, u4, u6} K _inst_2 J _inst_1 C _inst_3 (CategoryTheory.Equivalence.functor.{u2, u1, u5, u4} K J _inst_2 _inst_1 e) F)) (CategoryTheory.Limits.Cone.category.{u1, u3, u4, u6} J _inst_1 C _inst_3 F) (CategoryTheory.Limits.Cone.category.{u2, u3, u5, u6} K _inst_2 C _inst_3 (CategoryTheory.Functor.comp.{u2, u1, u3, u5, u4, u6} K _inst_2 J _inst_1 C _inst_3 (CategoryTheory.Equivalence.functor.{u2, u1, u5, u4} K J _inst_2 _inst_1 e) F))
-Case conversion may be inaccurate. Consider using '#align category_theory.limits.cones.whiskering_equivalence CategoryTheory.Limits.Cones.whiskeringEquivalenceₓ'. -/
/-- Whiskering by an equivalence gives an equivalence between categories of cones.
-/
@[simps]
@@ -455,12 +404,6 @@ def whiskeringEquivalence (e : K ≌ J) : Cone F ≌ Cone (e.Functor ⋙ F)
(by tidy)
#align category_theory.limits.cones.whiskering_equivalence CategoryTheory.Limits.Cones.whiskeringEquivalence
-/- warning: category_theory.limits.cones.equivalence_of_reindexing -> CategoryTheory.Limits.Cones.equivalenceOfReindexing is a dubious translation:
-lean 3 declaration is
- forall {J : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u1, u4} J] {K : Type.{u5}} [_inst_2 : CategoryTheory.Category.{u2, u5} K] {C : Type.{u6}} [_inst_3 : CategoryTheory.Category.{u3, u6} C] {F : CategoryTheory.Functor.{u1, u3, u4, u6} J _inst_1 C _inst_3} {G : CategoryTheory.Functor.{u2, u3, u5, u6} K _inst_2 C _inst_3} (e : CategoryTheory.Equivalence.{u2, u1, u5, u4} K _inst_2 J _inst_1), (CategoryTheory.Iso.{max u5 u3, max u2 u3 u5 u6} (CategoryTheory.Functor.{u2, u3, u5, u6} K _inst_2 C _inst_3) (CategoryTheory.Functor.category.{u2, u3, u5, u6} K _inst_2 C _inst_3) (CategoryTheory.Functor.comp.{u2, u1, u3, u5, u4, u6} K _inst_2 J _inst_1 C _inst_3 (CategoryTheory.Equivalence.functor.{u2, u1, u5, u4} K _inst_2 J _inst_1 e) F) G) -> (CategoryTheory.Equivalence.{u3, u3, max u4 u6 u3, max u5 u6 u3} (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 C _inst_3 F) (CategoryTheory.Limits.Cone.category.{u1, u3, u4, u6} J _inst_1 C _inst_3 F) (CategoryTheory.Limits.Cone.{u2, u3, u5, u6} K _inst_2 C _inst_3 G) (CategoryTheory.Limits.Cone.category.{u2, u3, u5, u6} K _inst_2 C _inst_3 G))
-but is expected to have type
- forall {J : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u1, u4} J] {K : Type.{u5}} [_inst_2 : CategoryTheory.Category.{u2, u5} K] {C : Type.{u6}} [_inst_3 : CategoryTheory.Category.{u3, u6} C] {F : CategoryTheory.Functor.{u1, u3, u4, u6} J _inst_1 C _inst_3} {G : CategoryTheory.Functor.{u2, u3, u5, u6} K _inst_2 C _inst_3} (e : CategoryTheory.Equivalence.{u2, u1, u5, u4} K J _inst_2 _inst_1), (CategoryTheory.Iso.{max u5 u3, max (max (max u6 u5) u3) u2} (CategoryTheory.Functor.{u2, u3, u5, u6} K _inst_2 C _inst_3) (CategoryTheory.Functor.category.{u2, u3, u5, u6} K _inst_2 C _inst_3) (CategoryTheory.Functor.comp.{u2, u1, u3, u5, u4, u6} K _inst_2 J _inst_1 C _inst_3 (CategoryTheory.Equivalence.functor.{u2, u1, u5, u4} K J _inst_2 _inst_1 e) F) G) -> (CategoryTheory.Equivalence.{u3, u3, max (max u6 u4) u3, max (max u6 u5) u3} (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 C _inst_3 F) (CategoryTheory.Limits.Cone.{u2, u3, u5, u6} K _inst_2 C _inst_3 G) (CategoryTheory.Limits.Cone.category.{u1, u3, u4, u6} J _inst_1 C _inst_3 F) (CategoryTheory.Limits.Cone.category.{u2, u3, u5, u6} K _inst_2 C _inst_3 G))
-Case conversion may be inaccurate. Consider using '#align category_theory.limits.cones.equivalence_of_reindexing CategoryTheory.Limits.Cones.equivalenceOfReindexingₓ'. -/
/-- The categories of cones over `F` and `G` are equivalent if `F` and `G` are naturally isomorphic
(possibly after changing the indexing category by an equivalence).
-/
@@ -514,12 +457,6 @@ instance functorialityFaithful [Faithful G] : Faithful (Cones.functoriality F G)
#align category_theory.limits.cones.functoriality_faithful CategoryTheory.Limits.Cones.functorialityFaithful
-/
-/- warning: category_theory.limits.cones.functoriality_equivalence -> CategoryTheory.Limits.Cones.functorialityEquivalence is a dubious translation:
-lean 3 declaration is
- forall {J : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u1, u4} J] {C : Type.{u5}} [_inst_3 : CategoryTheory.Category.{u2, u5} C] {D : Type.{u6}} [_inst_4 : CategoryTheory.Category.{u3, u6} D] (F : CategoryTheory.Functor.{u1, u2, u4, u5} J _inst_1 C _inst_3) (e : CategoryTheory.Equivalence.{u2, u3, u5, u6} C _inst_3 D _inst_4), CategoryTheory.Equivalence.{u2, u3, max u4 u5 u2, max u4 u6 u3} (CategoryTheory.Limits.Cone.{u1, u2, u4, u5} J _inst_1 C _inst_3 F) (CategoryTheory.Limits.Cone.category.{u1, u2, u4, u5} J _inst_1 C _inst_3 F) (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F (CategoryTheory.Equivalence.functor.{u2, u3, u5, u6} C _inst_3 D _inst_4 e))) (CategoryTheory.Limits.Cone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F (CategoryTheory.Equivalence.functor.{u2, u3, u5, u6} C _inst_3 D _inst_4 e)))
-but is expected to have type
- forall {J : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u1, u4} J] {C : Type.{u5}} [_inst_3 : CategoryTheory.Category.{u2, u5} C] {D : Type.{u6}} [_inst_4 : CategoryTheory.Category.{u3, u6} D] (F : CategoryTheory.Functor.{u1, u2, u4, u5} J _inst_1 C _inst_3) (e : CategoryTheory.Equivalence.{u2, u3, u5, u6} C D _inst_3 _inst_4), CategoryTheory.Equivalence.{u2, u3, max (max u5 u4) u2, max (max u6 u4) u3} (CategoryTheory.Limits.Cone.{u1, u2, u4, u5} J _inst_1 C _inst_3 F) (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F (CategoryTheory.Equivalence.functor.{u2, u3, u5, u6} C D _inst_3 _inst_4 e))) (CategoryTheory.Limits.Cone.category.{u1, u2, u4, u5} J _inst_1 C _inst_3 F) (CategoryTheory.Limits.Cone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F (CategoryTheory.Equivalence.functor.{u2, u3, u5, u6} C D _inst_3 _inst_4 e)))
-Case conversion may be inaccurate. Consider using '#align category_theory.limits.cones.functoriality_equivalence CategoryTheory.Limits.Cones.functorialityEquivalenceₓ'. -/
/-- If `e : C ≌ D` is an equivalence of categories, then `functoriality F e.functor` induces an
equivalence between cones over `F` and cones over `F ⋙ e.functor`.
-/
@@ -584,12 +521,6 @@ instance Cocone.category : Category (Cocone F)
namespace Cocones
-/- warning: category_theory.limits.cocones.ext -> CategoryTheory.Limits.Cocones.ext is a dubious translation:
-lean 3 declaration is
- forall {J : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} J] {C : Type.{u4}} [_inst_3 : CategoryTheory.Category.{u2, u4} C] {F : CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3} {c : CategoryTheory.Limits.Cocone.{u1, u2, u3, u4} J _inst_1 C _inst_3 F} {c' : CategoryTheory.Limits.Cocone.{u1, u2, u3, u4} J _inst_1 C _inst_3 F} (φ : CategoryTheory.Iso.{u2, u4} C _inst_3 (CategoryTheory.Limits.Cocone.pt.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c) (CategoryTheory.Limits.Cocone.pt.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c')), (forall (j : J), Eq.{succ u2} (Quiver.Hom.{succ u2, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} J _inst_1 C _inst_3 F j) (CategoryTheory.Limits.Cocone.pt.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c')) (CategoryTheory.CategoryStruct.comp.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} J _inst_1 C _inst_3 F j) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} J _inst_1 C _inst_3 (CategoryTheory.Functor.obj.{u2, max u3 u2, u4, max u1 u2 u3 u4} C _inst_3 (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.const.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Limits.Cocone.pt.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c)) j) (CategoryTheory.Limits.Cocone.pt.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c') (CategoryTheory.NatTrans.app.{u1, u2, u3, u4} J _inst_1 C _inst_3 F (CategoryTheory.Functor.obj.{u2, max u3 u2, u4, max u1 u2 u3 u4} C _inst_3 (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.const.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Limits.Cocone.pt.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c)) (CategoryTheory.Limits.Cocone.ι.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c) j) (CategoryTheory.Iso.hom.{u2, u4} C _inst_3 (CategoryTheory.Limits.Cocone.pt.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c) (CategoryTheory.Limits.Cocone.pt.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c') φ)) (CategoryTheory.NatTrans.app.{u1, u2, u3, u4} J _inst_1 C _inst_3 F (CategoryTheory.Functor.obj.{u2, max u3 u2, u4, max u1 u2 u3 u4} C _inst_3 (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.const.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Limits.Cocone.pt.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c')) (CategoryTheory.Limits.Cocone.ι.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c') j)) -> (CategoryTheory.Iso.{u2, max u3 u4 u2} (CategoryTheory.Limits.Cocone.{u1, u2, u3, u4} J _inst_1 C _inst_3 F) (CategoryTheory.Limits.Cocone.category.{u1, u2, u3, u4} J _inst_1 C _inst_3 F) c c')
-but is expected to have type
- forall {J : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} J] {C : Type.{u4}} [_inst_3 : CategoryTheory.Category.{u2, u4} C] {F : CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3} {c : CategoryTheory.Limits.Cocone.{u1, u2, u3, u4} J _inst_1 C _inst_3 F} {c' : CategoryTheory.Limits.Cocone.{u1, u2, u3, u4} J _inst_1 C _inst_3 F} (φ : CategoryTheory.Iso.{u2, u4} C _inst_3 (CategoryTheory.Limits.Cocone.pt.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c) (CategoryTheory.Limits.Cocone.pt.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c')), (forall (j : J), Eq.{succ u2} (Quiver.Hom.{succ u2, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) (Prefunctor.obj.{succ u1, succ u2, u3, u4} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} J (CategoryTheory.Category.toCategoryStruct.{u1, u3} J _inst_1)) C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} J _inst_1 C _inst_3 F) j) (CategoryTheory.Limits.Cocone.pt.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c')) (CategoryTheory.CategoryStruct.comp.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3) (Prefunctor.obj.{succ u1, succ u2, u3, u4} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} J (CategoryTheory.Category.toCategoryStruct.{u1, u3} J _inst_1)) C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} J _inst_1 C _inst_3 F) j) (Prefunctor.obj.{succ u1, succ u2, u3, u4} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} J (CategoryTheory.Category.toCategoryStruct.{u1, u3} J _inst_1)) C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} J _inst_1 C _inst_3 (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u4, max (max (max u3 u1) u2) u4} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max (max (max u3 u1) u4) u2} (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max (max (max u3 u1) u4) u2} (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 C _inst_3))) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u4, max (max (max u3 u1) u4) u2} C _inst_3 (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.const.{u1, u2, u3, u4} J _inst_1 C _inst_3)) (CategoryTheory.Limits.Cocone.pt.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c))) j) (CategoryTheory.Limits.Cocone.pt.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c') (CategoryTheory.NatTrans.app.{u1, u2, u3, u4} J _inst_1 C _inst_3 F (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u4, max (max (max u3 u1) u2) u4} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max (max (max u3 u1) u4) u2} (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max (max (max u3 u1) u4) u2} (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 C _inst_3))) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u4, max (max (max u3 u1) u4) u2} C _inst_3 (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.const.{u1, u2, u3, u4} J _inst_1 C _inst_3)) (CategoryTheory.Limits.Cocone.pt.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c)) (CategoryTheory.Limits.Cocone.ι.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c) j) (CategoryTheory.Iso.hom.{u2, u4} C _inst_3 (CategoryTheory.Limits.Cocone.pt.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c) (CategoryTheory.Limits.Cocone.pt.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c') φ)) (CategoryTheory.NatTrans.app.{u1, u2, u3, u4} J _inst_1 C _inst_3 F (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u4, max (max (max u3 u1) u2) u4} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max (max (max u3 u1) u4) u2} (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max (max (max u3 u1) u4) u2} (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 C _inst_3))) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u4, max (max (max u3 u1) u4) u2} C _inst_3 (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.const.{u1, u2, u3, u4} J _inst_1 C _inst_3)) (CategoryTheory.Limits.Cocone.pt.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c')) (CategoryTheory.Limits.Cocone.ι.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c') j)) -> (CategoryTheory.Iso.{u2, max (max u3 u4) u2} (CategoryTheory.Limits.Cocone.{u1, u2, u3, u4} J _inst_1 C _inst_3 F) (CategoryTheory.Limits.Cocone.category.{u1, u2, u3, u4} J _inst_1 C _inst_3 F) c c')
-Case conversion may be inaccurate. Consider using '#align category_theory.limits.cocones.ext CategoryTheory.Limits.Cocones.extₓ'. -/
/-- To give an isomorphism between cocones, it suffices to give an
isomorphism between their vertices which commutes with the cocone
maps. -/
@@ -650,12 +581,6 @@ def precomposeId : precompose (𝟙 F) ≅ 𝟭 (Cocone F) :=
#align category_theory.limits.cocones.precompose_id CategoryTheory.Limits.Cocones.precomposeId
-/
-/- warning: category_theory.limits.cocones.precompose_equivalence -> CategoryTheory.Limits.Cocones.precomposeEquivalence is a dubious translation:
-lean 3 declaration is
- forall {J : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} J] {C : Type.{u4}} [_inst_3 : CategoryTheory.Category.{u2, u4} C] {F : CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3} {G : CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3}, (CategoryTheory.Iso.{max u3 u2, max u1 u2 u3 u4} (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 C _inst_3) G F) -> (CategoryTheory.Equivalence.{u2, u2, max u3 u4 u2, max u3 u4 u2} (CategoryTheory.Limits.Cocone.{u1, u2, u3, u4} J _inst_1 C _inst_3 F) (CategoryTheory.Limits.Cocone.category.{u1, u2, u3, u4} J _inst_1 C _inst_3 F) (CategoryTheory.Limits.Cocone.{u1, u2, u3, u4} J _inst_1 C _inst_3 G) (CategoryTheory.Limits.Cocone.category.{u1, u2, u3, u4} J _inst_1 C _inst_3 G))
-but is expected to have type
- forall {J : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} J] {C : Type.{u4}} [_inst_3 : CategoryTheory.Category.{u2, u4} C] {F : CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3} {G : CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3}, (CategoryTheory.Iso.{max u3 u2, max (max (max u3 u4) u1) u2} (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 C _inst_3) G F) -> (CategoryTheory.Equivalence.{u2, u2, max (max u4 u3) u2, max (max u4 u3) u2} (CategoryTheory.Limits.Cocone.{u1, u2, u3, u4} J _inst_1 C _inst_3 F) (CategoryTheory.Limits.Cocone.{u1, u2, u3, u4} J _inst_1 C _inst_3 G) (CategoryTheory.Limits.Cocone.category.{u1, u2, u3, u4} J _inst_1 C _inst_3 F) (CategoryTheory.Limits.Cocone.category.{u1, u2, u3, u4} J _inst_1 C _inst_3 G))
-Case conversion may be inaccurate. Consider using '#align category_theory.limits.cocones.precompose_equivalence CategoryTheory.Limits.Cocones.precomposeEquivalenceₓ'. -/
/-- If `F` and `G` are naturally isomorphic functors, then they have equivalent categories of
cocones.
-/
@@ -679,12 +604,6 @@ def whiskering (E : K ⥤ J) : Cocone F ⥤ Cocone (E ⋙ F)
#align category_theory.limits.cocones.whiskering CategoryTheory.Limits.Cocones.whiskering
-/
-/- warning: category_theory.limits.cocones.whiskering_equivalence -> CategoryTheory.Limits.Cocones.whiskeringEquivalence is a dubious translation:
-lean 3 declaration is
- forall {J : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u1, u4} J] {K : Type.{u5}} [_inst_2 : CategoryTheory.Category.{u2, u5} K] {C : Type.{u6}} [_inst_3 : CategoryTheory.Category.{u3, u6} C] {F : CategoryTheory.Functor.{u1, u3, u4, u6} J _inst_1 C _inst_3} (e : CategoryTheory.Equivalence.{u2, u1, u5, u4} K _inst_2 J _inst_1), CategoryTheory.Equivalence.{u3, u3, max u4 u6 u3, max u5 u6 u3} (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 C _inst_3 F) (CategoryTheory.Limits.Cocone.category.{u1, u3, u4, u6} J _inst_1 C _inst_3 F) (CategoryTheory.Limits.Cocone.{u2, u3, u5, u6} K _inst_2 C _inst_3 (CategoryTheory.Functor.comp.{u2, u1, u3, u5, u4, u6} K _inst_2 J _inst_1 C _inst_3 (CategoryTheory.Equivalence.functor.{u2, u1, u5, u4} K _inst_2 J _inst_1 e) F)) (CategoryTheory.Limits.Cocone.category.{u2, u3, u5, u6} K _inst_2 C _inst_3 (CategoryTheory.Functor.comp.{u2, u1, u3, u5, u4, u6} K _inst_2 J _inst_1 C _inst_3 (CategoryTheory.Equivalence.functor.{u2, u1, u5, u4} K _inst_2 J _inst_1 e) F))
-but is expected to have type
- forall {J : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u1, u4} J] {K : Type.{u5}} [_inst_2 : CategoryTheory.Category.{u2, u5} K] {C : Type.{u6}} [_inst_3 : CategoryTheory.Category.{u3, u6} C] {F : CategoryTheory.Functor.{u1, u3, u4, u6} J _inst_1 C _inst_3} (e : CategoryTheory.Equivalence.{u2, u1, u5, u4} K J _inst_2 _inst_1), CategoryTheory.Equivalence.{u3, u3, max (max u6 u4) u3, max (max u6 u5) u3} (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 C _inst_3 F) (CategoryTheory.Limits.Cocone.{u2, u3, u5, u6} K _inst_2 C _inst_3 (CategoryTheory.Functor.comp.{u2, u1, u3, u5, u4, u6} K _inst_2 J _inst_1 C _inst_3 (CategoryTheory.Equivalence.functor.{u2, u1, u5, u4} K J _inst_2 _inst_1 e) F)) (CategoryTheory.Limits.Cocone.category.{u1, u3, u4, u6} J _inst_1 C _inst_3 F) (CategoryTheory.Limits.Cocone.category.{u2, u3, u5, u6} K _inst_2 C _inst_3 (CategoryTheory.Functor.comp.{u2, u1, u3, u5, u4, u6} K _inst_2 J _inst_1 C _inst_3 (CategoryTheory.Equivalence.functor.{u2, u1, u5, u4} K J _inst_2 _inst_1 e) F))
-Case conversion may be inaccurate. Consider using '#align category_theory.limits.cocones.whiskering_equivalence CategoryTheory.Limits.Cocones.whiskeringEquivalenceₓ'. -/
/-- Whiskering by an equivalence gives an equivalence between categories of cones.
-/
@[simps]
@@ -708,12 +627,6 @@ def whiskeringEquivalence (e : K ≌ J) : Cocone F ≌ Cocone (e.Functor ⋙ F)
(by tidy)
#align category_theory.limits.cocones.whiskering_equivalence CategoryTheory.Limits.Cocones.whiskeringEquivalence
-/- warning: category_theory.limits.cocones.equivalence_of_reindexing -> CategoryTheory.Limits.Cocones.equivalenceOfReindexing is a dubious translation:
-lean 3 declaration is
- forall {J : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u1, u4} J] {K : Type.{u5}} [_inst_2 : CategoryTheory.Category.{u2, u5} K] {C : Type.{u6}} [_inst_3 : CategoryTheory.Category.{u3, u6} C] {F : CategoryTheory.Functor.{u1, u3, u4, u6} J _inst_1 C _inst_3} {G : CategoryTheory.Functor.{u2, u3, u5, u6} K _inst_2 C _inst_3} (e : CategoryTheory.Equivalence.{u2, u1, u5, u4} K _inst_2 J _inst_1), (CategoryTheory.Iso.{max u5 u3, max u2 u3 u5 u6} (CategoryTheory.Functor.{u2, u3, u5, u6} K _inst_2 C _inst_3) (CategoryTheory.Functor.category.{u2, u3, u5, u6} K _inst_2 C _inst_3) (CategoryTheory.Functor.comp.{u2, u1, u3, u5, u4, u6} K _inst_2 J _inst_1 C _inst_3 (CategoryTheory.Equivalence.functor.{u2, u1, u5, u4} K _inst_2 J _inst_1 e) F) G) -> (CategoryTheory.Equivalence.{u3, u3, max u4 u6 u3, max u5 u6 u3} (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 C _inst_3 F) (CategoryTheory.Limits.Cocone.category.{u1, u3, u4, u6} J _inst_1 C _inst_3 F) (CategoryTheory.Limits.Cocone.{u2, u3, u5, u6} K _inst_2 C _inst_3 G) (CategoryTheory.Limits.Cocone.category.{u2, u3, u5, u6} K _inst_2 C _inst_3 G))
-but is expected to have type
- forall {J : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u1, u4} J] {K : Type.{u5}} [_inst_2 : CategoryTheory.Category.{u2, u5} K] {C : Type.{u6}} [_inst_3 : CategoryTheory.Category.{u3, u6} C] {F : CategoryTheory.Functor.{u1, u3, u4, u6} J _inst_1 C _inst_3} {G : CategoryTheory.Functor.{u2, u3, u5, u6} K _inst_2 C _inst_3} (e : CategoryTheory.Equivalence.{u2, u1, u5, u4} K J _inst_2 _inst_1), (CategoryTheory.Iso.{max u5 u3, max (max (max u6 u5) u3) u2} (CategoryTheory.Functor.{u2, u3, u5, u6} K _inst_2 C _inst_3) (CategoryTheory.Functor.category.{u2, u3, u5, u6} K _inst_2 C _inst_3) (CategoryTheory.Functor.comp.{u2, u1, u3, u5, u4, u6} K _inst_2 J _inst_1 C _inst_3 (CategoryTheory.Equivalence.functor.{u2, u1, u5, u4} K J _inst_2 _inst_1 e) F) G) -> (CategoryTheory.Equivalence.{u3, u3, max (max u6 u4) u3, max (max u6 u5) u3} (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 C _inst_3 F) (CategoryTheory.Limits.Cocone.{u2, u3, u5, u6} K _inst_2 C _inst_3 G) (CategoryTheory.Limits.Cocone.category.{u1, u3, u4, u6} J _inst_1 C _inst_3 F) (CategoryTheory.Limits.Cocone.category.{u2, u3, u5, u6} K _inst_2 C _inst_3 G))
-Case conversion may be inaccurate. Consider using '#align category_theory.limits.cocones.equivalence_of_reindexing CategoryTheory.Limits.Cocones.equivalenceOfReindexingₓ'. -/
/--
The categories of cocones over `F` and `G` are equivalent if `F` and `G` are naturally isomorphic
(possibly after changing the indexing category by an equivalence).
@@ -768,12 +681,6 @@ instance functoriality_faithful [Faithful G] : Faithful (functoriality F G)
#align category_theory.limits.cocones.functoriality_faithful CategoryTheory.Limits.Cocones.functoriality_faithful
-/
-/- warning: category_theory.limits.cocones.functoriality_equivalence -> CategoryTheory.Limits.Cocones.functorialityEquivalence is a dubious translation:
-lean 3 declaration is
- forall {J : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u1, u4} J] {C : Type.{u5}} [_inst_3 : CategoryTheory.Category.{u2, u5} C] {D : Type.{u6}} [_inst_4 : CategoryTheory.Category.{u3, u6} D] (F : CategoryTheory.Functor.{u1, u2, u4, u5} J _inst_1 C _inst_3) (e : CategoryTheory.Equivalence.{u2, u3, u5, u6} C _inst_3 D _inst_4), CategoryTheory.Equivalence.{u2, u3, max u4 u5 u2, max u4 u6 u3} (CategoryTheory.Limits.Cocone.{u1, u2, u4, u5} J _inst_1 C _inst_3 F) (CategoryTheory.Limits.Cocone.category.{u1, u2, u4, u5} J _inst_1 C _inst_3 F) (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F (CategoryTheory.Equivalence.functor.{u2, u3, u5, u6} C _inst_3 D _inst_4 e))) (CategoryTheory.Limits.Cocone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F (CategoryTheory.Equivalence.functor.{u2, u3, u5, u6} C _inst_3 D _inst_4 e)))
-but is expected to have type
- forall {J : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u1, u4} J] {C : Type.{u5}} [_inst_3 : CategoryTheory.Category.{u2, u5} C] {D : Type.{u6}} [_inst_4 : CategoryTheory.Category.{u3, u6} D] (F : CategoryTheory.Functor.{u1, u2, u4, u5} J _inst_1 C _inst_3) (e : CategoryTheory.Equivalence.{u2, u3, u5, u6} C D _inst_3 _inst_4), CategoryTheory.Equivalence.{u2, u3, max (max u5 u4) u2, max (max u6 u4) u3} (CategoryTheory.Limits.Cocone.{u1, u2, u4, u5} J _inst_1 C _inst_3 F) (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F (CategoryTheory.Equivalence.functor.{u2, u3, u5, u6} C D _inst_3 _inst_4 e))) (CategoryTheory.Limits.Cocone.category.{u1, u2, u4, u5} J _inst_1 C _inst_3 F) (CategoryTheory.Limits.Cocone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F (CategoryTheory.Equivalence.functor.{u2, u3, u5, u6} C D _inst_3 _inst_4 e)))
-Case conversion may be inaccurate. Consider using '#align category_theory.limits.cocones.functoriality_equivalence CategoryTheory.Limits.Cocones.functorialityEquivalenceₓ'. -/
/-- If `e : C ≌ D` is an equivalence of categories, then `functoriality F e.functor` induces an
equivalence between cocones over `F` and cocones over `F ⋙ e.functor`.
-/
@@ -827,119 +734,59 @@ variable {F : J ⥤ C} {G : J ⥤ C} (H : C ⥤ D)
open CategoryTheory.Limits
-/- warning: category_theory.functor.map_cone -> CategoryTheory.Functor.mapCone is a dubious translation:
-lean 3 declaration is
- forall {J : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u1, u4} J] {C : Type.{u5}} [_inst_3 : CategoryTheory.Category.{u2, u5} C] {D : Type.{u6}} [_inst_4 : CategoryTheory.Category.{u3, u6} D] {F : CategoryTheory.Functor.{u1, u2, u4, u5} J _inst_1 C _inst_3} (H : CategoryTheory.Functor.{u2, u3, u5, u6} C _inst_3 D _inst_4), (CategoryTheory.Limits.Cone.{u1, u2, u4, u5} J _inst_1 C _inst_3 F) -> (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H))
-but is expected to have type
- forall {J : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u1, u4} J] {C : Type.{u5}} [_inst_3 : CategoryTheory.Category.{u2, u5} C] {D : Type.{u6}} [_inst_4 : CategoryTheory.Category.{u3, u6} D] (F : CategoryTheory.Functor.{u2, u3, u5, u6} C _inst_3 D _inst_4) {H : CategoryTheory.Functor.{u1, u2, u4, u5} J _inst_1 C _inst_3}, (CategoryTheory.Limits.Cone.{u1, u2, u4, u5} J _inst_1 C _inst_3 H) -> (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 H F))
-Case conversion may be inaccurate. Consider using '#align category_theory.functor.map_cone CategoryTheory.Functor.mapConeₓ'. -/
/-- The image of a cone in C under a functor G : C ⥤ D is a cone in D. -/
@[simps]
def mapCone (c : Cone F) : Cone (F ⋙ H) :=
(Cones.functoriality F H).obj c
#align category_theory.functor.map_cone CategoryTheory.Functor.mapCone
-/- warning: category_theory.functor.map_cocone -> CategoryTheory.Functor.mapCocone is a dubious translation:
-lean 3 declaration is
- forall {J : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u1, u4} J] {C : Type.{u5}} [_inst_3 : CategoryTheory.Category.{u2, u5} C] {D : Type.{u6}} [_inst_4 : CategoryTheory.Category.{u3, u6} D] {F : CategoryTheory.Functor.{u1, u2, u4, u5} J _inst_1 C _inst_3} (H : CategoryTheory.Functor.{u2, u3, u5, u6} C _inst_3 D _inst_4), (CategoryTheory.Limits.Cocone.{u1, u2, u4, u5} J _inst_1 C _inst_3 F) -> (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H))
-but is expected to have type
- forall {J : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u1, u4} J] {C : Type.{u5}} [_inst_3 : CategoryTheory.Category.{u2, u5} C] {D : Type.{u6}} [_inst_4 : CategoryTheory.Category.{u3, u6} D] (F : CategoryTheory.Functor.{u2, u3, u5, u6} C _inst_3 D _inst_4) {H : CategoryTheory.Functor.{u1, u2, u4, u5} J _inst_1 C _inst_3}, (CategoryTheory.Limits.Cocone.{u1, u2, u4, u5} J _inst_1 C _inst_3 H) -> (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 H F))
-Case conversion may be inaccurate. Consider using '#align category_theory.functor.map_cocone CategoryTheory.Functor.mapCoconeₓ'. -/
/-- The image of a cocone in C under a functor G : C ⥤ D is a cocone in D. -/
@[simps]
def mapCocone (c : Cocone F) : Cocone (F ⋙ H) :=
(Cocones.functoriality F H).obj c
#align category_theory.functor.map_cocone CategoryTheory.Functor.mapCocone
-/- warning: category_theory.functor.map_cone_morphism -> CategoryTheory.Functor.mapConeMorphism is a dubious translation:
-lean 3 declaration is
- forall {J : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u1, u4} J] {C : Type.{u5}} [_inst_3 : CategoryTheory.Category.{u2, u5} C] {D : Type.{u6}} [_inst_4 : CategoryTheory.Category.{u3, u6} D] {F : CategoryTheory.Functor.{u1, u2, u4, u5} J _inst_1 C _inst_3} (H : CategoryTheory.Functor.{u2, u3, u5, u6} C _inst_3 D _inst_4) {c : CategoryTheory.Limits.Cone.{u1, u2, u4, u5} J _inst_1 C _inst_3 F} {c' : CategoryTheory.Limits.Cone.{u1, u2, u4, u5} J _inst_1 C _inst_3 F}, (Quiver.Hom.{succ u2, max u4 u5 u2} (CategoryTheory.Limits.Cone.{u1, u2, u4, u5} J _inst_1 C _inst_3 F) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u4 u5 u2} (CategoryTheory.Limits.Cone.{u1, u2, u4, u5} J _inst_1 C _inst_3 F) (CategoryTheory.Category.toCategoryStruct.{u2, max u4 u5 u2} (CategoryTheory.Limits.Cone.{u1, u2, u4, u5} J _inst_1 C _inst_3 F) (CategoryTheory.Limits.Cone.category.{u1, u2, u4, u5} J _inst_1 C _inst_3 F))) c c') -> (Quiver.Hom.{succ u3, max u4 u6 u3} (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) (CategoryTheory.CategoryStruct.toQuiver.{u3, max u4 u6 u3} (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) (CategoryTheory.Category.toCategoryStruct.{u3, max u4 u6 u3} (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) (CategoryTheory.Limits.Cone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)))) (CategoryTheory.Functor.mapCone.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H c) (CategoryTheory.Functor.mapCone.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H c'))
-but is expected to have type
- forall {J : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u1, u4} J] {C : Type.{u5}} [_inst_3 : CategoryTheory.Category.{u2, u5} C] {D : Type.{u6}} [_inst_4 : CategoryTheory.Category.{u3, u6} D] (F : CategoryTheory.Functor.{u2, u3, u5, u6} C _inst_3 D _inst_4) {H : CategoryTheory.Functor.{u1, u2, u4, u5} J _inst_1 C _inst_3} {c : CategoryTheory.Limits.Cone.{u1, u2, u4, u5} J _inst_1 C _inst_3 H} {c' : CategoryTheory.Limits.Cone.{u1, u2, u4, u5} J _inst_1 C _inst_3 H}, (Quiver.Hom.{succ u2, max (max u4 u5) u2} (CategoryTheory.Limits.Cone.{u1, u2, u4, u5} J _inst_1 C _inst_3 H) (CategoryTheory.CategoryStruct.toQuiver.{u2, max (max u4 u5) u2} (CategoryTheory.Limits.Cone.{u1, u2, u4, u5} J _inst_1 C _inst_3 H) (CategoryTheory.Category.toCategoryStruct.{u2, max (max u4 u5) u2} (CategoryTheory.Limits.Cone.{u1, u2, u4, u5} J _inst_1 C _inst_3 H) (CategoryTheory.Limits.Cone.category.{u1, u2, u4, u5} J _inst_1 C _inst_3 H))) c c') -> (Quiver.Hom.{succ u3, max (max u6 u3) u4} (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 H F)) (CategoryTheory.CategoryStruct.toQuiver.{u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 H F)) (CategoryTheory.Category.toCategoryStruct.{u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 H F)) (CategoryTheory.Limits.Cone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 H F)))) (CategoryTheory.Functor.mapCone.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H c) (CategoryTheory.Functor.mapCone.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H c'))
-Case conversion may be inaccurate. Consider using '#align category_theory.functor.map_cone_morphism CategoryTheory.Functor.mapConeMorphismₓ'. -/
/-- Given a cone morphism `c ⟶ c'`, construct a cone morphism on the mapped cones functorially. -/
def mapConeMorphism {c c' : Cone F} (f : c ⟶ c') : H.mapCone c ⟶ H.mapCone c' :=
(Cones.functoriality F H).map f
#align category_theory.functor.map_cone_morphism CategoryTheory.Functor.mapConeMorphism
-/- warning: category_theory.functor.map_cocone_morphism -> CategoryTheory.Functor.mapCoconeMorphism is a dubious translation:
-lean 3 declaration is
- forall {J : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u1, u4} J] {C : Type.{u5}} [_inst_3 : CategoryTheory.Category.{u2, u5} C] {D : Type.{u6}} [_inst_4 : CategoryTheory.Category.{u3, u6} D] {F : CategoryTheory.Functor.{u1, u2, u4, u5} J _inst_1 C _inst_3} (H : CategoryTheory.Functor.{u2, u3, u5, u6} C _inst_3 D _inst_4) {c : CategoryTheory.Limits.Cocone.{u1, u2, u4, u5} J _inst_1 C _inst_3 F} {c' : CategoryTheory.Limits.Cocone.{u1, u2, u4, u5} J _inst_1 C _inst_3 F}, (Quiver.Hom.{succ u2, max u4 u5 u2} (CategoryTheory.Limits.Cocone.{u1, u2, u4, u5} J _inst_1 C _inst_3 F) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u4 u5 u2} (CategoryTheory.Limits.Cocone.{u1, u2, u4, u5} J _inst_1 C _inst_3 F) (CategoryTheory.Category.toCategoryStruct.{u2, max u4 u5 u2} (CategoryTheory.Limits.Cocone.{u1, u2, u4, u5} J _inst_1 C _inst_3 F) (CategoryTheory.Limits.Cocone.category.{u1, u2, u4, u5} J _inst_1 C _inst_3 F))) c c') -> (Quiver.Hom.{succ u3, max u4 u6 u3} (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) (CategoryTheory.CategoryStruct.toQuiver.{u3, max u4 u6 u3} (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) (CategoryTheory.Category.toCategoryStruct.{u3, max u4 u6 u3} (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) (CategoryTheory.Limits.Cocone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)))) (CategoryTheory.Functor.mapCocone.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H c) (CategoryTheory.Functor.mapCocone.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H c'))
-but is expected to have type
- forall {J : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u1, u4} J] {C : Type.{u5}} [_inst_3 : CategoryTheory.Category.{u2, u5} C] {D : Type.{u6}} [_inst_4 : CategoryTheory.Category.{u3, u6} D] (F : CategoryTheory.Functor.{u2, u3, u5, u6} C _inst_3 D _inst_4) {H : CategoryTheory.Functor.{u1, u2, u4, u5} J _inst_1 C _inst_3} {c : CategoryTheory.Limits.Cocone.{u1, u2, u4, u5} J _inst_1 C _inst_3 H} {c' : CategoryTheory.Limits.Cocone.{u1, u2, u4, u5} J _inst_1 C _inst_3 H}, (Quiver.Hom.{succ u2, max (max u4 u5) u2} (CategoryTheory.Limits.Cocone.{u1, u2, u4, u5} J _inst_1 C _inst_3 H) (CategoryTheory.CategoryStruct.toQuiver.{u2, max (max u4 u5) u2} (CategoryTheory.Limits.Cocone.{u1, u2, u4, u5} J _inst_1 C _inst_3 H) (CategoryTheory.Category.toCategoryStruct.{u2, max (max u4 u5) u2} (CategoryTheory.Limits.Cocone.{u1, u2, u4, u5} J _inst_1 C _inst_3 H) (CategoryTheory.Limits.Cocone.category.{u1, u2, u4, u5} J _inst_1 C _inst_3 H))) c c') -> (Quiver.Hom.{succ u3, max (max u6 u3) u4} (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 H F)) (CategoryTheory.CategoryStruct.toQuiver.{u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 H F)) (CategoryTheory.Category.toCategoryStruct.{u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 H F)) (CategoryTheory.Limits.Cocone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 H F)))) (CategoryTheory.Functor.mapCocone.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H c) (CategoryTheory.Functor.mapCocone.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H c'))
-Case conversion may be inaccurate. Consider using '#align category_theory.functor.map_cocone_morphism CategoryTheory.Functor.mapCoconeMorphismₓ'. -/
/-- Given a cocone morphism `c ⟶ c'`, construct a cocone morphism on the mapped cocones
functorially. -/
def mapCoconeMorphism {c c' : Cocone F} (f : c ⟶ c') : H.mapCocone c ⟶ H.mapCocone c' :=
(Cocones.functoriality F H).map f
#align category_theory.functor.map_cocone_morphism CategoryTheory.Functor.mapCoconeMorphism
-/- warning: category_theory.functor.map_cone_inv -> CategoryTheory.Functor.mapConeInv is a dubious translation:
-lean 3 declaration is
- forall {J : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u1, u4} J] {C : Type.{u5}} [_inst_3 : CategoryTheory.Category.{u2, u5} C] {D : Type.{u6}} [_inst_4 : CategoryTheory.Category.{u3, u6} D] {F : CategoryTheory.Functor.{u1, u2, u4, u5} J _inst_1 C _inst_3} (H : CategoryTheory.Functor.{u2, u3, u5, u6} C _inst_3 D _inst_4) [_inst_5 : CategoryTheory.IsEquivalence.{u2, u3, u5, u6} C _inst_3 D _inst_4 H], (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) -> (CategoryTheory.Limits.Cone.{u1, u2, u4, u5} J _inst_1 C _inst_3 F)
-but is expected to have type
- forall {J : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u1, u4} J] {C : Type.{u5}} [_inst_3 : CategoryTheory.Category.{u2, u5} C] {D : Type.{u6}} [_inst_4 : CategoryTheory.Category.{u3, u6} D] (F : CategoryTheory.Functor.{u2, u3, u5, u6} C _inst_3 D _inst_4) {H : CategoryTheory.Functor.{u1, u2, u4, u5} J _inst_1 C _inst_3} [_inst_5 : CategoryTheory.IsEquivalence.{u2, u3, u5, u6} C _inst_3 D _inst_4 F], (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 H F)) -> (CategoryTheory.Limits.Cone.{u1, u2, u4, u5} J _inst_1 C _inst_3 H)
-Case conversion may be inaccurate. Consider using '#align category_theory.functor.map_cone_inv CategoryTheory.Functor.mapConeInvₓ'. -/
/-- If `H` is an equivalence, we invert `H.map_cone` and get a cone for `F` from a cone
for `F ⋙ H`.-/
def mapConeInv [IsEquivalence H] (c : Cone (F ⋙ H)) : Cone F :=
(Limits.Cones.functorialityEquivalence F (asEquivalence H)).inverse.obj c
#align category_theory.functor.map_cone_inv CategoryTheory.Functor.mapConeInv
-/- warning: category_theory.functor.map_cone_map_cone_inv -> CategoryTheory.Functor.mapConeMapConeInv is a dubious translation:
-lean 3 declaration is
- forall {J : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u1, u4} J] {C : Type.{u5}} [_inst_3 : CategoryTheory.Category.{u2, u5} C] {D : Type.{u6}} [_inst_4 : CategoryTheory.Category.{u3, u6} D] {F : CategoryTheory.Functor.{u1, u3, u4, u6} J _inst_1 D _inst_4} (H : CategoryTheory.Functor.{u3, u2, u6, u5} D _inst_4 C _inst_3) [_inst_5 : CategoryTheory.IsEquivalence.{u3, u2, u6, u5} D _inst_4 C _inst_3 H] (c : CategoryTheory.Limits.Cone.{u1, u2, u4, u5} J _inst_1 C _inst_3 (CategoryTheory.Functor.comp.{u1, u3, u2, u4, u6, u5} J _inst_1 D _inst_4 C _inst_3 F H)), CategoryTheory.Iso.{u2, max u4 u5 u2} (CategoryTheory.Limits.Cone.{u1, u2, u4, u5} J _inst_1 C _inst_3 (CategoryTheory.Functor.comp.{u1, u3, u2, u4, u6, u5} J _inst_1 D _inst_4 C _inst_3 F H)) (CategoryTheory.Limits.Cone.category.{u1, u2, u4, u5} J _inst_1 C _inst_3 (CategoryTheory.Functor.comp.{u1, u3, u2, u4, u6, u5} J _inst_1 D _inst_4 C _inst_3 F (CategoryTheory.Equivalence.functor.{u3, u2, u6, u5} D _inst_4 C _inst_3 (CategoryTheory.Functor.asEquivalence.{u3, u2, u6, u5} D _inst_4 C _inst_3 H _inst_5)))) (CategoryTheory.Functor.mapCone.{u1, u3, u2, u4, u6, u5} J _inst_1 D _inst_4 C _inst_3 F H (CategoryTheory.Functor.mapConeInv.{u1, u3, u2, u4, u6, u5} J _inst_1 D _inst_4 C _inst_3 F H _inst_5 c)) c
-but is expected to have type
- forall {J : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u1, u4} J] {C : Type.{u5}} [_inst_3 : CategoryTheory.Category.{u2, u5} C] {D : Type.{u6}} [_inst_4 : CategoryTheory.Category.{u3, u6} D] {F : CategoryTheory.Functor.{u1, u3, u4, u6} J _inst_1 D _inst_4} (H : CategoryTheory.Functor.{u3, u2, u6, u5} D _inst_4 C _inst_3) [_inst_5 : CategoryTheory.IsEquivalence.{u3, u2, u6, u5} D _inst_4 C _inst_3 H] (c : CategoryTheory.Limits.Cone.{u1, u2, u4, u5} J _inst_1 C _inst_3 (CategoryTheory.Functor.comp.{u1, u3, u2, u4, u6, u5} J _inst_1 D _inst_4 C _inst_3 F H)), CategoryTheory.Iso.{u2, max (max u5 u2) u4} (CategoryTheory.Limits.Cone.{u1, u2, u4, u5} J _inst_1 C _inst_3 (CategoryTheory.Functor.comp.{u1, u3, u2, u4, u6, u5} J _inst_1 D _inst_4 C _inst_3 F H)) (CategoryTheory.Limits.Cone.category.{u1, u2, u4, u5} J _inst_1 C _inst_3 (CategoryTheory.Functor.comp.{u1, u3, u2, u4, u6, u5} J _inst_1 D _inst_4 C _inst_3 F H)) (CategoryTheory.Functor.mapCone.{u1, u3, u2, u4, u6, u5} J _inst_1 D _inst_4 C _inst_3 H F (CategoryTheory.Functor.mapConeInv.{u1, u3, u2, u4, u6, u5} J _inst_1 D _inst_4 C _inst_3 H F _inst_5 c)) c
-Case conversion may be inaccurate. Consider using '#align category_theory.functor.map_cone_map_cone_inv CategoryTheory.Functor.mapConeMapConeInvₓ'. -/
/-- `map_cone` is the left inverse to `map_cone_inv`. -/
def mapConeMapConeInv {F : J ⥤ D} (H : D ⥤ C) [IsEquivalence H] (c : Cone (F ⋙ H)) :
mapCone H (mapConeInv H c) ≅ c :=
(Limits.Cones.functorialityEquivalence F (asEquivalence H)).counitIso.app c
#align category_theory.functor.map_cone_map_cone_inv CategoryTheory.Functor.mapConeMapConeInv
-/- warning: category_theory.functor.map_cone_inv_map_cone -> CategoryTheory.Functor.mapConeInvMapCone is a dubious translation:
-lean 3 declaration is
- forall {J : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u1, u4} J] {C : Type.{u5}} [_inst_3 : CategoryTheory.Category.{u2, u5} C] {D : Type.{u6}} [_inst_4 : CategoryTheory.Category.{u3, u6} D] {F : CategoryTheory.Functor.{u1, u3, u4, u6} J _inst_1 D _inst_4} (H : CategoryTheory.Functor.{u3, u2, u6, u5} D _inst_4 C _inst_3) [_inst_5 : CategoryTheory.IsEquivalence.{u3, u2, u6, u5} D _inst_4 C _inst_3 H] (c : CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 F), CategoryTheory.Iso.{u3, max u4 u6 u3} (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 F) (CategoryTheory.Limits.Cone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 F) (CategoryTheory.Functor.mapConeInv.{u1, u3, u2, u4, u6, u5} J _inst_1 D _inst_4 C _inst_3 F H _inst_5 (CategoryTheory.Functor.mapCone.{u1, u3, u2, u4, u6, u5} J _inst_1 D _inst_4 C _inst_3 F H c)) c
-but is expected to have type
- forall {J : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u1, u4} J] {C : Type.{u5}} [_inst_3 : CategoryTheory.Category.{u2, u5} C] {D : Type.{u6}} [_inst_4 : CategoryTheory.Category.{u3, u6} D] {F : CategoryTheory.Functor.{u1, u3, u4, u6} J _inst_1 D _inst_4} (H : CategoryTheory.Functor.{u3, u2, u6, u5} D _inst_4 C _inst_3) [_inst_5 : CategoryTheory.IsEquivalence.{u3, u2, u6, u5} D _inst_4 C _inst_3 H] (c : CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 F), CategoryTheory.Iso.{u3, max (max u6 u3) u4} (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 F) (CategoryTheory.Limits.Cone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 F) (CategoryTheory.Functor.mapConeInv.{u1, u3, u2, u4, u6, u5} J _inst_1 D _inst_4 C _inst_3 H F _inst_5 (CategoryTheory.Functor.mapCone.{u1, u3, u2, u4, u6, u5} J _inst_1 D _inst_4 C _inst_3 H F c)) c
-Case conversion may be inaccurate. Consider using '#align category_theory.functor.map_cone_inv_map_cone CategoryTheory.Functor.mapConeInvMapConeₓ'. -/
/-- `map_cone` is the right inverse to `map_cone_inv`. -/
def mapConeInvMapCone {F : J ⥤ D} (H : D ⥤ C) [IsEquivalence H] (c : Cone F) :
mapConeInv H (mapCone H c) ≅ c :=
(Limits.Cones.functorialityEquivalence F (asEquivalence H)).unitIso.symm.app c
#align category_theory.functor.map_cone_inv_map_cone CategoryTheory.Functor.mapConeInvMapCone
-/- warning: category_theory.functor.map_cocone_inv -> CategoryTheory.Functor.mapCoconeInv is a dubious translation:
-lean 3 declaration is
- forall {J : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u1, u4} J] {C : Type.{u5}} [_inst_3 : CategoryTheory.Category.{u2, u5} C] {D : Type.{u6}} [_inst_4 : CategoryTheory.Category.{u3, u6} D] {F : CategoryTheory.Functor.{u1, u2, u4, u5} J _inst_1 C _inst_3} (H : CategoryTheory.Functor.{u2, u3, u5, u6} C _inst_3 D _inst_4) [_inst_5 : CategoryTheory.IsEquivalence.{u2, u3, u5, u6} C _inst_3 D _inst_4 H], (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) -> (CategoryTheory.Limits.Cocone.{u1, u2, u4, u5} J _inst_1 C _inst_3 F)
-but is expected to have type
- forall {J : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u1, u4} J] {C : Type.{u5}} [_inst_3 : CategoryTheory.Category.{u2, u5} C] {D : Type.{u6}} [_inst_4 : CategoryTheory.Category.{u3, u6} D] (F : CategoryTheory.Functor.{u2, u3, u5, u6} C _inst_3 D _inst_4) {H : CategoryTheory.Functor.{u1, u2, u4, u5} J _inst_1 C _inst_3} [_inst_5 : CategoryTheory.IsEquivalence.{u2, u3, u5, u6} C _inst_3 D _inst_4 F], (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 H F)) -> (CategoryTheory.Limits.Cocone.{u1, u2, u4, u5} J _inst_1 C _inst_3 H)
-Case conversion may be inaccurate. Consider using '#align category_theory.functor.map_cocone_inv CategoryTheory.Functor.mapCoconeInvₓ'. -/
/-- If `H` is an equivalence, we invert `H.map_cone` and get a cone for `F` from a cone
for `F ⋙ H`.-/
def mapCoconeInv [IsEquivalence H] (c : Cocone (F ⋙ H)) : Cocone F :=
(Limits.Cocones.functorialityEquivalence F (asEquivalence H)).inverse.obj c
#align category_theory.functor.map_cocone_inv CategoryTheory.Functor.mapCoconeInv
-/- warning: category_theory.functor.map_cocone_map_cocone_inv -> CategoryTheory.Functor.mapCoconeMapCoconeInv is a dubious translation:
-lean 3 declaration is
- forall {J : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u1, u4} J] {C : Type.{u5}} [_inst_3 : CategoryTheory.Category.{u2, u5} C] {D : Type.{u6}} [_inst_4 : CategoryTheory.Category.{u3, u6} D] {F : CategoryTheory.Functor.{u1, u3, u4, u6} J _inst_1 D _inst_4} (H : CategoryTheory.Functor.{u3, u2, u6, u5} D _inst_4 C _inst_3) [_inst_5 : CategoryTheory.IsEquivalence.{u3, u2, u6, u5} D _inst_4 C _inst_3 H] (c : CategoryTheory.Limits.Cocone.{u1, u2, u4, u5} J _inst_1 C _inst_3 (CategoryTheory.Functor.comp.{u1, u3, u2, u4, u6, u5} J _inst_1 D _inst_4 C _inst_3 F H)), CategoryTheory.Iso.{u2, max u4 u5 u2} (CategoryTheory.Limits.Cocone.{u1, u2, u4, u5} J _inst_1 C _inst_3 (CategoryTheory.Functor.comp.{u1, u3, u2, u4, u6, u5} J _inst_1 D _inst_4 C _inst_3 F H)) (CategoryTheory.Limits.Cocone.category.{u1, u2, u4, u5} J _inst_1 C _inst_3 (CategoryTheory.Functor.comp.{u1, u3, u2, u4, u6, u5} J _inst_1 D _inst_4 C _inst_3 F (CategoryTheory.Equivalence.functor.{u3, u2, u6, u5} D _inst_4 C _inst_3 (CategoryTheory.Functor.asEquivalence.{u3, u2, u6, u5} D _inst_4 C _inst_3 H _inst_5)))) (CategoryTheory.Functor.mapCocone.{u1, u3, u2, u4, u6, u5} J _inst_1 D _inst_4 C _inst_3 F H (CategoryTheory.Functor.mapCoconeInv.{u1, u3, u2, u4, u6, u5} J _inst_1 D _inst_4 C _inst_3 F H _inst_5 c)) c
-but is expected to have type
- forall {J : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u1, u4} J] {C : Type.{u5}} [_inst_3 : CategoryTheory.Category.{u2, u5} C] {D : Type.{u6}} [_inst_4 : CategoryTheory.Category.{u3, u6} D] {F : CategoryTheory.Functor.{u1, u3, u4, u6} J _inst_1 D _inst_4} (H : CategoryTheory.Functor.{u3, u2, u6, u5} D _inst_4 C _inst_3) [_inst_5 : CategoryTheory.IsEquivalence.{u3, u2, u6, u5} D _inst_4 C _inst_3 H] (c : CategoryTheory.Limits.Cocone.{u1, u2, u4, u5} J _inst_1 C _inst_3 (CategoryTheory.Functor.comp.{u1, u3, u2, u4, u6, u5} J _inst_1 D _inst_4 C _inst_3 F H)), CategoryTheory.Iso.{u2, max (max u5 u2) u4} (CategoryTheory.Limits.Cocone.{u1, u2, u4, u5} J _inst_1 C _inst_3 (CategoryTheory.Functor.comp.{u1, u3, u2, u4, u6, u5} J _inst_1 D _inst_4 C _inst_3 F H)) (CategoryTheory.Limits.Cocone.category.{u1, u2, u4, u5} J _inst_1 C _inst_3 (CategoryTheory.Functor.comp.{u1, u3, u2, u4, u6, u5} J _inst_1 D _inst_4 C _inst_3 F H)) (CategoryTheory.Functor.mapCocone.{u1, u3, u2, u4, u6, u5} J _inst_1 D _inst_4 C _inst_3 H F (CategoryTheory.Functor.mapCoconeInv.{u1, u3, u2, u4, u6, u5} J _inst_1 D _inst_4 C _inst_3 H F _inst_5 c)) c
-Case conversion may be inaccurate. Consider using '#align category_theory.functor.map_cocone_map_cocone_inv CategoryTheory.Functor.mapCoconeMapCoconeInvₓ'. -/
/-- `map_cocone` is the left inverse to `map_cocone_inv`. -/
def mapCoconeMapCoconeInv {F : J ⥤ D} (H : D ⥤ C) [IsEquivalence H] (c : Cocone (F ⋙ H)) :
mapCocone H (mapCoconeInv H c) ≅ c :=
(Limits.Cocones.functorialityEquivalence F (asEquivalence H)).counitIso.app c
#align category_theory.functor.map_cocone_map_cocone_inv CategoryTheory.Functor.mapCoconeMapCoconeInv
-/- warning: category_theory.functor.map_cocone_inv_map_cocone -> CategoryTheory.Functor.mapCoconeInvMapCocone is a dubious translation:
-lean 3 declaration is
- forall {J : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u1, u4} J] {C : Type.{u5}} [_inst_3 : CategoryTheory.Category.{u2, u5} C] {D : Type.{u6}} [_inst_4 : CategoryTheory.Category.{u3, u6} D] {F : CategoryTheory.Functor.{u1, u3, u4, u6} J _inst_1 D _inst_4} (H : CategoryTheory.Functor.{u3, u2, u6, u5} D _inst_4 C _inst_3) [_inst_5 : CategoryTheory.IsEquivalence.{u3, u2, u6, u5} D _inst_4 C _inst_3 H] (c : CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 F), CategoryTheory.Iso.{u3, max u4 u6 u3} (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 F) (CategoryTheory.Limits.Cocone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 F) (CategoryTheory.Functor.mapCoconeInv.{u1, u3, u2, u4, u6, u5} J _inst_1 D _inst_4 C _inst_3 F H _inst_5 (CategoryTheory.Functor.mapCocone.{u1, u3, u2, u4, u6, u5} J _inst_1 D _inst_4 C _inst_3 F H c)) c
-but is expected to have type
- forall {J : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u1, u4} J] {C : Type.{u5}} [_inst_3 : CategoryTheory.Category.{u2, u5} C] {D : Type.{u6}} [_inst_4 : CategoryTheory.Category.{u3, u6} D] {F : CategoryTheory.Functor.{u1, u3, u4, u6} J _inst_1 D _inst_4} (H : CategoryTheory.Functor.{u3, u2, u6, u5} D _inst_4 C _inst_3) [_inst_5 : CategoryTheory.IsEquivalence.{u3, u2, u6, u5} D _inst_4 C _inst_3 H] (c : CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 F), CategoryTheory.Iso.{u3, max (max u6 u3) u4} (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 F) (CategoryTheory.Limits.Cocone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 F) (CategoryTheory.Functor.mapCoconeInv.{u1, u3, u2, u4, u6, u5} J _inst_1 D _inst_4 C _inst_3 H F _inst_5 (CategoryTheory.Functor.mapCocone.{u1, u3, u2, u4, u6, u5} J _inst_1 D _inst_4 C _inst_3 H F c)) c
-Case conversion may be inaccurate. Consider using '#align category_theory.functor.map_cocone_inv_map_cocone CategoryTheory.Functor.mapCoconeInvMapCoconeₓ'. -/
/-- `map_cocone` is the right inverse to `map_cocone_inv`. -/
def mapCoconeInvMapCocone {F : J ⥤ D} (H : D ⥤ C) [IsEquivalence H] (c : Cocone F) :
mapCoconeInv H (mapCocone H c) ≅ c :=
@@ -955,12 +802,6 @@ def functorialityCompPostcompose {H H' : C ⥤ D} (α : H ≅ H') :
#align category_theory.functor.functoriality_comp_postcompose CategoryTheory.Functor.functorialityCompPostcompose
-/
-/- warning: category_theory.functor.postcompose_whisker_left_map_cone -> CategoryTheory.Functor.postcomposeWhiskerLeftMapCone is a dubious translation:
-lean 3 declaration is
- forall {J : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u1, u4} J] {C : Type.{u5}} [_inst_3 : CategoryTheory.Category.{u2, u5} C] {D : Type.{u6}} [_inst_4 : CategoryTheory.Category.{u3, u6} D] {F : CategoryTheory.Functor.{u1, u2, u4, u5} J _inst_1 C _inst_3} {H : CategoryTheory.Functor.{u2, u3, u5, u6} C _inst_3 D _inst_4} {H' : CategoryTheory.Functor.{u2, u3, u5, u6} C _inst_3 D _inst_4} (α : CategoryTheory.Iso.{max u5 u3, max u2 u3 u5 u6} (CategoryTheory.Functor.{u2, u3, u5, u6} C _inst_3 D _inst_4) (CategoryTheory.Functor.category.{u2, u3, u5, u6} C _inst_3 D _inst_4) H H') (c : CategoryTheory.Limits.Cone.{u1, u2, u4, u5} J _inst_1 C _inst_3 F), CategoryTheory.Iso.{u3, max u4 u6 u3} (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H')) (CategoryTheory.Limits.Cone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H')) (CategoryTheory.Functor.obj.{u3, u3, max u4 u6 u3, max u4 u6 u3} (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) (CategoryTheory.Limits.Cone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H')) (CategoryTheory.Limits.Cone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H')) (CategoryTheory.Limits.Cones.postcompose.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H) (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H') (CategoryTheory.whiskerLeft.{u4, u1, u5, u2, u6, u3} J _inst_1 C _inst_3 D _inst_4 F H H' (CategoryTheory.Iso.hom.{max u5 u3, max u2 u3 u5 u6} (CategoryTheory.Functor.{u2, u3, u5, u6} C _inst_3 D _inst_4) (CategoryTheory.Functor.category.{u2, u3, u5, u6} C _inst_3 D _inst_4) H H' α))) (CategoryTheory.Functor.mapCone.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H c)) (CategoryTheory.Functor.mapCone.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H' c)
-but is expected to have type
- forall {J : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u1, u4} J] {C : Type.{u5}} [_inst_3 : CategoryTheory.Category.{u2, u5} C] {D : Type.{u6}} [_inst_4 : CategoryTheory.Category.{u3, u6} D] {F : CategoryTheory.Functor.{u1, u2, u4, u5} J _inst_1 C _inst_3} {H : CategoryTheory.Functor.{u2, u3, u5, u6} C _inst_3 D _inst_4} {H' : CategoryTheory.Functor.{u2, u3, u5, u6} C _inst_3 D _inst_4} (α : CategoryTheory.Iso.{max u5 u3, max (max (max u5 u6) u2) u3} (CategoryTheory.Functor.{u2, u3, u5, u6} C _inst_3 D _inst_4) (CategoryTheory.Functor.category.{u2, u3, u5, u6} C _inst_3 D _inst_4) H H') (c : CategoryTheory.Limits.Cone.{u1, u2, u4, u5} J _inst_1 C _inst_3 F), CategoryTheory.Iso.{u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H')) (CategoryTheory.Limits.Cone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H')) (Prefunctor.obj.{succ u3, succ u3, max (max u4 u6) u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) (CategoryTheory.CategoryStruct.toQuiver.{u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) (CategoryTheory.Category.toCategoryStruct.{u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) (CategoryTheory.Limits.Cone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)))) (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H')) (CategoryTheory.CategoryStruct.toQuiver.{u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H')) (CategoryTheory.Category.toCategoryStruct.{u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H')) (CategoryTheory.Limits.Cone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H')))) (CategoryTheory.Functor.toPrefunctor.{u3, u3, max (max u4 u6) u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) (CategoryTheory.Limits.Cone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H')) (CategoryTheory.Limits.Cone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H')) (CategoryTheory.Limits.Cones.postcompose.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H) (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H') (CategoryTheory.whiskerLeft.{u4, u1, u5, u2, u6, u3} J _inst_1 C _inst_3 D _inst_4 F H H' (CategoryTheory.Iso.hom.{max u5 u3, max (max (max u5 u6) u2) u3} (CategoryTheory.Functor.{u2, u3, u5, u6} C _inst_3 D _inst_4) (CategoryTheory.Functor.category.{u2, u3, u5, u6} C _inst_3 D _inst_4) H H' α)))) (CategoryTheory.Functor.mapCone.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 H F c)) (CategoryTheory.Functor.mapCone.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 H' F c)
-Case conversion may be inaccurate. Consider using '#align category_theory.functor.postcompose_whisker_left_map_cone CategoryTheory.Functor.postcomposeWhiskerLeftMapConeₓ'. -/
/-- For `F : J ⥤ C`, given a cone `c : cone F`, and a natural isomorphism `α : H ≅ H'` for functors
`H H' : C ⥤ D`, the postcomposition of the cone `H.map_cone` using the isomorphism `α` is
isomorphic to the cone `H'.map_cone`.
@@ -971,12 +812,6 @@ def postcomposeWhiskerLeftMapCone {H H' : C ⥤ D} (α : H ≅ H') (c : Cone F)
(functorialityCompPostcompose α).app c
#align category_theory.functor.postcompose_whisker_left_map_cone CategoryTheory.Functor.postcomposeWhiskerLeftMapCone
-/- warning: category_theory.functor.map_cone_postcompose -> CategoryTheory.Functor.mapConePostcompose is a dubious translation:
-lean 3 declaration is
- forall {J : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u1, u4} J] {C : Type.{u5}} [_inst_3 : CategoryTheory.Category.{u2, u5} C] {D : Type.{u6}} [_inst_4 : CategoryTheory.Category.{u3, u6} D] {F : CategoryTheory.Functor.{u1, u2, u4, u5} J _inst_1 C _inst_3} {G : CategoryTheory.Functor.{u1, u2, u4, u5} J _inst_1 C _inst_3} (H : CategoryTheory.Functor.{u2, u3, u5, u6} C _inst_3 D _inst_4) {α : Quiver.Hom.{succ (max u4 u2), max u1 u2 u4 u5} (CategoryTheory.Functor.{u1, u2, u4, u5} J _inst_1 C _inst_3) (CategoryTheory.CategoryStruct.toQuiver.{max u4 u2, max u1 u2 u4 u5} (CategoryTheory.Functor.{u1, u2, u4, u5} J _inst_1 C _inst_3) (CategoryTheory.Category.toCategoryStruct.{max u4 u2, max u1 u2 u4 u5} (CategoryTheory.Functor.{u1, u2, u4, u5} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u4, u5} J _inst_1 C _inst_3))) F G} {c : CategoryTheory.Limits.Cone.{u1, u2, u4, u5} J _inst_1 C _inst_3 F}, CategoryTheory.Iso.{u3, max u4 u6 u3} (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G H)) (CategoryTheory.Limits.Cone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G H)) (CategoryTheory.Functor.mapCone.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G H (CategoryTheory.Functor.obj.{u2, u2, max u4 u5 u2, max u4 u5 u2} (CategoryTheory.Limits.Cone.{u1, u2, u4, u5} J _inst_1 C _inst_3 F) (CategoryTheory.Limits.Cone.category.{u1, u2, u4, u5} J _inst_1 C _inst_3 F) (CategoryTheory.Limits.Cone.{u1, u2, u4, u5} J _inst_1 C _inst_3 G) (CategoryTheory.Limits.Cone.category.{u1, u2, u4, u5} J _inst_1 C _inst_3 G) (CategoryTheory.Limits.Cones.postcompose.{u1, u2, u4, u5} J _inst_1 C _inst_3 F G α) c)) (CategoryTheory.Functor.obj.{u3, u3, max u4 u6 u3, max u4 u6 u3} (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) (CategoryTheory.Limits.Cone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G H)) (CategoryTheory.Limits.Cone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G H)) (CategoryTheory.Limits.Cones.postcompose.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H) (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G H) (CategoryTheory.whiskerRight.{u4, u1, u5, u2, u6, u3} J _inst_1 C _inst_3 D _inst_4 F G α H)) (CategoryTheory.Functor.mapCone.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H c))
-but is expected to have type
- forall {J : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u1, u4} J] {C : Type.{u5}} [_inst_3 : CategoryTheory.Category.{u2, u5} C] {D : Type.{u6}} [_inst_4 : CategoryTheory.Category.{u3, u6} D] (F : CategoryTheory.Functor.{u2, u3, u5, u6} C _inst_3 D _inst_4) {G : CategoryTheory.Functor.{u1, u2, u4, u5} J _inst_1 C _inst_3} {H : CategoryTheory.Functor.{u1, u2, u4, u5} J _inst_1 C _inst_3} {α : Quiver.Hom.{max (succ u4) (succ u2), max (max (max u4 u5) u1) u2} (CategoryTheory.Functor.{u1, u2, u4, u5} J _inst_1 C _inst_3) (CategoryTheory.CategoryStruct.toQuiver.{max u4 u2, max (max (max u4 u5) u1) u2} (CategoryTheory.Functor.{u1, u2, u4, u5} J _inst_1 C _inst_3) (CategoryTheory.Category.toCategoryStruct.{max u4 u2, max (max (max u4 u5) u1) u2} (CategoryTheory.Functor.{u1, u2, u4, u5} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u4, u5} J _inst_1 C _inst_3))) G H} {c : CategoryTheory.Limits.Cone.{u1, u2, u4, u5} J _inst_1 C _inst_3 G}, CategoryTheory.Iso.{u3, max (max u6 u3) u4} (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 H F)) (CategoryTheory.Limits.Cone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 H F)) (CategoryTheory.Functor.mapCone.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H (Prefunctor.obj.{succ u2, succ u2, max (max u4 u5) u2, max (max u4 u5) u2} (CategoryTheory.Limits.Cone.{u1, u2, u4, u5} J _inst_1 C _inst_3 G) (CategoryTheory.CategoryStruct.toQuiver.{u2, max (max u4 u5) u2} (CategoryTheory.Limits.Cone.{u1, u2, u4, u5} J _inst_1 C _inst_3 G) (CategoryTheory.Category.toCategoryStruct.{u2, max (max u4 u5) u2} (CategoryTheory.Limits.Cone.{u1, u2, u4, u5} J _inst_1 C _inst_3 G) (CategoryTheory.Limits.Cone.category.{u1, u2, u4, u5} J _inst_1 C _inst_3 G))) (CategoryTheory.Limits.Cone.{u1, u2, u4, u5} J _inst_1 C _inst_3 H) (CategoryTheory.CategoryStruct.toQuiver.{u2, max (max u4 u5) u2} (CategoryTheory.Limits.Cone.{u1, u2, u4, u5} J _inst_1 C _inst_3 H) (CategoryTheory.Category.toCategoryStruct.{u2, max (max u4 u5) u2} (CategoryTheory.Limits.Cone.{u1, u2, u4, u5} J _inst_1 C _inst_3 H) (CategoryTheory.Limits.Cone.category.{u1, u2, u4, u5} J _inst_1 C _inst_3 H))) (CategoryTheory.Functor.toPrefunctor.{u2, u2, max (max u4 u5) u2, max (max u4 u5) u2} (CategoryTheory.Limits.Cone.{u1, u2, u4, u5} J _inst_1 C _inst_3 G) (CategoryTheory.Limits.Cone.category.{u1, u2, u4, u5} J _inst_1 C _inst_3 G) (CategoryTheory.Limits.Cone.{u1, u2, u4, u5} J _inst_1 C _inst_3 H) (CategoryTheory.Limits.Cone.category.{u1, u2, u4, u5} J _inst_1 C _inst_3 H) (CategoryTheory.Limits.Cones.postcompose.{u1, u2, u4, u5} J _inst_1 C _inst_3 G H α)) c)) (Prefunctor.obj.{succ u3, succ u3, max (max u4 u6) u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G F)) (CategoryTheory.CategoryStruct.toQuiver.{u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G F)) (CategoryTheory.Category.toCategoryStruct.{u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G F)) (CategoryTheory.Limits.Cone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G F)))) (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 H F)) (CategoryTheory.CategoryStruct.toQuiver.{u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 H F)) (CategoryTheory.Category.toCategoryStruct.{u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 H F)) (CategoryTheory.Limits.Cone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 H F)))) (CategoryTheory.Functor.toPrefunctor.{u3, u3, max (max u4 u6) u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G F)) (CategoryTheory.Limits.Cone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G F)) (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 H F)) (CategoryTheory.Limits.Cone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 H F)) (CategoryTheory.Limits.Cones.postcompose.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G F) (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 H F) (CategoryTheory.whiskerRight.{u4, u1, u5, u2, u6, u3} J _inst_1 C _inst_3 D _inst_4 G H α F))) (CategoryTheory.Functor.mapCone.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F G c))
-Case conversion may be inaccurate. Consider using '#align category_theory.functor.map_cone_postcompose CategoryTheory.Functor.mapConePostcomposeₓ'. -/
/--
`map_cone` commutes with `postcompose`. In particular, for `F : J ⥤ C`, given a cone `c : cone F`, a
natural transformation `α : F ⟶ G` and a functor `H : C ⥤ D`, we have two obvious ways of producing
@@ -989,9 +824,6 @@ def mapConePostcompose {α : F ⟶ G} {c} :
Cones.ext (Iso.refl _) (by tidy)
#align category_theory.functor.map_cone_postcompose CategoryTheory.Functor.mapConePostcompose
-/- warning: category_theory.functor.map_cone_postcompose_equivalence_functor -> CategoryTheory.Functor.mapConePostcomposeEquivalenceFunctor is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align category_theory.functor.map_cone_postcompose_equivalence_functor CategoryTheory.Functor.mapConePostcomposeEquivalenceFunctorₓ'. -/
/-- `map_cone` commutes with `postcompose_equivalence`
-/
@[simps]
@@ -1011,12 +843,6 @@ def functorialityCompPrecompose {H H' : C ⥤ D} (α : H ≅ H') :
#align category_theory.functor.functoriality_comp_precompose CategoryTheory.Functor.functorialityCompPrecompose
-/
-/- warning: category_theory.functor.precompose_whisker_left_map_cocone -> CategoryTheory.Functor.precomposeWhiskerLeftMapCocone is a dubious translation:
-lean 3 declaration is
- forall {J : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u1, u4} J] {C : Type.{u5}} [_inst_3 : CategoryTheory.Category.{u2, u5} C] {D : Type.{u6}} [_inst_4 : CategoryTheory.Category.{u3, u6} D] {F : CategoryTheory.Functor.{u1, u2, u4, u5} J _inst_1 C _inst_3} {H : CategoryTheory.Functor.{u2, u3, u5, u6} C _inst_3 D _inst_4} {H' : CategoryTheory.Functor.{u2, u3, u5, u6} C _inst_3 D _inst_4} (α : CategoryTheory.Iso.{max u5 u3, max u2 u3 u5 u6} (CategoryTheory.Functor.{u2, u3, u5, u6} C _inst_3 D _inst_4) (CategoryTheory.Functor.category.{u2, u3, u5, u6} C _inst_3 D _inst_4) H H') (c : CategoryTheory.Limits.Cocone.{u1, u2, u4, u5} J _inst_1 C _inst_3 F), CategoryTheory.Iso.{u3, max u4 u6 u3} (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H')) (CategoryTheory.Limits.Cocone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H')) (CategoryTheory.Functor.obj.{u3, u3, max u4 u6 u3, max u4 u6 u3} (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) (CategoryTheory.Limits.Cocone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H')) (CategoryTheory.Limits.Cocone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H')) (CategoryTheory.Limits.Cocones.precompose.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H) (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H') (CategoryTheory.whiskerLeft.{u4, u1, u5, u2, u6, u3} J _inst_1 C _inst_3 D _inst_4 F H' H (CategoryTheory.Iso.inv.{max u5 u3, max u2 u3 u5 u6} (CategoryTheory.Functor.{u2, u3, u5, u6} C _inst_3 D _inst_4) (CategoryTheory.Functor.category.{u2, u3, u5, u6} C _inst_3 D _inst_4) H H' α))) (CategoryTheory.Functor.mapCocone.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H c)) (CategoryTheory.Functor.mapCocone.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H' c)
-but is expected to have type
- forall {J : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u1, u4} J] {C : Type.{u5}} [_inst_3 : CategoryTheory.Category.{u2, u5} C] {D : Type.{u6}} [_inst_4 : CategoryTheory.Category.{u3, u6} D] {F : CategoryTheory.Functor.{u1, u2, u4, u5} J _inst_1 C _inst_3} {H : CategoryTheory.Functor.{u2, u3, u5, u6} C _inst_3 D _inst_4} {H' : CategoryTheory.Functor.{u2, u3, u5, u6} C _inst_3 D _inst_4} (α : CategoryTheory.Iso.{max u5 u3, max (max (max u5 u6) u2) u3} (CategoryTheory.Functor.{u2, u3, u5, u6} C _inst_3 D _inst_4) (CategoryTheory.Functor.category.{u2, u3, u5, u6} C _inst_3 D _inst_4) H H') (c : CategoryTheory.Limits.Cocone.{u1, u2, u4, u5} J _inst_1 C _inst_3 F), CategoryTheory.Iso.{u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H')) (CategoryTheory.Limits.Cocone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H')) (Prefunctor.obj.{succ u3, succ u3, max (max u4 u6) u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) (CategoryTheory.CategoryStruct.toQuiver.{u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) (CategoryTheory.Category.toCategoryStruct.{u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) (CategoryTheory.Limits.Cocone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)))) (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H')) (CategoryTheory.CategoryStruct.toQuiver.{u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H')) (CategoryTheory.Category.toCategoryStruct.{u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H')) (CategoryTheory.Limits.Cocone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H')))) (CategoryTheory.Functor.toPrefunctor.{u3, u3, max (max u4 u6) u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) (CategoryTheory.Limits.Cocone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H')) (CategoryTheory.Limits.Cocone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H')) (CategoryTheory.Limits.Cocones.precompose.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H) (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H') (CategoryTheory.whiskerLeft.{u4, u1, u5, u2, u6, u3} J _inst_1 C _inst_3 D _inst_4 F H' H (CategoryTheory.Iso.inv.{max u5 u3, max (max (max u5 u6) u2) u3} (CategoryTheory.Functor.{u2, u3, u5, u6} C _inst_3 D _inst_4) (CategoryTheory.Functor.category.{u2, u3, u5, u6} C _inst_3 D _inst_4) H H' α)))) (CategoryTheory.Functor.mapCocone.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 H F c)) (CategoryTheory.Functor.mapCocone.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 H' F c)
-Case conversion may be inaccurate. Consider using '#align category_theory.functor.precompose_whisker_left_map_cocone CategoryTheory.Functor.precomposeWhiskerLeftMapCoconeₓ'. -/
/--
For `F : J ⥤ C`, given a cocone `c : cocone F`, and a natural isomorphism `α : H ≅ H'` for functors
`H H' : C ⥤ D`, the precomposition of the cocone `H.map_cocone` using the isomorphism `α` is
@@ -1028,12 +854,6 @@ def precomposeWhiskerLeftMapCocone {H H' : C ⥤ D} (α : H ≅ H') (c : Cocone
(functorialityCompPrecompose α).app c
#align category_theory.functor.precompose_whisker_left_map_cocone CategoryTheory.Functor.precomposeWhiskerLeftMapCocone
-/- warning: category_theory.functor.map_cocone_precompose -> CategoryTheory.Functor.mapCoconePrecompose is a dubious translation:
-lean 3 declaration is
- forall {J : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u1, u4} J] {C : Type.{u5}} [_inst_3 : CategoryTheory.Category.{u2, u5} C] {D : Type.{u6}} [_inst_4 : CategoryTheory.Category.{u3, u6} D] {F : CategoryTheory.Functor.{u1, u2, u4, u5} J _inst_1 C _inst_3} {G : CategoryTheory.Functor.{u1, u2, u4, u5} J _inst_1 C _inst_3} (H : CategoryTheory.Functor.{u2, u3, u5, u6} C _inst_3 D _inst_4) {α : Quiver.Hom.{succ (max u4 u2), max u1 u2 u4 u5} (CategoryTheory.Functor.{u1, u2, u4, u5} J _inst_1 C _inst_3) (CategoryTheory.CategoryStruct.toQuiver.{max u4 u2, max u1 u2 u4 u5} (CategoryTheory.Functor.{u1, u2, u4, u5} J _inst_1 C _inst_3) (CategoryTheory.Category.toCategoryStruct.{max u4 u2, max u1 u2 u4 u5} (CategoryTheory.Functor.{u1, u2, u4, u5} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u4, u5} J _inst_1 C _inst_3))) F G} {c : CategoryTheory.Limits.Cocone.{u1, u2, u4, u5} J _inst_1 C _inst_3 G}, CategoryTheory.Iso.{u3, max u4 u6 u3} (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) (CategoryTheory.Limits.Cocone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) (CategoryTheory.Functor.mapCocone.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H (CategoryTheory.Functor.obj.{u2, u2, max u4 u5 u2, max u4 u5 u2} (CategoryTheory.Limits.Cocone.{u1, u2, u4, u5} J _inst_1 C _inst_3 G) (CategoryTheory.Limits.Cocone.category.{u1, u2, u4, u5} J _inst_1 C _inst_3 G) (CategoryTheory.Limits.Cocone.{u1, u2, u4, u5} J _inst_1 C _inst_3 F) (CategoryTheory.Limits.Cocone.category.{u1, u2, u4, u5} J _inst_1 C _inst_3 F) (CategoryTheory.Limits.Cocones.precompose.{u1, u2, u4, u5} J _inst_1 C _inst_3 G F α) c)) (CategoryTheory.Functor.obj.{u3, u3, max u4 u6 u3, max u4 u6 u3} (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G H)) (CategoryTheory.Limits.Cocone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G H)) (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) (CategoryTheory.Limits.Cocone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) (CategoryTheory.Limits.Cocones.precompose.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G H) (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H) (CategoryTheory.whiskerRight.{u4, u1, u5, u2, u6, u3} J _inst_1 C _inst_3 D _inst_4 F G α H)) (CategoryTheory.Functor.mapCocone.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G H c))
-but is expected to have type
- forall {J : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u1, u4} J] {C : Type.{u5}} [_inst_3 : CategoryTheory.Category.{u2, u5} C] {D : Type.{u6}} [_inst_4 : CategoryTheory.Category.{u3, u6} D] (F : CategoryTheory.Functor.{u2, u3, u5, u6} C _inst_3 D _inst_4) {G : CategoryTheory.Functor.{u1, u2, u4, u5} J _inst_1 C _inst_3} {H : CategoryTheory.Functor.{u1, u2, u4, u5} J _inst_1 C _inst_3} {α : Quiver.Hom.{max (succ u4) (succ u2), max (max (max u4 u5) u1) u2} (CategoryTheory.Functor.{u1, u2, u4, u5} J _inst_1 C _inst_3) (CategoryTheory.CategoryStruct.toQuiver.{max u4 u2, max (max (max u4 u5) u1) u2} (CategoryTheory.Functor.{u1, u2, u4, u5} J _inst_1 C _inst_3) (CategoryTheory.Category.toCategoryStruct.{max u4 u2, max (max (max u4 u5) u1) u2} (CategoryTheory.Functor.{u1, u2, u4, u5} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u4, u5} J _inst_1 C _inst_3))) G H} {c : CategoryTheory.Limits.Cocone.{u1, u2, u4, u5} J _inst_1 C _inst_3 H}, CategoryTheory.Iso.{u3, max (max u6 u3) u4} (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G F)) (CategoryTheory.Limits.Cocone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G F)) (CategoryTheory.Functor.mapCocone.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F G (Prefunctor.obj.{succ u2, succ u2, max (max u4 u5) u2, max (max u4 u5) u2} (CategoryTheory.Limits.Cocone.{u1, u2, u4, u5} J _inst_1 C _inst_3 H) (CategoryTheory.CategoryStruct.toQuiver.{u2, max (max u4 u5) u2} (CategoryTheory.Limits.Cocone.{u1, u2, u4, u5} J _inst_1 C _inst_3 H) (CategoryTheory.Category.toCategoryStruct.{u2, max (max u4 u5) u2} (CategoryTheory.Limits.Cocone.{u1, u2, u4, u5} J _inst_1 C _inst_3 H) (CategoryTheory.Limits.Cocone.category.{u1, u2, u4, u5} J _inst_1 C _inst_3 H))) (CategoryTheory.Limits.Cocone.{u1, u2, u4, u5} J _inst_1 C _inst_3 G) (CategoryTheory.CategoryStruct.toQuiver.{u2, max (max u4 u5) u2} (CategoryTheory.Limits.Cocone.{u1, u2, u4, u5} J _inst_1 C _inst_3 G) (CategoryTheory.Category.toCategoryStruct.{u2, max (max u4 u5) u2} (CategoryTheory.Limits.Cocone.{u1, u2, u4, u5} J _inst_1 C _inst_3 G) (CategoryTheory.Limits.Cocone.category.{u1, u2, u4, u5} J _inst_1 C _inst_3 G))) (CategoryTheory.Functor.toPrefunctor.{u2, u2, max (max u4 u5) u2, max (max u4 u5) u2} (CategoryTheory.Limits.Cocone.{u1, u2, u4, u5} J _inst_1 C _inst_3 H) (CategoryTheory.Limits.Cocone.category.{u1, u2, u4, u5} J _inst_1 C _inst_3 H) (CategoryTheory.Limits.Cocone.{u1, u2, u4, u5} J _inst_1 C _inst_3 G) (CategoryTheory.Limits.Cocone.category.{u1, u2, u4, u5} J _inst_1 C _inst_3 G) (CategoryTheory.Limits.Cocones.precompose.{u1, u2, u4, u5} J _inst_1 C _inst_3 H G α)) c)) (Prefunctor.obj.{succ u3, succ u3, max (max u4 u6) u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 H F)) (CategoryTheory.CategoryStruct.toQuiver.{u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 H F)) (CategoryTheory.Category.toCategoryStruct.{u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 H F)) (CategoryTheory.Limits.Cocone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 H F)))) (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G F)) (CategoryTheory.CategoryStruct.toQuiver.{u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G F)) (CategoryTheory.Category.toCategoryStruct.{u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G F)) (CategoryTheory.Limits.Cocone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G F)))) (CategoryTheory.Functor.toPrefunctor.{u3, u3, max (max u4 u6) u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 H F)) (CategoryTheory.Limits.Cocone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 H F)) (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G F)) (CategoryTheory.Limits.Cocone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G F)) (CategoryTheory.Limits.Cocones.precompose.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 H F) (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G F) (CategoryTheory.whiskerRight.{u4, u1, u5, u2, u6, u3} J _inst_1 C _inst_3 D _inst_4 G H α F))) (CategoryTheory.Functor.mapCocone.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H c))
-Case conversion may be inaccurate. Consider using '#align category_theory.functor.map_cocone_precompose CategoryTheory.Functor.mapCoconePrecomposeₓ'. -/
/-- `map_cocone` commutes with `precompose`. In particular, for `F : J ⥤ C`, given a cocone
`c : cocone F`, a natural transformation `α : F ⟶ G` and a functor `H : C ⥤ D`, we have two obvious
ways of producing a cocone over `G ⋙ H`, and they are both isomorphic.
@@ -1045,9 +865,6 @@ def mapCoconePrecompose {α : F ⟶ G} {c} :
Cocones.ext (Iso.refl _) (by tidy)
#align category_theory.functor.map_cocone_precompose CategoryTheory.Functor.mapCoconePrecompose
-/- warning: category_theory.functor.map_cocone_precompose_equivalence_functor -> CategoryTheory.Functor.mapCoconePrecomposeEquivalenceFunctor is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align category_theory.functor.map_cocone_precompose_equivalence_functor CategoryTheory.Functor.mapCoconePrecomposeEquivalenceFunctorₓ'. -/
/-- `map_cocone` commutes with `precompose_equivalence`
-/
@[simps]
@@ -1057,12 +874,6 @@ def mapCoconePrecomposeEquivalenceFunctor {α : F ≅ G} {c} :
Cocones.ext (Iso.refl _) (by tidy)
#align category_theory.functor.map_cocone_precompose_equivalence_functor CategoryTheory.Functor.mapCoconePrecomposeEquivalenceFunctor
-/- warning: category_theory.functor.map_cone_whisker -> CategoryTheory.Functor.mapConeWhisker is a dubious translation:
-lean 3 declaration is
- forall {J : Type.{u5}} [_inst_1 : CategoryTheory.Category.{u1, u5} J] {K : Type.{u6}} [_inst_2 : CategoryTheory.Category.{u2, u6} K] {C : Type.{u7}} [_inst_3 : CategoryTheory.Category.{u3, u7} C] {D : Type.{u8}} [_inst_4 : CategoryTheory.Category.{u4, u8} D] {F : CategoryTheory.Functor.{u1, u3, u5, u7} J _inst_1 C _inst_3} (H : CategoryTheory.Functor.{u3, u4, u7, u8} C _inst_3 D _inst_4) {E : CategoryTheory.Functor.{u2, u1, u6, u5} K _inst_2 J _inst_1} {c : CategoryTheory.Limits.Cone.{u1, u3, u5, u7} J _inst_1 C _inst_3 F}, CategoryTheory.Iso.{u4, max u6 u8 u4} (CategoryTheory.Limits.Cone.{u2, u4, u6, u8} K _inst_2 D _inst_4 (CategoryTheory.Functor.comp.{u2, u3, u4, u6, u7, u8} K _inst_2 C _inst_3 D _inst_4 (CategoryTheory.Functor.comp.{u2, u1, u3, u6, u5, u7} K _inst_2 J _inst_1 C _inst_3 E F) H)) (CategoryTheory.Limits.Cone.category.{u2, u4, u6, u8} K _inst_2 D _inst_4 (CategoryTheory.Functor.comp.{u2, u3, u4, u6, u7, u8} K _inst_2 C _inst_3 D _inst_4 (CategoryTheory.Functor.comp.{u2, u1, u3, u6, u5, u7} K _inst_2 J _inst_1 C _inst_3 E F) H)) (CategoryTheory.Functor.mapCone.{u2, u3, u4, u6, u7, u8} K _inst_2 C _inst_3 D _inst_4 (CategoryTheory.Functor.comp.{u2, u1, u3, u6, u5, u7} K _inst_2 J _inst_1 C _inst_3 E F) H (CategoryTheory.Limits.Cone.whisker.{u1, u2, u3, u5, u6, u7} J _inst_1 K _inst_2 C _inst_3 F E c)) (CategoryTheory.Limits.Cone.whisker.{u1, u2, u4, u5, u6, u8} J _inst_1 K _inst_2 D _inst_4 (CategoryTheory.Functor.comp.{u1, u3, u4, u5, u7, u8} J _inst_1 C _inst_3 D _inst_4 F H) E (CategoryTheory.Functor.mapCone.{u1, u3, u4, u5, u7, u8} J _inst_1 C _inst_3 D _inst_4 F H c))
-but is expected to have type
- forall {J : Type.{u5}} [_inst_1 : CategoryTheory.Category.{u1, u5} J] {K : Type.{u6}} [_inst_2 : CategoryTheory.Category.{u2, u6} K] {C : Type.{u7}} [_inst_3 : CategoryTheory.Category.{u3, u7} C] {D : Type.{u8}} [_inst_4 : CategoryTheory.Category.{u4, u8} D] (F : CategoryTheory.Functor.{u3, u4, u7, u8} C _inst_3 D _inst_4) {H : CategoryTheory.Functor.{u1, u3, u5, u7} J _inst_1 C _inst_3} {E : CategoryTheory.Functor.{u2, u1, u6, u5} K _inst_2 J _inst_1} {c : CategoryTheory.Limits.Cone.{u1, u3, u5, u7} J _inst_1 C _inst_3 H}, CategoryTheory.Iso.{u4, max (max u8 u4) u6} (CategoryTheory.Limits.Cone.{u2, u4, u6, u8} K _inst_2 D _inst_4 (CategoryTheory.Functor.comp.{u2, u3, u4, u6, u7, u8} K _inst_2 C _inst_3 D _inst_4 (CategoryTheory.Functor.comp.{u2, u1, u3, u6, u5, u7} K _inst_2 J _inst_1 C _inst_3 E H) F)) (CategoryTheory.Limits.Cone.category.{u2, u4, u6, u8} K _inst_2 D _inst_4 (CategoryTheory.Functor.comp.{u2, u3, u4, u6, u7, u8} K _inst_2 C _inst_3 D _inst_4 (CategoryTheory.Functor.comp.{u2, u1, u3, u6, u5, u7} K _inst_2 J _inst_1 C _inst_3 E H) F)) (CategoryTheory.Functor.mapCone.{u2, u3, u4, u6, u7, u8} K _inst_2 C _inst_3 D _inst_4 F (CategoryTheory.Functor.comp.{u2, u1, u3, u6, u5, u7} K _inst_2 J _inst_1 C _inst_3 E H) (CategoryTheory.Limits.Cone.whisker.{u1, u2, u3, u5, u6, u7} J _inst_1 K _inst_2 C _inst_3 H E c)) (CategoryTheory.Limits.Cone.whisker.{u1, u2, u4, u5, u6, u8} J _inst_1 K _inst_2 D _inst_4 (CategoryTheory.Functor.comp.{u1, u3, u4, u5, u7, u8} J _inst_1 C _inst_3 D _inst_4 H F) E (CategoryTheory.Functor.mapCone.{u1, u3, u4, u5, u7, u8} J _inst_1 C _inst_3 D _inst_4 F H c))
-Case conversion may be inaccurate. Consider using '#align category_theory.functor.map_cone_whisker CategoryTheory.Functor.mapConeWhiskerₓ'. -/
/-- `map_cone` commutes with `whisker`
-/
@[simps]
@@ -1070,12 +881,6 @@ def mapConeWhisker {E : K ⥤ J} {c : Cone F} : H.mapCone (c.whisker E) ≅ (H.m
Cones.ext (Iso.refl _) (by tidy)
#align category_theory.functor.map_cone_whisker CategoryTheory.Functor.mapConeWhisker
-/- warning: category_theory.functor.map_cocone_whisker -> CategoryTheory.Functor.mapCoconeWhisker is a dubious translation:
-lean 3 declaration is
- forall {J : Type.{u5}} [_inst_1 : CategoryTheory.Category.{u1, u5} J] {K : Type.{u6}} [_inst_2 : CategoryTheory.Category.{u2, u6} K] {C : Type.{u7}} [_inst_3 : CategoryTheory.Category.{u3, u7} C] {D : Type.{u8}} [_inst_4 : CategoryTheory.Category.{u4, u8} D] {F : CategoryTheory.Functor.{u1, u3, u5, u7} J _inst_1 C _inst_3} (H : CategoryTheory.Functor.{u3, u4, u7, u8} C _inst_3 D _inst_4) {E : CategoryTheory.Functor.{u2, u1, u6, u5} K _inst_2 J _inst_1} {c : CategoryTheory.Limits.Cocone.{u1, u3, u5, u7} J _inst_1 C _inst_3 F}, CategoryTheory.Iso.{u4, max u6 u8 u4} (CategoryTheory.Limits.Cocone.{u2, u4, u6, u8} K _inst_2 D _inst_4 (CategoryTheory.Functor.comp.{u2, u3, u4, u6, u7, u8} K _inst_2 C _inst_3 D _inst_4 (CategoryTheory.Functor.comp.{u2, u1, u3, u6, u5, u7} K _inst_2 J _inst_1 C _inst_3 E F) H)) (CategoryTheory.Limits.Cocone.category.{u2, u4, u6, u8} K _inst_2 D _inst_4 (CategoryTheory.Functor.comp.{u2, u3, u4, u6, u7, u8} K _inst_2 C _inst_3 D _inst_4 (CategoryTheory.Functor.comp.{u2, u1, u3, u6, u5, u7} K _inst_2 J _inst_1 C _inst_3 E F) H)) (CategoryTheory.Functor.mapCocone.{u2, u3, u4, u6, u7, u8} K _inst_2 C _inst_3 D _inst_4 (CategoryTheory.Functor.comp.{u2, u1, u3, u6, u5, u7} K _inst_2 J _inst_1 C _inst_3 E F) H (CategoryTheory.Limits.Cocone.whisker.{u1, u2, u3, u5, u6, u7} J _inst_1 K _inst_2 C _inst_3 F E c)) (CategoryTheory.Limits.Cocone.whisker.{u1, u2, u4, u5, u6, u8} J _inst_1 K _inst_2 D _inst_4 (CategoryTheory.Functor.comp.{u1, u3, u4, u5, u7, u8} J _inst_1 C _inst_3 D _inst_4 F H) E (CategoryTheory.Functor.mapCocone.{u1, u3, u4, u5, u7, u8} J _inst_1 C _inst_3 D _inst_4 F H c))
-but is expected to have type
- forall {J : Type.{u5}} [_inst_1 : CategoryTheory.Category.{u1, u5} J] {K : Type.{u6}} [_inst_2 : CategoryTheory.Category.{u2, u6} K] {C : Type.{u7}} [_inst_3 : CategoryTheory.Category.{u3, u7} C] {D : Type.{u8}} [_inst_4 : CategoryTheory.Category.{u4, u8} D] (F : CategoryTheory.Functor.{u3, u4, u7, u8} C _inst_3 D _inst_4) {H : CategoryTheory.Functor.{u1, u3, u5, u7} J _inst_1 C _inst_3} {E : CategoryTheory.Functor.{u2, u1, u6, u5} K _inst_2 J _inst_1} {c : CategoryTheory.Limits.Cocone.{u1, u3, u5, u7} J _inst_1 C _inst_3 H}, CategoryTheory.Iso.{u4, max (max u8 u4) u6} (CategoryTheory.Limits.Cocone.{u2, u4, u6, u8} K _inst_2 D _inst_4 (CategoryTheory.Functor.comp.{u2, u3, u4, u6, u7, u8} K _inst_2 C _inst_3 D _inst_4 (CategoryTheory.Functor.comp.{u2, u1, u3, u6, u5, u7} K _inst_2 J _inst_1 C _inst_3 E H) F)) (CategoryTheory.Limits.Cocone.category.{u2, u4, u6, u8} K _inst_2 D _inst_4 (CategoryTheory.Functor.comp.{u2, u3, u4, u6, u7, u8} K _inst_2 C _inst_3 D _inst_4 (CategoryTheory.Functor.comp.{u2, u1, u3, u6, u5, u7} K _inst_2 J _inst_1 C _inst_3 E H) F)) (CategoryTheory.Functor.mapCocone.{u2, u3, u4, u6, u7, u8} K _inst_2 C _inst_3 D _inst_4 F (CategoryTheory.Functor.comp.{u2, u1, u3, u6, u5, u7} K _inst_2 J _inst_1 C _inst_3 E H) (CategoryTheory.Limits.Cocone.whisker.{u1, u2, u3, u5, u6, u7} J _inst_1 K _inst_2 C _inst_3 H E c)) (CategoryTheory.Limits.Cocone.whisker.{u1, u2, u4, u5, u6, u8} J _inst_1 K _inst_2 D _inst_4 (CategoryTheory.Functor.comp.{u1, u3, u4, u5, u7, u8} J _inst_1 C _inst_3 D _inst_4 H F) E (CategoryTheory.Functor.mapCocone.{u1, u3, u4, u5, u7, u8} J _inst_1 C _inst_3 D _inst_4 F H c))
-Case conversion may be inaccurate. Consider using '#align category_theory.functor.map_cocone_whisker CategoryTheory.Functor.mapCoconeWhiskerₓ'. -/
/-- `map_cocone` commutes with `whisker`
-/
@[simps]
@@ -1135,12 +940,6 @@ def Cone.unop (c : Cone F.op) : Cocone F
variable (F)
-/- warning: category_theory.limits.cocone_equivalence_op_cone_op -> CategoryTheory.Limits.coconeEquivalenceOpConeOp is a dubious translation:
-lean 3 declaration is
- forall {J : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} J] {C : Type.{u4}} [_inst_3 : CategoryTheory.Category.{u2, u4} C] (F : CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3), CategoryTheory.Equivalence.{u2, u2, max u3 u4 u2, max u3 u4 u2} (CategoryTheory.Limits.Cocone.{u1, u2, u3, u4} J _inst_1 C _inst_3 F) (CategoryTheory.Limits.Cocone.category.{u1, u2, u3, u4} J _inst_1 C _inst_3 F) (Opposite.{succ (max u3 u4 u2)} (CategoryTheory.Limits.Cone.{u1, u2, u3, u4} (Opposite.{succ u3} J) (CategoryTheory.Category.opposite.{u1, u3} J _inst_1) (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3) (CategoryTheory.Functor.op.{u1, u2, u3, u4} J _inst_1 C _inst_3 F))) (CategoryTheory.Category.opposite.{u2, max u3 u4 u2} (CategoryTheory.Limits.Cone.{u1, u2, u3, u4} (Opposite.{succ u3} J) (CategoryTheory.Category.opposite.{u1, u3} J _inst_1) (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3) (CategoryTheory.Functor.op.{u1, u2, u3, u4} J _inst_1 C _inst_3 F)) (CategoryTheory.Limits.Cone.category.{u1, u2, u3, u4} (Opposite.{succ u3} J) (CategoryTheory.Category.opposite.{u1, u3} J _inst_1) (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3) (CategoryTheory.Functor.op.{u1, u2, u3, u4} J _inst_1 C _inst_3 F)))
-but is expected to have type
- forall {J : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} J] {C : Type.{u4}} [_inst_3 : CategoryTheory.Category.{u2, u4} C] (F : CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3), CategoryTheory.Equivalence.{u2, u2, max (max u4 u3) u2, max (max u3 u4) u2} (CategoryTheory.Limits.Cocone.{u1, u2, u3, u4} J _inst_1 C _inst_3 F) (Opposite.{max (max (succ u4) (succ u3)) (succ u2)} (CategoryTheory.Limits.Cone.{u1, u2, u3, u4} (Opposite.{succ u3} J) (CategoryTheory.Category.opposite.{u1, u3} J _inst_1) (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3) (CategoryTheory.Functor.op.{u1, u2, u3, u4} J _inst_1 C _inst_3 F))) (CategoryTheory.Limits.Cocone.category.{u1, u2, u3, u4} J _inst_1 C _inst_3 F) (CategoryTheory.Category.opposite.{u2, max (max u3 u4) u2} (CategoryTheory.Limits.Cone.{u1, u2, u3, u4} (Opposite.{succ u3} J) (CategoryTheory.Category.opposite.{u1, u3} J _inst_1) (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3) (CategoryTheory.Functor.op.{u1, u2, u3, u4} J _inst_1 C _inst_3 F)) (CategoryTheory.Limits.Cone.category.{u1, u2, u3, u4} (Opposite.{succ u3} J) (CategoryTheory.Category.opposite.{u1, u3} J _inst_1) (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3) (CategoryTheory.Functor.op.{u1, u2, u3, u4} J _inst_1 C _inst_3 F)))
-Case conversion may be inaccurate. Consider using '#align category_theory.limits.cocone_equivalence_op_cone_op CategoryTheory.Limits.coconeEquivalenceOpConeOpₓ'. -/
/-- The category of cocones on `F`
is equivalent to the opposite category of
the category of cones on the opposite of `F`.
@@ -1217,9 +1016,6 @@ def coconeOfConeLeftOp (c : Cone F.leftOp) : Cocone F
#align category_theory.limits.cocone_of_cone_left_op CategoryTheory.Limits.coconeOfConeLeftOp
-/
-/- warning: category_theory.limits.cocone_of_cone_left_op_ι_app -> CategoryTheory.Limits.coconeOfConeLeftOp_ι_app is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align category_theory.limits.cocone_of_cone_left_op_ι_app CategoryTheory.Limits.coconeOfConeLeftOp_ι_appₓ'. -/
@[simp]
theorem coconeOfConeLeftOp_ι_app (c : Cone F.leftOp) (j) :
(coconeOfConeLeftOp c).ι.app j = (c.π.app (op j)).op := by dsimp only [cocone_of_cone_left_op];
@@ -1344,24 +1140,12 @@ section
variable (G : C ⥤ D)
-/- warning: category_theory.functor.map_cone_op -> CategoryTheory.Functor.mapConeOp is a dubious translation:
-lean 3 declaration is
- forall {J : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u1, u4} J] {C : Type.{u5}} [_inst_3 : CategoryTheory.Category.{u2, u5} C] {D : Type.{u6}} [_inst_4 : CategoryTheory.Category.{u3, u6} D] {F : CategoryTheory.Functor.{u1, u2, u4, u5} J _inst_1 C _inst_3} (G : CategoryTheory.Functor.{u2, u3, u5, u6} C _inst_3 D _inst_4) (t : CategoryTheory.Limits.Cone.{u1, u2, u4, u5} J _inst_1 C _inst_3 F), CategoryTheory.Iso.{u3, max u4 u6 u3} (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} (Opposite.{succ u4} J) (CategoryTheory.Category.opposite.{u1, u4} J _inst_1) (Opposite.{succ u6} D) (CategoryTheory.Category.opposite.{u3, u6} D _inst_4) (CategoryTheory.Functor.op.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F G))) (CategoryTheory.Limits.Cocone.category.{u1, u3, u4, u6} (Opposite.{succ u4} J) (CategoryTheory.Category.opposite.{u1, u4} J _inst_1) (Opposite.{succ u6} D) (CategoryTheory.Category.opposite.{u3, u6} D _inst_4) (CategoryTheory.Functor.op.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F G))) (CategoryTheory.Limits.Cone.op.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F G) (CategoryTheory.Functor.mapCone.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F G t)) (CategoryTheory.Functor.mapCocone.{u1, u2, u3, u4, u5, u6} (Opposite.{succ u4} J) (CategoryTheory.Category.opposite.{u1, u4} J _inst_1) (Opposite.{succ u5} C) (CategoryTheory.Category.opposite.{u2, u5} C _inst_3) (Opposite.{succ u6} D) (CategoryTheory.Category.opposite.{u3, u6} D _inst_4) (CategoryTheory.Functor.op.{u1, u2, u4, u5} J _inst_1 C _inst_3 F) (CategoryTheory.Functor.op.{u2, u3, u5, u6} C _inst_3 D _inst_4 G) (CategoryTheory.Limits.Cone.op.{u1, u2, u4, u5} J _inst_1 C _inst_3 F t))
-but is expected to have type
- forall {J : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u1, u4} J] {C : Type.{u5}} [_inst_3 : CategoryTheory.Category.{u2, u5} C] {D : Type.{u6}} [_inst_4 : CategoryTheory.Category.{u3, u6} D] {F : CategoryTheory.Functor.{u1, u2, u4, u5} J _inst_1 C _inst_3} (G : CategoryTheory.Functor.{u2, u3, u5, u6} C _inst_3 D _inst_4) (t : CategoryTheory.Limits.Cone.{u1, u2, u4, u5} J _inst_1 C _inst_3 F), CategoryTheory.Iso.{u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} (Opposite.{succ u4} J) (CategoryTheory.Category.opposite.{u1, u4} J _inst_1) (Opposite.{succ u6} D) (CategoryTheory.Category.opposite.{u3, u6} D _inst_4) (CategoryTheory.Functor.op.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F G))) (CategoryTheory.Limits.Cocone.category.{u1, u3, u4, u6} (Opposite.{succ u4} J) (CategoryTheory.Category.opposite.{u1, u4} J _inst_1) (Opposite.{succ u6} D) (CategoryTheory.Category.opposite.{u3, u6} D _inst_4) (CategoryTheory.Functor.op.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F G))) (CategoryTheory.Limits.Cone.op.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F G) (CategoryTheory.Functor.mapCone.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G F t)) (CategoryTheory.Functor.mapCocone.{u1, u2, u3, u4, u5, u6} (Opposite.{succ u4} J) (CategoryTheory.Category.opposite.{u1, u4} J _inst_1) (Opposite.{succ u5} C) (CategoryTheory.Category.opposite.{u2, u5} C _inst_3) (Opposite.{succ u6} D) (CategoryTheory.Category.opposite.{u3, u6} D _inst_4) (CategoryTheory.Functor.op.{u2, u3, u5, u6} C _inst_3 D _inst_4 G) (CategoryTheory.Functor.op.{u1, u2, u4, u5} J _inst_1 C _inst_3 F) (CategoryTheory.Limits.Cone.op.{u1, u2, u4, u5} J _inst_1 C _inst_3 F t))
-Case conversion may be inaccurate. Consider using '#align category_theory.functor.map_cone_op CategoryTheory.Functor.mapConeOpₓ'. -/
/-- The opposite cocone of the image of a cone is the image of the opposite cocone. -/
@[simps (config := { rhsMd := semireducible })]
def mapConeOp (t : Cone F) : (G.mapCone t).op ≅ G.op.mapCocone t.op :=
Cocones.ext (Iso.refl _) (by tidy)
#align category_theory.functor.map_cone_op CategoryTheory.Functor.mapConeOp
-/- warning: category_theory.functor.map_cocone_op -> CategoryTheory.Functor.mapCoconeOp is a dubious translation:
-lean 3 declaration is
- forall {J : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u1, u4} J] {C : Type.{u5}} [_inst_3 : CategoryTheory.Category.{u2, u5} C] {D : Type.{u6}} [_inst_4 : CategoryTheory.Category.{u3, u6} D] {F : CategoryTheory.Functor.{u1, u2, u4, u5} J _inst_1 C _inst_3} (G : CategoryTheory.Functor.{u2, u3, u5, u6} C _inst_3 D _inst_4) {t : CategoryTheory.Limits.Cocone.{u1, u2, u4, u5} J _inst_1 C _inst_3 F}, CategoryTheory.Iso.{u3, max u4 u6 u3} (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} (Opposite.{succ u4} J) (CategoryTheory.Category.opposite.{u1, u4} J _inst_1) (Opposite.{succ u6} D) (CategoryTheory.Category.opposite.{u3, u6} D _inst_4) (CategoryTheory.Functor.op.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F G))) (CategoryTheory.Limits.Cone.category.{u1, u3, u4, u6} (Opposite.{succ u4} J) (CategoryTheory.Category.opposite.{u1, u4} J _inst_1) (Opposite.{succ u6} D) (CategoryTheory.Category.opposite.{u3, u6} D _inst_4) (CategoryTheory.Functor.op.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F G))) (CategoryTheory.Limits.Cocone.op.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F G) (CategoryTheory.Functor.mapCocone.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F G t)) (CategoryTheory.Functor.mapCone.{u1, u2, u3, u4, u5, u6} (Opposite.{succ u4} J) (CategoryTheory.Category.opposite.{u1, u4} J _inst_1) (Opposite.{succ u5} C) (CategoryTheory.Category.opposite.{u2, u5} C _inst_3) (Opposite.{succ u6} D) (CategoryTheory.Category.opposite.{u3, u6} D _inst_4) (CategoryTheory.Functor.op.{u1, u2, u4, u5} J _inst_1 C _inst_3 F) (CategoryTheory.Functor.op.{u2, u3, u5, u6} C _inst_3 D _inst_4 G) (CategoryTheory.Limits.Cocone.op.{u1, u2, u4, u5} J _inst_1 C _inst_3 F t))
-but is expected to have type
- forall {J : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u1, u4} J] {C : Type.{u5}} [_inst_3 : CategoryTheory.Category.{u2, u5} C] {D : Type.{u6}} [_inst_4 : CategoryTheory.Category.{u3, u6} D] {F : CategoryTheory.Functor.{u1, u2, u4, u5} J _inst_1 C _inst_3} (G : CategoryTheory.Functor.{u2, u3, u5, u6} C _inst_3 D _inst_4) {t : CategoryTheory.Limits.Cocone.{u1, u2, u4, u5} J _inst_1 C _inst_3 F}, CategoryTheory.Iso.{u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} (Opposite.{succ u4} J) (CategoryTheory.Category.opposite.{u1, u4} J _inst_1) (Opposite.{succ u6} D) (CategoryTheory.Category.opposite.{u3, u6} D _inst_4) (CategoryTheory.Functor.op.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F G))) (CategoryTheory.Limits.Cone.category.{u1, u3, u4, u6} (Opposite.{succ u4} J) (CategoryTheory.Category.opposite.{u1, u4} J _inst_1) (Opposite.{succ u6} D) (CategoryTheory.Category.opposite.{u3, u6} D _inst_4) (CategoryTheory.Functor.op.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F G))) (CategoryTheory.Limits.Cocone.op.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F G) (CategoryTheory.Functor.mapCocone.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G F t)) (CategoryTheory.Functor.mapCone.{u1, u2, u3, u4, u5, u6} (Opposite.{succ u4} J) (CategoryTheory.Category.opposite.{u1, u4} J _inst_1) (Opposite.{succ u5} C) (CategoryTheory.Category.opposite.{u2, u5} C _inst_3) (Opposite.{succ u6} D) (CategoryTheory.Category.opposite.{u3, u6} D _inst_4) (CategoryTheory.Functor.op.{u2, u3, u5, u6} C _inst_3 D _inst_4 G) (CategoryTheory.Functor.op.{u1, u2, u4, u5} J _inst_1 C _inst_3 F) (CategoryTheory.Limits.Cocone.op.{u1, u2, u4, u5} J _inst_1 C _inst_3 F t))
-Case conversion may be inaccurate. Consider using '#align category_theory.functor.map_cocone_op CategoryTheory.Functor.mapCoconeOpₓ'. -/
/-- The opposite cone of the image of a cocone is the image of the opposite cone. -/
@[simps (config := { rhsMd := semireducible })]
def mapCoconeOp {t : Cocone F} : (G.mapCocone t).op ≅ G.op.mapCone t.op :=
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -157,10 +157,7 @@ but is expected to have type
Case conversion may be inaccurate. Consider using '#align category_theory.limits.cone.w CategoryTheory.Limits.Cone.wₓ'. -/
@[simp, reassoc]
theorem Cone.w {F : J ⥤ C} (c : Cone F) {j j' : J} (f : j ⟶ j') :
- c.π.app j ≫ F.map f = c.π.app j' :=
- by
- rw [← c.π.naturality f]
- apply id_comp
+ c.π.app j ≫ F.map f = c.π.app j' := by rw [← c.π.naturality f]; apply id_comp
#align category_theory.limits.cone.w CategoryTheory.Limits.Cone.w
#print CategoryTheory.Limits.Cocone /-
@@ -188,10 +185,7 @@ instance inhabitedCocone (F : Discrete PUnit ⥤ C) : Inhabited (Cocone F) :=
Case conversion may be inaccurate. Consider using '#align category_theory.limits.cocone.w CategoryTheory.Limits.Cocone.wₓ'. -/
@[simp, reassoc]
theorem Cocone.w {F : J ⥤ C} (c : Cocone F) {j j' : J} (f : j ⟶ j') :
- F.map f ≫ c.ι.app j' = c.ι.app j :=
- by
- rw [c.ι.naturality f]
- apply comp_id
+ F.map f ≫ c.ι.app j' = c.ι.app j := by rw [c.ι.naturality f]; apply comp_id
#align category_theory.limits.cocone.w CategoryTheory.Limits.Cocone.w
end
@@ -214,14 +208,8 @@ def equiv (F : J ⥤ C) : Cone F ≅ ΣX, F.cones.obj X
inv c :=
{ pt := c.1.unop
π := c.2 }
- hom_inv_id' := by
- ext1
- cases x
- rfl
- inv_hom_id' := by
- ext1
- cases x
- rfl
+ hom_inv_id' := by ext1; cases x; rfl
+ inv_hom_id' := by ext1; cases x; rfl
#align category_theory.limits.cone.equiv CategoryTheory.Limits.Cone.equiv
/- warning: category_theory.limits.cone.extensions -> CategoryTheory.Limits.Cone.extensions is a dubious translation:
@@ -272,14 +260,8 @@ def equiv (F : J ⥤ C) : Cocone F ≅ ΣX, F.cocones.obj X
inv c :=
{ pt := c.1
ι := c.2 }
- hom_inv_id' := by
- ext1
- cases x
- rfl
- inv_hom_id' := by
- ext1
- cases x
- rfl
+ hom_inv_id' := by ext1; cases x; rfl
+ inv_hom_id' := by ext1; cases x; rfl
#align category_theory.limits.cocone.equiv CategoryTheory.Limits.Cocone.equiv
/- warning: category_theory.limits.cocone.extensions -> CategoryTheory.Limits.Cocone.extensions is a dubious translation:
@@ -528,10 +510,7 @@ instance functorialityFull [Full G] [Faithful G] : Full (functoriality F G)
#print CategoryTheory.Limits.Cones.functorialityFaithful /-
instance functorialityFaithful [Faithful G] : Faithful (Cones.functoriality F G)
- where map_injective' X Y f g e := by
- ext1
- injection e
- apply G.map_injective h_1
+ where map_injective' X Y f g e := by ext1; injection e; apply G.map_injective h_1
#align category_theory.limits.cones.functoriality_faithful CategoryTheory.Limits.Cones.functorialityFaithful
-/
@@ -785,10 +764,7 @@ instance functorialityFull [Full G] [Faithful G] : Full (functoriality F G)
#print CategoryTheory.Limits.Cocones.functoriality_faithful /-
instance functoriality_faithful [Faithful G] : Faithful (functoriality F G)
- where map_injective' X Y f g e := by
- ext1
- injection e
- apply G.map_injective h_1
+ where map_injective' X Y f g e := by ext1; injection e; apply G.map_injective h_1
#align category_theory.limits.cocones.functoriality_faithful CategoryTheory.Limits.Cocones.functoriality_faithful
-/
@@ -820,12 +796,7 @@ def functorialityEquivalence (e : C ≌ D) : Cocone F ≌ Cocone (F ⋙ e.Functo
simp only [← equivalence.counit_inv_app_functor, iso.inv_hom_id_app, map_comp,
equivalence.fun_inv_map, assoc, id_comp, iso.inv_hom_id_app_assoc]
dsimp; simp))-- See note [dsimp, simp].
- fun c c' f => by
- ext
- dsimp
- simp
- dsimp
- simp }
+ fun c c' f => by ext; dsimp; simp; dsimp; simp }
#align category_theory.limits.cocones.functoriality_equivalence CategoryTheory.Limits.Cocones.functorialityEquivalence
#print CategoryTheory.Limits.Cocones.reflects_cocone_isomorphism /-
@@ -1181,50 +1152,22 @@ def coconeEquivalenceOpConeOp : Cocone F ≌ (Cone F.op)ᵒᵖ
map := fun X Y f =>
Quiver.Hom.op
{ Hom := f.Hom.op
- w' := fun j => by
- apply Quiver.Hom.unop_inj
- dsimp
- apply cocone_morphism.w } }
+ w' := fun j => by apply Quiver.Hom.unop_inj; dsimp; apply cocone_morphism.w } }
inverse :=
{ obj := fun c => Cone.unop (unop c)
map := fun X Y f =>
{ Hom := f.unop.Hom.unop
- w' := fun j => by
- apply Quiver.Hom.op_inj
- dsimp
- apply cone_morphism.w } }
+ w' := fun j => by apply Quiver.Hom.op_inj; dsimp; apply cone_morphism.w } }
unitIso :=
- NatIso.ofComponents
- (fun c =>
- Cocones.ext (Iso.refl _)
- (by
- dsimp
- simp))
- fun X Y f => by
- ext
+ NatIso.ofComponents (fun c => Cocones.ext (Iso.refl _) (by dsimp; simp)) fun X Y f => by ext;
simp
counitIso :=
NatIso.ofComponents
(fun c => by
induction c using Opposite.rec'
- dsimp
- apply iso.op
- exact
- cones.ext (iso.refl _)
- (by
- dsimp
- simp))
- fun X Y f =>
- Quiver.Hom.unop_inj
- (ConeMorphism.ext _ _
- (by
- dsimp
- simp))
- functor_unitIso_comp' c := by
- apply Quiver.Hom.unop_inj
- ext
- dsimp
- apply comp_id
+ dsimp; apply iso.op; exact cones.ext (iso.refl _) (by dsimp; simp))
+ fun X Y f => Quiver.Hom.unop_inj (ConeMorphism.ext _ _ (by dsimp; simp))
+ functor_unitIso_comp' c := by apply Quiver.Hom.unop_inj; ext; dsimp; apply comp_id
#align category_theory.limits.cocone_equivalence_op_cone_op CategoryTheory.Limits.coconeEquivalenceOpConeOp
attribute [simps] cocone_equivalence_op_cone_op
@@ -1279,9 +1222,7 @@ def coconeOfConeLeftOp (c : Cone F.leftOp) : Cocone F
Case conversion may be inaccurate. Consider using '#align category_theory.limits.cocone_of_cone_left_op_ι_app CategoryTheory.Limits.coconeOfConeLeftOp_ι_appₓ'. -/
@[simp]
theorem coconeOfConeLeftOp_ι_app (c : Cone F.leftOp) (j) :
- (coconeOfConeLeftOp c).ι.app j = (c.π.app (op j)).op :=
- by
- dsimp only [cocone_of_cone_left_op]
+ (coconeOfConeLeftOp c).ι.app j = (c.π.app (op j)).op := by dsimp only [cocone_of_cone_left_op];
simp
#align category_theory.limits.cocone_of_cone_left_op_ι_app CategoryTheory.Limits.coconeOfConeLeftOp_ι_app
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -184,10 +184,7 @@ instance inhabitedCocone (F : Discrete PUnit ⥤ C) : Inhabited (Cocone F) :=
-/
/- warning: category_theory.limits.cocone.w -> CategoryTheory.Limits.Cocone.w is a dubious translation:
-lean 3 declaration is
- forall {J : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} J] {C : Type.{u4}} [_inst_3 : CategoryTheory.Category.{u2, u4} C] {F : CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3} (c : CategoryTheory.Limits.Cocone.{u1, u2, u3, u4} J _inst_1 C _inst_3 F) {j : J} {j' : J} (f : Quiver.Hom.{succ u1, u3} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} J (CategoryTheory.Category.toCategoryStruct.{u1, u3} J _inst_1)) j j'), Eq.{succ u2} (Quiver.Hom.{succ u2, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} J _inst_1 C _inst_3 F j) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} J _inst_1 C _inst_3 (CategoryTheory.Functor.obj.{u2, max u3 u2, u4, max u1 u2 u3 u4} C _inst_3 (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.const.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Limits.Cocone.pt.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c)) j')) (CategoryTheory.CategoryStruct.comp.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} J _inst_1 C _inst_3 F j) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} J _inst_1 C _inst_3 F j') (CategoryTheory.Functor.obj.{u1, u2, u3, u4} J _inst_1 C _inst_3 (CategoryTheory.Functor.obj.{u2, max u3 u2, u4, max u1 u2 u3 u4} C _inst_3 (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.const.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Limits.Cocone.pt.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c)) j') (CategoryTheory.Functor.map.{u1, u2, u3, u4} J _inst_1 C _inst_3 F j j' f) (CategoryTheory.NatTrans.app.{u1, u2, u3, u4} J _inst_1 C _inst_3 F (CategoryTheory.Functor.obj.{u2, max u3 u2, u4, max u1 u2 u3 u4} C _inst_3 (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.const.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Limits.Cocone.pt.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c)) (CategoryTheory.Limits.Cocone.ι.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c) j')) (CategoryTheory.NatTrans.app.{u1, u2, u3, u4} J _inst_1 C _inst_3 F (CategoryTheory.Functor.obj.{u2, max u3 u2, u4, max u1 u2 u3 u4} C _inst_3 (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.const.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Limits.Cocone.pt.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c)) (CategoryTheory.Limits.Cocone.ι.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c) j)
-but is expected to have type
- forall {J : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} J] {C : Type.{u4}} [_inst_3 : CategoryTheory.Category.{u2, u4} C] {F : CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3} (c : CategoryTheory.Limits.Cocone.{u1, u2, u3, u4} J _inst_1 C _inst_3 F) {j : J} {j' : J} (f : Quiver.Hom.{succ u1, u3} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} J (CategoryTheory.Category.toCategoryStruct.{u1, u3} J _inst_1)) j j'), Eq.{succ u2} (Quiver.Hom.{succ u2, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) (Prefunctor.obj.{succ u1, succ u2, u3, u4} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} J (CategoryTheory.Category.toCategoryStruct.{u1, u3} J _inst_1)) C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} J _inst_1 C _inst_3 F) j) (Prefunctor.obj.{succ u1, succ u2, u3, u4} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} J (CategoryTheory.Category.toCategoryStruct.{u1, u3} J _inst_1)) C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} J _inst_1 C _inst_3 (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u4, max (max (max u3 u1) u2) u4} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max (max (max u3 u1) u4) u2} (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max (max (max u3 u1) u4) u2} (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 C _inst_3))) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u4, max (max (max u3 u1) u4) u2} C _inst_3 (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.const.{u1, u2, u3, u4} J _inst_1 C _inst_3)) (CategoryTheory.Limits.Cocone.pt.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c))) j')) (CategoryTheory.CategoryStruct.comp.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3) (Prefunctor.obj.{succ u1, succ u2, u3, u4} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} J (CategoryTheory.Category.toCategoryStruct.{u1, u3} J _inst_1)) C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} J _inst_1 C _inst_3 F) j) (Prefunctor.obj.{succ u1, succ u2, u3, u4} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} J (CategoryTheory.Category.toCategoryStruct.{u1, u3} J _inst_1)) C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} J _inst_1 C _inst_3 F) j') (Prefunctor.obj.{succ u1, succ u2, u3, u4} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} J (CategoryTheory.Category.toCategoryStruct.{u1, u3} J _inst_1)) C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} J _inst_1 C _inst_3 (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u4, max (max (max u3 u1) u2) u4} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max (max (max u3 u1) u4) u2} (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max (max (max u3 u1) u4) u2} (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 C _inst_3))) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u4, max (max (max u3 u1) u4) u2} C _inst_3 (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.const.{u1, u2, u3, u4} J _inst_1 C _inst_3)) (CategoryTheory.Limits.Cocone.pt.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c))) j') (Prefunctor.map.{succ u1, succ u2, u3, u4} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} J (CategoryTheory.Category.toCategoryStruct.{u1, u3} J _inst_1)) C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} J _inst_1 C _inst_3 F) j j' f) (CategoryTheory.NatTrans.app.{u1, u2, u3, u4} J _inst_1 C _inst_3 F (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u4, max (max (max u3 u1) u2) u4} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max (max (max u3 u1) u4) u2} (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max (max (max u3 u1) u4) u2} (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 C _inst_3))) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u4, max (max (max u3 u1) u4) u2} C _inst_3 (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.const.{u1, u2, u3, u4} J _inst_1 C _inst_3)) (CategoryTheory.Limits.Cocone.pt.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c)) (CategoryTheory.Limits.Cocone.ι.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c) j')) (CategoryTheory.NatTrans.app.{u1, u2, u3, u4} J _inst_1 C _inst_3 F (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u4, max (max (max u3 u1) u2) u4} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max (max (max u3 u1) u4) u2} (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max (max (max u3 u1) u4) u2} (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 C _inst_3))) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u4, max (max (max u3 u1) u4) u2} C _inst_3 (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.const.{u1, u2, u3, u4} J _inst_1 C _inst_3)) (CategoryTheory.Limits.Cocone.pt.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c)) (CategoryTheory.Limits.Cocone.ι.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c) j)
+<too large>
Case conversion may be inaccurate. Consider using '#align category_theory.limits.cocone.w CategoryTheory.Limits.Cocone.wₓ'. -/
@[simp, reassoc]
theorem Cocone.w {F : J ⥤ C} (c : Cocone F) {j j' : J} (f : j ⟶ j') :
@@ -1022,10 +1019,7 @@ def mapConePostcompose {α : F ⟶ G} {c} :
#align category_theory.functor.map_cone_postcompose CategoryTheory.Functor.mapConePostcompose
/- warning: category_theory.functor.map_cone_postcompose_equivalence_functor -> CategoryTheory.Functor.mapConePostcomposeEquivalenceFunctor is a dubious translation:
-lean 3 declaration is
- forall {J : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u1, u4} J] {C : Type.{u5}} [_inst_3 : CategoryTheory.Category.{u2, u5} C] {D : Type.{u6}} [_inst_4 : CategoryTheory.Category.{u3, u6} D] {F : CategoryTheory.Functor.{u1, u2, u4, u5} J _inst_1 C _inst_3} {G : CategoryTheory.Functor.{u1, u2, u4, u5} J _inst_1 C _inst_3} (H : CategoryTheory.Functor.{u2, u3, u5, u6} C _inst_3 D _inst_4) {α : CategoryTheory.Iso.{max u4 u2, max u1 u2 u4 u5} (CategoryTheory.Functor.{u1, u2, u4, u5} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u4, u5} J _inst_1 C _inst_3) F G} {c : CategoryTheory.Limits.Cone.{u1, u2, u4, u5} J _inst_1 C _inst_3 F}, CategoryTheory.Iso.{u3, max u4 u6 u3} (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G H)) (CategoryTheory.Limits.Cone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G H)) (CategoryTheory.Functor.mapCone.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G H (CategoryTheory.Functor.obj.{u2, u2, max u4 u5 u2, max u4 u5 u2} (CategoryTheory.Limits.Cone.{u1, u2, u4, u5} J _inst_1 C _inst_3 F) (CategoryTheory.Limits.Cone.category.{u1, u2, u4, u5} J _inst_1 C _inst_3 F) (CategoryTheory.Limits.Cone.{u1, u2, u4, u5} J _inst_1 C _inst_3 G) (CategoryTheory.Limits.Cone.category.{u1, u2, u4, u5} J _inst_1 C _inst_3 G) (CategoryTheory.Equivalence.functor.{u2, u2, max u4 u5 u2, max u4 u5 u2} (CategoryTheory.Limits.Cone.{u1, u2, u4, u5} J _inst_1 C _inst_3 F) (CategoryTheory.Limits.Cone.category.{u1, u2, u4, u5} J _inst_1 C _inst_3 F) (CategoryTheory.Limits.Cone.{u1, u2, u4, u5} J _inst_1 C _inst_3 G) (CategoryTheory.Limits.Cone.category.{u1, u2, u4, u5} J _inst_1 C _inst_3 G) (CategoryTheory.Limits.Cones.postcomposeEquivalence.{u1, u2, u4, u5} J _inst_1 C _inst_3 F G α)) c)) (CategoryTheory.Functor.obj.{u3, u3, max u4 u6 u3, max u4 u6 u3} (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) (CategoryTheory.Limits.Cone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G H)) (CategoryTheory.Limits.Cone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G H)) (CategoryTheory.Equivalence.functor.{u3, u3, max u4 u6 u3, max u4 u6 u3} (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) (CategoryTheory.Limits.Cone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G H)) (CategoryTheory.Limits.Cone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G H)) (CategoryTheory.Limits.Cones.postcomposeEquivalence.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H) (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G H) (CategoryTheory.isoWhiskerRight.{u4, u1, u5, u2, u6, u3} J _inst_1 C _inst_3 D _inst_4 F G α H))) (CategoryTheory.Functor.mapCone.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H c))
-but is expected to have type
- forall {J : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u1, u4} J] {C : Type.{u5}} [_inst_3 : CategoryTheory.Category.{u2, u5} C] {D : Type.{u6}} [_inst_4 : CategoryTheory.Category.{u3, u6} D] (F : CategoryTheory.Functor.{u2, u3, u5, u6} C _inst_3 D _inst_4) {G : CategoryTheory.Functor.{u1, u2, u4, u5} J _inst_1 C _inst_3} {H : CategoryTheory.Functor.{u1, u2, u4, u5} J _inst_1 C _inst_3} {α : CategoryTheory.Iso.{max u4 u2, max (max (max u4 u5) u1) u2} (CategoryTheory.Functor.{u1, u2, u4, u5} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u4, u5} J _inst_1 C _inst_3) G H} {c : CategoryTheory.Limits.Cone.{u1, u2, u4, u5} J _inst_1 C _inst_3 G}, CategoryTheory.Iso.{u3, max (max u6 u3) u4} (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 H F)) (CategoryTheory.Limits.Cone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 H F)) (CategoryTheory.Functor.mapCone.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H (Prefunctor.obj.{succ u2, succ u2, max (max u4 u5) u2, max (max u4 u5) u2} (CategoryTheory.Limits.Cone.{u1, u2, u4, u5} J _inst_1 C _inst_3 G) (CategoryTheory.CategoryStruct.toQuiver.{u2, max (max u4 u5) u2} (CategoryTheory.Limits.Cone.{u1, u2, u4, u5} J _inst_1 C _inst_3 G) (CategoryTheory.Category.toCategoryStruct.{u2, max (max u4 u5) u2} (CategoryTheory.Limits.Cone.{u1, u2, u4, u5} J _inst_1 C _inst_3 G) (CategoryTheory.Limits.Cone.category.{u1, u2, u4, u5} J _inst_1 C _inst_3 G))) (CategoryTheory.Limits.Cone.{u1, u2, u4, u5} J _inst_1 C _inst_3 H) (CategoryTheory.CategoryStruct.toQuiver.{u2, max (max u4 u5) u2} (CategoryTheory.Limits.Cone.{u1, u2, u4, u5} J _inst_1 C _inst_3 H) (CategoryTheory.Category.toCategoryStruct.{u2, max (max u4 u5) u2} (CategoryTheory.Limits.Cone.{u1, u2, u4, u5} J _inst_1 C _inst_3 H) (CategoryTheory.Limits.Cone.category.{u1, u2, u4, u5} J _inst_1 C _inst_3 H))) (CategoryTheory.Functor.toPrefunctor.{u2, u2, max (max u4 u5) u2, max (max u4 u5) u2} (CategoryTheory.Limits.Cone.{u1, u2, u4, u5} J _inst_1 C _inst_3 G) (CategoryTheory.Limits.Cone.category.{u1, u2, u4, u5} J _inst_1 C _inst_3 G) (CategoryTheory.Limits.Cone.{u1, u2, u4, u5} J _inst_1 C _inst_3 H) (CategoryTheory.Limits.Cone.category.{u1, u2, u4, u5} J _inst_1 C _inst_3 H) (CategoryTheory.Equivalence.functor.{u2, u2, max (max u4 u5) u2, max (max u4 u5) u2} (CategoryTheory.Limits.Cone.{u1, u2, u4, u5} J _inst_1 C _inst_3 G) (CategoryTheory.Limits.Cone.{u1, u2, u4, u5} J _inst_1 C _inst_3 H) (CategoryTheory.Limits.Cone.category.{u1, u2, u4, u5} J _inst_1 C _inst_3 G) (CategoryTheory.Limits.Cone.category.{u1, u2, u4, u5} J _inst_1 C _inst_3 H) (CategoryTheory.Limits.Cones.postcomposeEquivalence.{u1, u2, u4, u5} J _inst_1 C _inst_3 G H α))) c)) (Prefunctor.obj.{succ u3, succ u3, max (max u4 u6) u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G F)) (CategoryTheory.CategoryStruct.toQuiver.{u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G F)) (CategoryTheory.Category.toCategoryStruct.{u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G F)) (CategoryTheory.Limits.Cone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G F)))) (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 H F)) (CategoryTheory.CategoryStruct.toQuiver.{u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 H F)) (CategoryTheory.Category.toCategoryStruct.{u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 H F)) (CategoryTheory.Limits.Cone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 H F)))) (CategoryTheory.Functor.toPrefunctor.{u3, u3, max (max u4 u6) u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G F)) (CategoryTheory.Limits.Cone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G F)) (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 H F)) (CategoryTheory.Limits.Cone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 H F)) (CategoryTheory.Equivalence.functor.{u3, u3, max (max u4 u6) u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G F)) (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 H F)) (CategoryTheory.Limits.Cone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G F)) (CategoryTheory.Limits.Cone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 H F)) (CategoryTheory.Limits.Cones.postcomposeEquivalence.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G F) (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 H F) (CategoryTheory.isoWhiskerRight.{u4, u1, u5, u2, u6, u3} J _inst_1 C _inst_3 D _inst_4 G H α F)))) (CategoryTheory.Functor.mapCone.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F G c))
+<too large>
Case conversion may be inaccurate. Consider using '#align category_theory.functor.map_cone_postcompose_equivalence_functor CategoryTheory.Functor.mapConePostcomposeEquivalenceFunctorₓ'. -/
/-- `map_cone` commutes with `postcompose_equivalence`
-/
@@ -1081,10 +1075,7 @@ def mapCoconePrecompose {α : F ⟶ G} {c} :
#align category_theory.functor.map_cocone_precompose CategoryTheory.Functor.mapCoconePrecompose
/- warning: category_theory.functor.map_cocone_precompose_equivalence_functor -> CategoryTheory.Functor.mapCoconePrecomposeEquivalenceFunctor is a dubious translation:
-lean 3 declaration is
- forall {J : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u1, u4} J] {C : Type.{u5}} [_inst_3 : CategoryTheory.Category.{u2, u5} C] {D : Type.{u6}} [_inst_4 : CategoryTheory.Category.{u3, u6} D] {F : CategoryTheory.Functor.{u1, u2, u4, u5} J _inst_1 C _inst_3} {G : CategoryTheory.Functor.{u1, u2, u4, u5} J _inst_1 C _inst_3} (H : CategoryTheory.Functor.{u2, u3, u5, u6} C _inst_3 D _inst_4) {α : CategoryTheory.Iso.{max u4 u2, max u1 u2 u4 u5} (CategoryTheory.Functor.{u1, u2, u4, u5} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u4, u5} J _inst_1 C _inst_3) F G} {c : CategoryTheory.Limits.Cocone.{u1, u2, u4, u5} J _inst_1 C _inst_3 G}, CategoryTheory.Iso.{u3, max u4 u6 u3} (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) (CategoryTheory.Limits.Cocone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) (CategoryTheory.Functor.mapCocone.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H (CategoryTheory.Functor.obj.{u2, u2, max u4 u5 u2, max u4 u5 u2} (CategoryTheory.Limits.Cocone.{u1, u2, u4, u5} J _inst_1 C _inst_3 G) (CategoryTheory.Limits.Cocone.category.{u1, u2, u4, u5} J _inst_1 C _inst_3 G) (CategoryTheory.Limits.Cocone.{u1, u2, u4, u5} J _inst_1 C _inst_3 F) (CategoryTheory.Limits.Cocone.category.{u1, u2, u4, u5} J _inst_1 C _inst_3 F) (CategoryTheory.Equivalence.functor.{u2, u2, max u4 u5 u2, max u4 u5 u2} (CategoryTheory.Limits.Cocone.{u1, u2, u4, u5} J _inst_1 C _inst_3 G) (CategoryTheory.Limits.Cocone.category.{u1, u2, u4, u5} J _inst_1 C _inst_3 G) (CategoryTheory.Limits.Cocone.{u1, u2, u4, u5} J _inst_1 C _inst_3 F) (CategoryTheory.Limits.Cocone.category.{u1, u2, u4, u5} J _inst_1 C _inst_3 F) (CategoryTheory.Limits.Cocones.precomposeEquivalence.{u1, u2, u4, u5} J _inst_1 C _inst_3 G F α)) c)) (CategoryTheory.Functor.obj.{u3, u3, max u4 u6 u3, max u4 u6 u3} (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G H)) (CategoryTheory.Limits.Cocone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G H)) (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) (CategoryTheory.Limits.Cocone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) (CategoryTheory.Equivalence.functor.{u3, u3, max u4 u6 u3, max u4 u6 u3} (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G H)) (CategoryTheory.Limits.Cocone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G H)) (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) (CategoryTheory.Limits.Cocone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) (CategoryTheory.Limits.Cocones.precomposeEquivalence.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G H) (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H) (CategoryTheory.isoWhiskerRight.{u4, u1, u5, u2, u6, u3} J _inst_1 C _inst_3 D _inst_4 F G α H))) (CategoryTheory.Functor.mapCocone.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G H c))
-but is expected to have type
- forall {J : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u1, u4} J] {C : Type.{u5}} [_inst_3 : CategoryTheory.Category.{u2, u5} C] {D : Type.{u6}} [_inst_4 : CategoryTheory.Category.{u3, u6} D] (F : CategoryTheory.Functor.{u2, u3, u5, u6} C _inst_3 D _inst_4) {G : CategoryTheory.Functor.{u1, u2, u4, u5} J _inst_1 C _inst_3} {H : CategoryTheory.Functor.{u1, u2, u4, u5} J _inst_1 C _inst_3} {α : CategoryTheory.Iso.{max u4 u2, max (max (max u4 u5) u1) u2} (CategoryTheory.Functor.{u1, u2, u4, u5} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u4, u5} J _inst_1 C _inst_3) G H} {c : CategoryTheory.Limits.Cocone.{u1, u2, u4, u5} J _inst_1 C _inst_3 H}, CategoryTheory.Iso.{u3, max (max u6 u3) u4} (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G F)) (CategoryTheory.Limits.Cocone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G F)) (CategoryTheory.Functor.mapCocone.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F G (Prefunctor.obj.{succ u2, succ u2, max (max u4 u5) u2, max (max u4 u5) u2} (CategoryTheory.Limits.Cocone.{u1, u2, u4, u5} J _inst_1 C _inst_3 H) (CategoryTheory.CategoryStruct.toQuiver.{u2, max (max u4 u5) u2} (CategoryTheory.Limits.Cocone.{u1, u2, u4, u5} J _inst_1 C _inst_3 H) (CategoryTheory.Category.toCategoryStruct.{u2, max (max u4 u5) u2} (CategoryTheory.Limits.Cocone.{u1, u2, u4, u5} J _inst_1 C _inst_3 H) (CategoryTheory.Limits.Cocone.category.{u1, u2, u4, u5} J _inst_1 C _inst_3 H))) (CategoryTheory.Limits.Cocone.{u1, u2, u4, u5} J _inst_1 C _inst_3 G) (CategoryTheory.CategoryStruct.toQuiver.{u2, max (max u4 u5) u2} (CategoryTheory.Limits.Cocone.{u1, u2, u4, u5} J _inst_1 C _inst_3 G) (CategoryTheory.Category.toCategoryStruct.{u2, max (max u4 u5) u2} (CategoryTheory.Limits.Cocone.{u1, u2, u4, u5} J _inst_1 C _inst_3 G) (CategoryTheory.Limits.Cocone.category.{u1, u2, u4, u5} J _inst_1 C _inst_3 G))) (CategoryTheory.Functor.toPrefunctor.{u2, u2, max (max u4 u5) u2, max (max u4 u5) u2} (CategoryTheory.Limits.Cocone.{u1, u2, u4, u5} J _inst_1 C _inst_3 H) (CategoryTheory.Limits.Cocone.category.{u1, u2, u4, u5} J _inst_1 C _inst_3 H) (CategoryTheory.Limits.Cocone.{u1, u2, u4, u5} J _inst_1 C _inst_3 G) (CategoryTheory.Limits.Cocone.category.{u1, u2, u4, u5} J _inst_1 C _inst_3 G) (CategoryTheory.Equivalence.functor.{u2, u2, max (max u4 u5) u2, max (max u4 u5) u2} (CategoryTheory.Limits.Cocone.{u1, u2, u4, u5} J _inst_1 C _inst_3 H) (CategoryTheory.Limits.Cocone.{u1, u2, u4, u5} J _inst_1 C _inst_3 G) (CategoryTheory.Limits.Cocone.category.{u1, u2, u4, u5} J _inst_1 C _inst_3 H) (CategoryTheory.Limits.Cocone.category.{u1, u2, u4, u5} J _inst_1 C _inst_3 G) (CategoryTheory.Limits.Cocones.precomposeEquivalence.{u1, u2, u4, u5} J _inst_1 C _inst_3 H G α))) c)) (Prefunctor.obj.{succ u3, succ u3, max (max u4 u6) u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 H F)) (CategoryTheory.CategoryStruct.toQuiver.{u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 H F)) (CategoryTheory.Category.toCategoryStruct.{u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 H F)) (CategoryTheory.Limits.Cocone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 H F)))) (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G F)) (CategoryTheory.CategoryStruct.toQuiver.{u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G F)) (CategoryTheory.Category.toCategoryStruct.{u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G F)) (CategoryTheory.Limits.Cocone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G F)))) (CategoryTheory.Functor.toPrefunctor.{u3, u3, max (max u4 u6) u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 H F)) (CategoryTheory.Limits.Cocone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 H F)) (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G F)) (CategoryTheory.Limits.Cocone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G F)) (CategoryTheory.Equivalence.functor.{u3, u3, max (max u4 u6) u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 H F)) (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G F)) (CategoryTheory.Limits.Cocone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 H F)) (CategoryTheory.Limits.Cocone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G F)) (CategoryTheory.Limits.Cocones.precomposeEquivalence.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 H F) (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G F) (CategoryTheory.isoWhiskerRight.{u4, u1, u5, u2, u6, u3} J _inst_1 C _inst_3 D _inst_4 G H α F)))) (CategoryTheory.Functor.mapCocone.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H c))
+<too large>
Case conversion may be inaccurate. Consider using '#align category_theory.functor.map_cocone_precompose_equivalence_functor CategoryTheory.Functor.mapCoconePrecomposeEquivalenceFunctorₓ'. -/
/-- `map_cocone` commutes with `precompose_equivalence`
-/
@@ -1284,10 +1275,7 @@ def coconeOfConeLeftOp (c : Cone F.leftOp) : Cocone F
-/
/- warning: category_theory.limits.cocone_of_cone_left_op_ι_app -> CategoryTheory.Limits.coconeOfConeLeftOp_ι_app is a dubious translation:
-lean 3 declaration is
- forall {J : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} J] {C : Type.{u4}} [_inst_3 : CategoryTheory.Category.{u2, u4} C] {F : CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3)} (c : CategoryTheory.Limits.Cone.{u1, u2, u3, u4} (Opposite.{succ u3} J) (CategoryTheory.Category.opposite.{u1, u3} J _inst_1) C _inst_3 (CategoryTheory.Functor.leftOp.{u1, u2, u3, u4} J _inst_1 C _inst_3 F)) (j : J), Eq.{succ u2} (Quiver.Hom.{succ u2, u4} (Opposite.{succ u4} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} (Opposite.{succ u4} C) (CategoryTheory.Category.toCategoryStruct.{u2, u4} (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3))) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} J _inst_1 (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3) F j) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} J _inst_1 (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3) (CategoryTheory.Functor.obj.{u2, max u3 u2, u4, max u1 u2 u3 u4} (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3) (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3)) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3)) (CategoryTheory.Functor.const.{u1, u2, u3, u4} J _inst_1 (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3)) (CategoryTheory.Limits.Cocone.pt.{u1, u2, u3, u4} J _inst_1 (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3) F (CategoryTheory.Limits.coconeOfConeLeftOp.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c))) j)) (CategoryTheory.NatTrans.app.{u1, u2, u3, u4} J _inst_1 (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3) F (CategoryTheory.Functor.obj.{u2, max u3 u2, u4, max u1 u2 u3 u4} (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3) (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3)) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3)) (CategoryTheory.Functor.const.{u1, u2, u3, u4} J _inst_1 (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3)) (CategoryTheory.Limits.Cocone.pt.{u1, u2, u3, u4} J _inst_1 (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3) F (CategoryTheory.Limits.coconeOfConeLeftOp.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c))) (CategoryTheory.Limits.Cocone.ι.{u1, u2, u3, u4} J _inst_1 (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3) F (CategoryTheory.Limits.coconeOfConeLeftOp.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c)) j) (Quiver.Hom.op.{u4, succ u2} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} (Opposite.{succ u3} J) (CategoryTheory.Category.opposite.{u1, u3} J _inst_1) C _inst_3 (CategoryTheory.Functor.obj.{u2, max u3 u2, u4, max u1 u2 u3 u4} C _inst_3 (CategoryTheory.Functor.{u1, u2, u3, u4} (Opposite.{succ u3} J) (CategoryTheory.Category.opposite.{u1, u3} J _inst_1) C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} (Opposite.{succ u3} J) (CategoryTheory.Category.opposite.{u1, u3} J _inst_1) C _inst_3) (CategoryTheory.Functor.const.{u1, u2, u3, u4} (Opposite.{succ u3} J) (CategoryTheory.Category.opposite.{u1, u3} J _inst_1) C _inst_3) (CategoryTheory.Limits.Cone.pt.{u1, u2, u3, u4} (Opposite.{succ u3} J) (CategoryTheory.Category.opposite.{u1, u3} J _inst_1) C _inst_3 (CategoryTheory.Functor.leftOp.{u1, u2, u3, u4} J _inst_1 C _inst_3 F) c)) (Opposite.op.{succ u3} J j)) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} (Opposite.{succ u3} J) (CategoryTheory.Category.opposite.{u1, u3} J _inst_1) C _inst_3 (CategoryTheory.Functor.leftOp.{u1, u2, u3, u4} J _inst_1 C _inst_3 F) (Opposite.op.{succ u3} J j)) (CategoryTheory.NatTrans.app.{u1, u2, u3, u4} (Opposite.{succ u3} J) (CategoryTheory.Category.opposite.{u1, u3} J _inst_1) C _inst_3 (CategoryTheory.Functor.obj.{u2, max u3 u2, u4, max u1 u2 u3 u4} C _inst_3 (CategoryTheory.Functor.{u1, u2, u3, u4} (Opposite.{succ u3} J) (CategoryTheory.Category.opposite.{u1, u3} J _inst_1) C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} (Opposite.{succ u3} J) (CategoryTheory.Category.opposite.{u1, u3} J _inst_1) C _inst_3) (CategoryTheory.Functor.const.{u1, u2, u3, u4} (Opposite.{succ u3} J) (CategoryTheory.Category.opposite.{u1, u3} J _inst_1) C _inst_3) (CategoryTheory.Limits.Cone.pt.{u1, u2, u3, u4} (Opposite.{succ u3} J) (CategoryTheory.Category.opposite.{u1, u3} J _inst_1) C _inst_3 (CategoryTheory.Functor.leftOp.{u1, u2, u3, u4} J _inst_1 C _inst_3 F) c)) (CategoryTheory.Functor.leftOp.{u1, u2, u3, u4} J _inst_1 C _inst_3 F) (CategoryTheory.Limits.Cone.π.{u1, u2, u3, u4} (Opposite.{succ u3} J) (CategoryTheory.Category.opposite.{u1, u3} J _inst_1) C _inst_3 (CategoryTheory.Functor.leftOp.{u1, u2, u3, u4} J _inst_1 C _inst_3 F) c) (Opposite.op.{succ u3} J j)))
-but is expected to have type
- forall {J : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} J] {C : Type.{u4}} [_inst_3 : CategoryTheory.Category.{u2, u4} C] {F : CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3)} (c : CategoryTheory.Limits.Cone.{u1, u2, u3, u4} (Opposite.{succ u3} J) (CategoryTheory.Category.opposite.{u1, u3} J _inst_1) C _inst_3 (CategoryTheory.Functor.leftOp.{u1, u2, u3, u4} J _inst_1 C _inst_3 F)) (j : J), Eq.{succ u2} (Quiver.Hom.{succ u2, u4} (Opposite.{succ u4} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} (Opposite.{succ u4} C) (CategoryTheory.Category.toCategoryStruct.{u2, u4} (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3))) (Prefunctor.obj.{succ u1, succ u2, u3, u4} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} J (CategoryTheory.Category.toCategoryStruct.{u1, u3} J _inst_1)) (Opposite.{succ u4} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} (Opposite.{succ u4} C) (CategoryTheory.Category.toCategoryStruct.{u2, u4} (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3))) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} J _inst_1 (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3) F) j) (Prefunctor.obj.{succ u1, succ u2, u3, u4} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} J (CategoryTheory.Category.toCategoryStruct.{u1, u3} J _inst_1)) (Opposite.{succ u4} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} (Opposite.{succ u4} C) (CategoryTheory.Category.toCategoryStruct.{u2, u4} (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3))) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} J _inst_1 (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3) (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u4, max (max (max u3 u1) u2) u4} (Opposite.{succ u4} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} (Opposite.{succ u4} C) (CategoryTheory.Category.toCategoryStruct.{u2, u4} (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3))) (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3)) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max (max (max u3 u1) u4) u2} (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3)) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max (max (max u3 u1) u4) u2} (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3)) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3)))) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u4, max (max (max u3 u1) u4) u2} (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3) (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3)) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3)) (CategoryTheory.Functor.const.{u1, u2, u3, u4} J _inst_1 (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3))) (CategoryTheory.Limits.Cocone.pt.{u1, u2, u3, u4} J _inst_1 (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3) F (CategoryTheory.Limits.coconeOfConeLeftOp.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c)))) j)) (CategoryTheory.NatTrans.app.{u1, u2, u3, u4} J _inst_1 (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3) F (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u4, max (max (max u3 u1) u2) u4} (Opposite.{succ u4} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} (Opposite.{succ u4} C) (CategoryTheory.Category.toCategoryStruct.{u2, u4} (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3))) (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3)) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max (max (max u3 u1) u4) u2} (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3)) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max (max (max u3 u1) u4) u2} (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3)) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3)))) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u4, max (max (max u3 u1) u4) u2} (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3) (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3)) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3)) (CategoryTheory.Functor.const.{u1, u2, u3, u4} J _inst_1 (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3))) (CategoryTheory.Limits.Cocone.pt.{u1, u2, u3, u4} J _inst_1 (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3) F (CategoryTheory.Limits.coconeOfConeLeftOp.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c))) (CategoryTheory.Limits.Cocone.ι.{u1, u2, u3, u4} J _inst_1 (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3) F (CategoryTheory.Limits.coconeOfConeLeftOp.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c)) j) (Quiver.Hom.op.{u4, succ u2} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) (Prefunctor.obj.{succ u1, succ u2, u3, u4} (Opposite.{succ u3} J) (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} (Opposite.{succ u3} J) (CategoryTheory.Category.toCategoryStruct.{u1, u3} (Opposite.{succ u3} J) (CategoryTheory.Category.opposite.{u1, u3} J _inst_1))) C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} (Opposite.{succ u3} J) (CategoryTheory.Category.opposite.{u1, u3} J _inst_1) C _inst_3 (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u4, max (max (max u3 u1) u2) u4} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) (CategoryTheory.Functor.{u1, u2, u3, u4} (Opposite.{succ u3} J) (CategoryTheory.Category.opposite.{u1, u3} J _inst_1) C _inst_3) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max (max (max u3 u1) u4) u2} (CategoryTheory.Functor.{u1, u2, u3, u4} (Opposite.{succ u3} J) (CategoryTheory.Category.opposite.{u1, u3} J _inst_1) C _inst_3) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max (max (max u3 u1) u4) u2} (CategoryTheory.Functor.{u1, u2, u3, u4} (Opposite.{succ u3} J) (CategoryTheory.Category.opposite.{u1, u3} J _inst_1) C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} (Opposite.{succ u3} J) (CategoryTheory.Category.opposite.{u1, u3} J _inst_1) C _inst_3))) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u4, max (max (max u3 u1) u4) u2} C _inst_3 (CategoryTheory.Functor.{u1, u2, u3, u4} (Opposite.{succ u3} J) (CategoryTheory.Category.opposite.{u1, u3} J _inst_1) C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} (Opposite.{succ u3} J) (CategoryTheory.Category.opposite.{u1, u3} J _inst_1) C _inst_3) (CategoryTheory.Functor.const.{u1, u2, u3, u4} (Opposite.{succ u3} J) (CategoryTheory.Category.opposite.{u1, u3} J _inst_1) C _inst_3)) (CategoryTheory.Limits.Cone.pt.{u1, u2, u3, u4} (Opposite.{succ u3} J) (CategoryTheory.Category.opposite.{u1, u3} J _inst_1) C _inst_3 (CategoryTheory.Functor.leftOp.{u1, u2, u3, u4} J _inst_1 C _inst_3 F) c))) (Opposite.op.{succ u3} J j)) (Prefunctor.obj.{succ u1, succ u2, u3, u4} (Opposite.{succ u3} J) (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} (Opposite.{succ u3} J) (CategoryTheory.Category.toCategoryStruct.{u1, u3} (Opposite.{succ u3} J) (CategoryTheory.Category.opposite.{u1, u3} J _inst_1))) C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} (Opposite.{succ u3} J) (CategoryTheory.Category.opposite.{u1, u3} J _inst_1) C _inst_3 (CategoryTheory.Functor.leftOp.{u1, u2, u3, u4} J _inst_1 C _inst_3 F)) (Opposite.op.{succ u3} J j)) (CategoryTheory.NatTrans.app.{u1, u2, u3, u4} (Opposite.{succ u3} J) (CategoryTheory.Category.opposite.{u1, u3} J _inst_1) C _inst_3 (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u4, max (max (max u3 u1) u2) u4} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) (CategoryTheory.Functor.{u1, u2, u3, u4} (Opposite.{succ u3} J) (CategoryTheory.Category.opposite.{u1, u3} J _inst_1) C _inst_3) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max (max (max u3 u1) u4) u2} (CategoryTheory.Functor.{u1, u2, u3, u4} (Opposite.{succ u3} J) (CategoryTheory.Category.opposite.{u1, u3} J _inst_1) C _inst_3) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max (max (max u3 u1) u4) u2} (CategoryTheory.Functor.{u1, u2, u3, u4} (Opposite.{succ u3} J) (CategoryTheory.Category.opposite.{u1, u3} J _inst_1) C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} (Opposite.{succ u3} J) (CategoryTheory.Category.opposite.{u1, u3} J _inst_1) C _inst_3))) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u4, max (max (max u3 u1) u4) u2} C _inst_3 (CategoryTheory.Functor.{u1, u2, u3, u4} (Opposite.{succ u3} J) (CategoryTheory.Category.opposite.{u1, u3} J _inst_1) C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} (Opposite.{succ u3} J) (CategoryTheory.Category.opposite.{u1, u3} J _inst_1) C _inst_3) (CategoryTheory.Functor.const.{u1, u2, u3, u4} (Opposite.{succ u3} J) (CategoryTheory.Category.opposite.{u1, u3} J _inst_1) C _inst_3)) (CategoryTheory.Limits.Cone.pt.{u1, u2, u3, u4} (Opposite.{succ u3} J) (CategoryTheory.Category.opposite.{u1, u3} J _inst_1) C _inst_3 (CategoryTheory.Functor.leftOp.{u1, u2, u3, u4} J _inst_1 C _inst_3 F) c)) (CategoryTheory.Functor.leftOp.{u1, u2, u3, u4} J _inst_1 C _inst_3 F) (CategoryTheory.Limits.Cone.π.{u1, u2, u3, u4} (Opposite.{succ u3} J) (CategoryTheory.Category.opposite.{u1, u3} J _inst_1) C _inst_3 (CategoryTheory.Functor.leftOp.{u1, u2, u3, u4} J _inst_1 C _inst_3 F) c) (Opposite.op.{succ u3} J j)))
+<too large>
Case conversion may be inaccurate. Consider using '#align category_theory.limits.cocone_of_cone_left_op_ι_app CategoryTheory.Limits.coconeOfConeLeftOp_ι_appₓ'. -/
@[simp]
theorem coconeOfConeLeftOp_ι_app (c : Cone F.leftOp) (j) :
mathlib commit https://github.com/leanprover-community/mathlib/commit/75e7fca56381d056096ce5d05e938f63a6567828
@@ -155,7 +155,7 @@ lean 3 declaration is
but is expected to have type
forall {J : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} J] {C : Type.{u4}} [_inst_3 : CategoryTheory.Category.{u2, u4} C] {F : CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3} (c : CategoryTheory.Limits.Cone.{u1, u2, u3, u4} J _inst_1 C _inst_3 F) {j : J} {j' : J} (f : Quiver.Hom.{succ u1, u3} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} J (CategoryTheory.Category.toCategoryStruct.{u1, u3} J _inst_1)) j j'), Eq.{succ u2} (Quiver.Hom.{succ u2, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) (Prefunctor.obj.{succ u1, succ u2, u3, u4} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} J (CategoryTheory.Category.toCategoryStruct.{u1, u3} J _inst_1)) C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} J _inst_1 C _inst_3 (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u4, max (max (max u3 u1) u2) u4} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max (max (max u3 u1) u4) u2} (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max (max (max u3 u1) u4) u2} (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 C _inst_3))) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u4, max (max (max u3 u1) u4) u2} C _inst_3 (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.const.{u1, u2, u3, u4} J _inst_1 C _inst_3)) (CategoryTheory.Limits.Cone.pt.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c))) j) (Prefunctor.obj.{succ u1, succ u2, u3, u4} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} J (CategoryTheory.Category.toCategoryStruct.{u1, u3} J _inst_1)) C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} J _inst_1 C _inst_3 F) j')) (CategoryTheory.CategoryStruct.comp.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3) (Prefunctor.obj.{succ u1, succ u2, u3, u4} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} J (CategoryTheory.Category.toCategoryStruct.{u1, u3} J _inst_1)) C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} J _inst_1 C _inst_3 (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u4, max (max (max u3 u1) u2) u4} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max (max (max u3 u1) u4) u2} (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max (max (max u3 u1) u4) u2} (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 C _inst_3))) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u4, max (max (max u3 u1) u4) u2} C _inst_3 (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.const.{u1, u2, u3, u4} J _inst_1 C _inst_3)) (CategoryTheory.Limits.Cone.pt.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c))) j) (Prefunctor.obj.{succ u1, succ u2, u3, u4} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} J (CategoryTheory.Category.toCategoryStruct.{u1, u3} J _inst_1)) C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} J _inst_1 C _inst_3 F) j) (Prefunctor.obj.{succ u1, succ u2, u3, u4} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} J (CategoryTheory.Category.toCategoryStruct.{u1, u3} J _inst_1)) C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} J _inst_1 C _inst_3 F) j') (CategoryTheory.NatTrans.app.{u1, u2, u3, u4} J _inst_1 C _inst_3 (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u4, max (max (max u3 u1) u2) u4} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max (max (max u3 u1) u4) u2} (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max (max (max u3 u1) u4) u2} (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 C _inst_3))) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u4, max (max (max u3 u1) u4) u2} C _inst_3 (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.const.{u1, u2, u3, u4} J _inst_1 C _inst_3)) (CategoryTheory.Limits.Cone.pt.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c)) F (CategoryTheory.Limits.Cone.π.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c) j) (Prefunctor.map.{succ u1, succ u2, u3, u4} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} J (CategoryTheory.Category.toCategoryStruct.{u1, u3} J _inst_1)) C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} J _inst_1 C _inst_3 F) j j' f)) (CategoryTheory.NatTrans.app.{u1, u2, u3, u4} J _inst_1 C _inst_3 (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u4, max (max (max u3 u1) u2) u4} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max (max (max u3 u1) u4) u2} (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max (max (max u3 u1) u4) u2} (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 C _inst_3))) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u4, max (max (max u3 u1) u4) u2} C _inst_3 (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.const.{u1, u2, u3, u4} J _inst_1 C _inst_3)) (CategoryTheory.Limits.Cone.pt.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c)) F (CategoryTheory.Limits.Cone.π.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c) j')
Case conversion may be inaccurate. Consider using '#align category_theory.limits.cone.w CategoryTheory.Limits.Cone.wₓ'. -/
-@[simp, reassoc.1]
+@[simp, reassoc]
theorem Cone.w {F : J ⥤ C} (c : Cone F) {j j' : J} (f : j ⟶ j') :
c.π.app j ≫ F.map f = c.π.app j' :=
by
@@ -189,7 +189,7 @@ lean 3 declaration is
but is expected to have type
forall {J : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} J] {C : Type.{u4}} [_inst_3 : CategoryTheory.Category.{u2, u4} C] {F : CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3} (c : CategoryTheory.Limits.Cocone.{u1, u2, u3, u4} J _inst_1 C _inst_3 F) {j : J} {j' : J} (f : Quiver.Hom.{succ u1, u3} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} J (CategoryTheory.Category.toCategoryStruct.{u1, u3} J _inst_1)) j j'), Eq.{succ u2} (Quiver.Hom.{succ u2, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) (Prefunctor.obj.{succ u1, succ u2, u3, u4} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} J (CategoryTheory.Category.toCategoryStruct.{u1, u3} J _inst_1)) C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} J _inst_1 C _inst_3 F) j) (Prefunctor.obj.{succ u1, succ u2, u3, u4} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} J (CategoryTheory.Category.toCategoryStruct.{u1, u3} J _inst_1)) C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} J _inst_1 C _inst_3 (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u4, max (max (max u3 u1) u2) u4} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max (max (max u3 u1) u4) u2} (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max (max (max u3 u1) u4) u2} (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 C _inst_3))) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u4, max (max (max u3 u1) u4) u2} C _inst_3 (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.const.{u1, u2, u3, u4} J _inst_1 C _inst_3)) (CategoryTheory.Limits.Cocone.pt.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c))) j')) (CategoryTheory.CategoryStruct.comp.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3) (Prefunctor.obj.{succ u1, succ u2, u3, u4} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} J (CategoryTheory.Category.toCategoryStruct.{u1, u3} J _inst_1)) C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} J _inst_1 C _inst_3 F) j) (Prefunctor.obj.{succ u1, succ u2, u3, u4} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} J (CategoryTheory.Category.toCategoryStruct.{u1, u3} J _inst_1)) C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} J _inst_1 C _inst_3 F) j') (Prefunctor.obj.{succ u1, succ u2, u3, u4} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} J (CategoryTheory.Category.toCategoryStruct.{u1, u3} J _inst_1)) C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} J _inst_1 C _inst_3 (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u4, max (max (max u3 u1) u2) u4} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max (max (max u3 u1) u4) u2} (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max (max (max u3 u1) u4) u2} (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 C _inst_3))) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u4, max (max (max u3 u1) u4) u2} C _inst_3 (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.const.{u1, u2, u3, u4} J _inst_1 C _inst_3)) (CategoryTheory.Limits.Cocone.pt.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c))) j') (Prefunctor.map.{succ u1, succ u2, u3, u4} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} J (CategoryTheory.Category.toCategoryStruct.{u1, u3} J _inst_1)) C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} J _inst_1 C _inst_3 F) j j' f) (CategoryTheory.NatTrans.app.{u1, u2, u3, u4} J _inst_1 C _inst_3 F (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u4, max (max (max u3 u1) u2) u4} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max (max (max u3 u1) u4) u2} (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max (max (max u3 u1) u4) u2} (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 C _inst_3))) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u4, max (max (max u3 u1) u4) u2} C _inst_3 (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.const.{u1, u2, u3, u4} J _inst_1 C _inst_3)) (CategoryTheory.Limits.Cocone.pt.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c)) (CategoryTheory.Limits.Cocone.ι.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c) j')) (CategoryTheory.NatTrans.app.{u1, u2, u3, u4} J _inst_1 C _inst_3 F (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u4, max (max (max u3 u1) u2) u4} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max (max (max u3 u1) u4) u2} (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max (max (max u3 u1) u4) u2} (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 C _inst_3))) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u4, max (max (max u3 u1) u4) u2} C _inst_3 (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.const.{u1, u2, u3, u4} J _inst_1 C _inst_3)) (CategoryTheory.Limits.Cocone.pt.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c)) (CategoryTheory.Limits.Cocone.ι.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c) j)
Case conversion may be inaccurate. Consider using '#align category_theory.limits.cocone.w CategoryTheory.Limits.Cocone.wₓ'. -/
-@[simp, reassoc.1]
+@[simp, reassoc]
theorem Cocone.w {F : J ⥤ C} (c : Cocone F) {j j' : J} (f : j ⟶ j') :
F.map f ≫ c.ι.app j' = c.ι.app j :=
by
@@ -332,7 +332,7 @@ structure ConeMorphism (A B : Cone F) where
restate_axiom cone_morphism.w'
-attribute [simp, reassoc.1] cone_morphism.w
+attribute [simp, reassoc] cone_morphism.w
#print CategoryTheory.Limits.inhabitedConeMorphism /-
instance inhabitedConeMorphism (A : Cone F) : Inhabited (ConeMorphism A A) :=
@@ -594,7 +594,7 @@ instance inhabitedCoconeMorphism (A : Cocone F) : Inhabited (CoconeMorphism A A)
restate_axiom cocone_morphism.w'
-attribute [simp, reassoc.1] cocone_morphism.w
+attribute [simp, reassoc] cocone_morphism.w
#print CategoryTheory.Limits.Cocone.category /-
@[simps]
mathlib commit https://github.com/leanprover-community/mathlib/commit/49b7f94aab3a3bdca1f9f34c5d818afb253b3993
@@ -1177,7 +1177,7 @@ variable (F)
lean 3 declaration is
forall {J : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} J] {C : Type.{u4}} [_inst_3 : CategoryTheory.Category.{u2, u4} C] (F : CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3), CategoryTheory.Equivalence.{u2, u2, max u3 u4 u2, max u3 u4 u2} (CategoryTheory.Limits.Cocone.{u1, u2, u3, u4} J _inst_1 C _inst_3 F) (CategoryTheory.Limits.Cocone.category.{u1, u2, u3, u4} J _inst_1 C _inst_3 F) (Opposite.{succ (max u3 u4 u2)} (CategoryTheory.Limits.Cone.{u1, u2, u3, u4} (Opposite.{succ u3} J) (CategoryTheory.Category.opposite.{u1, u3} J _inst_1) (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3) (CategoryTheory.Functor.op.{u1, u2, u3, u4} J _inst_1 C _inst_3 F))) (CategoryTheory.Category.opposite.{u2, max u3 u4 u2} (CategoryTheory.Limits.Cone.{u1, u2, u3, u4} (Opposite.{succ u3} J) (CategoryTheory.Category.opposite.{u1, u3} J _inst_1) (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3) (CategoryTheory.Functor.op.{u1, u2, u3, u4} J _inst_1 C _inst_3 F)) (CategoryTheory.Limits.Cone.category.{u1, u2, u3, u4} (Opposite.{succ u3} J) (CategoryTheory.Category.opposite.{u1, u3} J _inst_1) (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3) (CategoryTheory.Functor.op.{u1, u2, u3, u4} J _inst_1 C _inst_3 F)))
but is expected to have type
- forall {J : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} J] {C : Type.{u4}} [_inst_3 : CategoryTheory.Category.{u2, u4} C] (F : CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3), CategoryTheory.Equivalence.{u2, u2, max (max u4 u3) u2, max (max u4 u3) u2} (CategoryTheory.Limits.Cocone.{u1, u2, u3, u4} J _inst_1 C _inst_3 F) (Opposite.{succ (max (max u4 u3) u2)} (CategoryTheory.Limits.Cone.{u1, u2, u3, u4} (Opposite.{succ u3} J) (CategoryTheory.Category.opposite.{u1, u3} J _inst_1) (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3) (CategoryTheory.Functor.op.{u1, u2, u3, u4} J _inst_1 C _inst_3 F))) (CategoryTheory.Limits.Cocone.category.{u1, u2, u3, u4} J _inst_1 C _inst_3 F) (CategoryTheory.Category.opposite.{u2, max (max u3 u4) u2} (CategoryTheory.Limits.Cone.{u1, u2, u3, u4} (Opposite.{succ u3} J) (CategoryTheory.Category.opposite.{u1, u3} J _inst_1) (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3) (CategoryTheory.Functor.op.{u1, u2, u3, u4} J _inst_1 C _inst_3 F)) (CategoryTheory.Limits.Cone.category.{u1, u2, u3, u4} (Opposite.{succ u3} J) (CategoryTheory.Category.opposite.{u1, u3} J _inst_1) (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3) (CategoryTheory.Functor.op.{u1, u2, u3, u4} J _inst_1 C _inst_3 F)))
+ forall {J : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} J] {C : Type.{u4}} [_inst_3 : CategoryTheory.Category.{u2, u4} C] (F : CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3), CategoryTheory.Equivalence.{u2, u2, max (max u4 u3) u2, max (max u3 u4) u2} (CategoryTheory.Limits.Cocone.{u1, u2, u3, u4} J _inst_1 C _inst_3 F) (Opposite.{max (max (succ u4) (succ u3)) (succ u2)} (CategoryTheory.Limits.Cone.{u1, u2, u3, u4} (Opposite.{succ u3} J) (CategoryTheory.Category.opposite.{u1, u3} J _inst_1) (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3) (CategoryTheory.Functor.op.{u1, u2, u3, u4} J _inst_1 C _inst_3 F))) (CategoryTheory.Limits.Cocone.category.{u1, u2, u3, u4} J _inst_1 C _inst_3 F) (CategoryTheory.Category.opposite.{u2, max (max u3 u4) u2} (CategoryTheory.Limits.Cone.{u1, u2, u3, u4} (Opposite.{succ u3} J) (CategoryTheory.Category.opposite.{u1, u3} J _inst_1) (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3) (CategoryTheory.Functor.op.{u1, u2, u3, u4} J _inst_1 C _inst_3 F)) (CategoryTheory.Limits.Cone.category.{u1, u2, u3, u4} (Opposite.{succ u3} J) (CategoryTheory.Category.opposite.{u1, u3} J _inst_1) (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3) (CategoryTheory.Functor.op.{u1, u2, u3, u4} J _inst_1 C _inst_3 F)))
Case conversion may be inaccurate. Consider using '#align category_theory.limits.cocone_equivalence_op_cone_op CategoryTheory.Limits.coconeEquivalenceOpConeOpₓ'. -/
/-- The category of cocones on `F`
is equivalent to the opposite category of
@@ -1215,7 +1215,7 @@ def coconeEquivalenceOpConeOp : Cocone F ≌ (Cone F.op)ᵒᵖ
counitIso :=
NatIso.ofComponents
(fun c => by
- induction c using Opposite.rec
+ induction c using Opposite.rec'
dsimp
apply iso.op
exact
mathlib commit https://github.com/leanprover-community/mathlib/commit/3b267e70a936eebb21ab546f49a8df34dd300b25
@@ -859,84 +859,124 @@ variable {F : J ⥤ C} {G : J ⥤ C} (H : C ⥤ D)
open CategoryTheory.Limits
-#print CategoryTheory.Functor.mapCone /-
+/- warning: category_theory.functor.map_cone -> CategoryTheory.Functor.mapCone is a dubious translation:
+lean 3 declaration is
+ forall {J : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u1, u4} J] {C : Type.{u5}} [_inst_3 : CategoryTheory.Category.{u2, u5} C] {D : Type.{u6}} [_inst_4 : CategoryTheory.Category.{u3, u6} D] {F : CategoryTheory.Functor.{u1, u2, u4, u5} J _inst_1 C _inst_3} (H : CategoryTheory.Functor.{u2, u3, u5, u6} C _inst_3 D _inst_4), (CategoryTheory.Limits.Cone.{u1, u2, u4, u5} J _inst_1 C _inst_3 F) -> (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H))
+but is expected to have type
+ forall {J : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u1, u4} J] {C : Type.{u5}} [_inst_3 : CategoryTheory.Category.{u2, u5} C] {D : Type.{u6}} [_inst_4 : CategoryTheory.Category.{u3, u6} D] (F : CategoryTheory.Functor.{u2, u3, u5, u6} C _inst_3 D _inst_4) {H : CategoryTheory.Functor.{u1, u2, u4, u5} J _inst_1 C _inst_3}, (CategoryTheory.Limits.Cone.{u1, u2, u4, u5} J _inst_1 C _inst_3 H) -> (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 H F))
+Case conversion may be inaccurate. Consider using '#align category_theory.functor.map_cone CategoryTheory.Functor.mapConeₓ'. -/
/-- The image of a cone in C under a functor G : C ⥤ D is a cone in D. -/
@[simps]
def mapCone (c : Cone F) : Cone (F ⋙ H) :=
(Cones.functoriality F H).obj c
#align category_theory.functor.map_cone CategoryTheory.Functor.mapCone
--/
-#print CategoryTheory.Functor.mapCocone /-
+/- warning: category_theory.functor.map_cocone -> CategoryTheory.Functor.mapCocone is a dubious translation:
+lean 3 declaration is
+ forall {J : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u1, u4} J] {C : Type.{u5}} [_inst_3 : CategoryTheory.Category.{u2, u5} C] {D : Type.{u6}} [_inst_4 : CategoryTheory.Category.{u3, u6} D] {F : CategoryTheory.Functor.{u1, u2, u4, u5} J _inst_1 C _inst_3} (H : CategoryTheory.Functor.{u2, u3, u5, u6} C _inst_3 D _inst_4), (CategoryTheory.Limits.Cocone.{u1, u2, u4, u5} J _inst_1 C _inst_3 F) -> (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H))
+but is expected to have type
+ forall {J : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u1, u4} J] {C : Type.{u5}} [_inst_3 : CategoryTheory.Category.{u2, u5} C] {D : Type.{u6}} [_inst_4 : CategoryTheory.Category.{u3, u6} D] (F : CategoryTheory.Functor.{u2, u3, u5, u6} C _inst_3 D _inst_4) {H : CategoryTheory.Functor.{u1, u2, u4, u5} J _inst_1 C _inst_3}, (CategoryTheory.Limits.Cocone.{u1, u2, u4, u5} J _inst_1 C _inst_3 H) -> (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 H F))
+Case conversion may be inaccurate. Consider using '#align category_theory.functor.map_cocone CategoryTheory.Functor.mapCoconeₓ'. -/
/-- The image of a cocone in C under a functor G : C ⥤ D is a cocone in D. -/
@[simps]
def mapCocone (c : Cocone F) : Cocone (F ⋙ H) :=
(Cocones.functoriality F H).obj c
#align category_theory.functor.map_cocone CategoryTheory.Functor.mapCocone
--/
-#print CategoryTheory.Functor.mapConeMorphism /-
+/- warning: category_theory.functor.map_cone_morphism -> CategoryTheory.Functor.mapConeMorphism is a dubious translation:
+lean 3 declaration is
+ forall {J : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u1, u4} J] {C : Type.{u5}} [_inst_3 : CategoryTheory.Category.{u2, u5} C] {D : Type.{u6}} [_inst_4 : CategoryTheory.Category.{u3, u6} D] {F : CategoryTheory.Functor.{u1, u2, u4, u5} J _inst_1 C _inst_3} (H : CategoryTheory.Functor.{u2, u3, u5, u6} C _inst_3 D _inst_4) {c : CategoryTheory.Limits.Cone.{u1, u2, u4, u5} J _inst_1 C _inst_3 F} {c' : CategoryTheory.Limits.Cone.{u1, u2, u4, u5} J _inst_1 C _inst_3 F}, (Quiver.Hom.{succ u2, max u4 u5 u2} (CategoryTheory.Limits.Cone.{u1, u2, u4, u5} J _inst_1 C _inst_3 F) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u4 u5 u2} (CategoryTheory.Limits.Cone.{u1, u2, u4, u5} J _inst_1 C _inst_3 F) (CategoryTheory.Category.toCategoryStruct.{u2, max u4 u5 u2} (CategoryTheory.Limits.Cone.{u1, u2, u4, u5} J _inst_1 C _inst_3 F) (CategoryTheory.Limits.Cone.category.{u1, u2, u4, u5} J _inst_1 C _inst_3 F))) c c') -> (Quiver.Hom.{succ u3, max u4 u6 u3} (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) (CategoryTheory.CategoryStruct.toQuiver.{u3, max u4 u6 u3} (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) (CategoryTheory.Category.toCategoryStruct.{u3, max u4 u6 u3} (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) (CategoryTheory.Limits.Cone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)))) (CategoryTheory.Functor.mapCone.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H c) (CategoryTheory.Functor.mapCone.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H c'))
+but is expected to have type
+ forall {J : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u1, u4} J] {C : Type.{u5}} [_inst_3 : CategoryTheory.Category.{u2, u5} C] {D : Type.{u6}} [_inst_4 : CategoryTheory.Category.{u3, u6} D] (F : CategoryTheory.Functor.{u2, u3, u5, u6} C _inst_3 D _inst_4) {H : CategoryTheory.Functor.{u1, u2, u4, u5} J _inst_1 C _inst_3} {c : CategoryTheory.Limits.Cone.{u1, u2, u4, u5} J _inst_1 C _inst_3 H} {c' : CategoryTheory.Limits.Cone.{u1, u2, u4, u5} J _inst_1 C _inst_3 H}, (Quiver.Hom.{succ u2, max (max u4 u5) u2} (CategoryTheory.Limits.Cone.{u1, u2, u4, u5} J _inst_1 C _inst_3 H) (CategoryTheory.CategoryStruct.toQuiver.{u2, max (max u4 u5) u2} (CategoryTheory.Limits.Cone.{u1, u2, u4, u5} J _inst_1 C _inst_3 H) (CategoryTheory.Category.toCategoryStruct.{u2, max (max u4 u5) u2} (CategoryTheory.Limits.Cone.{u1, u2, u4, u5} J _inst_1 C _inst_3 H) (CategoryTheory.Limits.Cone.category.{u1, u2, u4, u5} J _inst_1 C _inst_3 H))) c c') -> (Quiver.Hom.{succ u3, max (max u6 u3) u4} (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 H F)) (CategoryTheory.CategoryStruct.toQuiver.{u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 H F)) (CategoryTheory.Category.toCategoryStruct.{u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 H F)) (CategoryTheory.Limits.Cone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 H F)))) (CategoryTheory.Functor.mapCone.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H c) (CategoryTheory.Functor.mapCone.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H c'))
+Case conversion may be inaccurate. Consider using '#align category_theory.functor.map_cone_morphism CategoryTheory.Functor.mapConeMorphismₓ'. -/
/-- Given a cone morphism `c ⟶ c'`, construct a cone morphism on the mapped cones functorially. -/
def mapConeMorphism {c c' : Cone F} (f : c ⟶ c') : H.mapCone c ⟶ H.mapCone c' :=
(Cones.functoriality F H).map f
#align category_theory.functor.map_cone_morphism CategoryTheory.Functor.mapConeMorphism
--/
-#print CategoryTheory.Functor.mapCoconeMorphism /-
+/- warning: category_theory.functor.map_cocone_morphism -> CategoryTheory.Functor.mapCoconeMorphism is a dubious translation:
+lean 3 declaration is
+ forall {J : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u1, u4} J] {C : Type.{u5}} [_inst_3 : CategoryTheory.Category.{u2, u5} C] {D : Type.{u6}} [_inst_4 : CategoryTheory.Category.{u3, u6} D] {F : CategoryTheory.Functor.{u1, u2, u4, u5} J _inst_1 C _inst_3} (H : CategoryTheory.Functor.{u2, u3, u5, u6} C _inst_3 D _inst_4) {c : CategoryTheory.Limits.Cocone.{u1, u2, u4, u5} J _inst_1 C _inst_3 F} {c' : CategoryTheory.Limits.Cocone.{u1, u2, u4, u5} J _inst_1 C _inst_3 F}, (Quiver.Hom.{succ u2, max u4 u5 u2} (CategoryTheory.Limits.Cocone.{u1, u2, u4, u5} J _inst_1 C _inst_3 F) (CategoryTheory.CategoryStruct.toQuiver.{u2, max u4 u5 u2} (CategoryTheory.Limits.Cocone.{u1, u2, u4, u5} J _inst_1 C _inst_3 F) (CategoryTheory.Category.toCategoryStruct.{u2, max u4 u5 u2} (CategoryTheory.Limits.Cocone.{u1, u2, u4, u5} J _inst_1 C _inst_3 F) (CategoryTheory.Limits.Cocone.category.{u1, u2, u4, u5} J _inst_1 C _inst_3 F))) c c') -> (Quiver.Hom.{succ u3, max u4 u6 u3} (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) (CategoryTheory.CategoryStruct.toQuiver.{u3, max u4 u6 u3} (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) (CategoryTheory.Category.toCategoryStruct.{u3, max u4 u6 u3} (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) (CategoryTheory.Limits.Cocone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)))) (CategoryTheory.Functor.mapCocone.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H c) (CategoryTheory.Functor.mapCocone.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H c'))
+but is expected to have type
+ forall {J : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u1, u4} J] {C : Type.{u5}} [_inst_3 : CategoryTheory.Category.{u2, u5} C] {D : Type.{u6}} [_inst_4 : CategoryTheory.Category.{u3, u6} D] (F : CategoryTheory.Functor.{u2, u3, u5, u6} C _inst_3 D _inst_4) {H : CategoryTheory.Functor.{u1, u2, u4, u5} J _inst_1 C _inst_3} {c : CategoryTheory.Limits.Cocone.{u1, u2, u4, u5} J _inst_1 C _inst_3 H} {c' : CategoryTheory.Limits.Cocone.{u1, u2, u4, u5} J _inst_1 C _inst_3 H}, (Quiver.Hom.{succ u2, max (max u4 u5) u2} (CategoryTheory.Limits.Cocone.{u1, u2, u4, u5} J _inst_1 C _inst_3 H) (CategoryTheory.CategoryStruct.toQuiver.{u2, max (max u4 u5) u2} (CategoryTheory.Limits.Cocone.{u1, u2, u4, u5} J _inst_1 C _inst_3 H) (CategoryTheory.Category.toCategoryStruct.{u2, max (max u4 u5) u2} (CategoryTheory.Limits.Cocone.{u1, u2, u4, u5} J _inst_1 C _inst_3 H) (CategoryTheory.Limits.Cocone.category.{u1, u2, u4, u5} J _inst_1 C _inst_3 H))) c c') -> (Quiver.Hom.{succ u3, max (max u6 u3) u4} (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 H F)) (CategoryTheory.CategoryStruct.toQuiver.{u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 H F)) (CategoryTheory.Category.toCategoryStruct.{u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 H F)) (CategoryTheory.Limits.Cocone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 H F)))) (CategoryTheory.Functor.mapCocone.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H c) (CategoryTheory.Functor.mapCocone.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H c'))
+Case conversion may be inaccurate. Consider using '#align category_theory.functor.map_cocone_morphism CategoryTheory.Functor.mapCoconeMorphismₓ'. -/
/-- Given a cocone morphism `c ⟶ c'`, construct a cocone morphism on the mapped cocones
functorially. -/
def mapCoconeMorphism {c c' : Cocone F} (f : c ⟶ c') : H.mapCocone c ⟶ H.mapCocone c' :=
(Cocones.functoriality F H).map f
#align category_theory.functor.map_cocone_morphism CategoryTheory.Functor.mapCoconeMorphism
--/
-#print CategoryTheory.Functor.mapConeInv /-
+/- warning: category_theory.functor.map_cone_inv -> CategoryTheory.Functor.mapConeInv is a dubious translation:
+lean 3 declaration is
+ forall {J : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u1, u4} J] {C : Type.{u5}} [_inst_3 : CategoryTheory.Category.{u2, u5} C] {D : Type.{u6}} [_inst_4 : CategoryTheory.Category.{u3, u6} D] {F : CategoryTheory.Functor.{u1, u2, u4, u5} J _inst_1 C _inst_3} (H : CategoryTheory.Functor.{u2, u3, u5, u6} C _inst_3 D _inst_4) [_inst_5 : CategoryTheory.IsEquivalence.{u2, u3, u5, u6} C _inst_3 D _inst_4 H], (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) -> (CategoryTheory.Limits.Cone.{u1, u2, u4, u5} J _inst_1 C _inst_3 F)
+but is expected to have type
+ forall {J : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u1, u4} J] {C : Type.{u5}} [_inst_3 : CategoryTheory.Category.{u2, u5} C] {D : Type.{u6}} [_inst_4 : CategoryTheory.Category.{u3, u6} D] (F : CategoryTheory.Functor.{u2, u3, u5, u6} C _inst_3 D _inst_4) {H : CategoryTheory.Functor.{u1, u2, u4, u5} J _inst_1 C _inst_3} [_inst_5 : CategoryTheory.IsEquivalence.{u2, u3, u5, u6} C _inst_3 D _inst_4 F], (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 H F)) -> (CategoryTheory.Limits.Cone.{u1, u2, u4, u5} J _inst_1 C _inst_3 H)
+Case conversion may be inaccurate. Consider using '#align category_theory.functor.map_cone_inv CategoryTheory.Functor.mapConeInvₓ'. -/
/-- If `H` is an equivalence, we invert `H.map_cone` and get a cone for `F` from a cone
for `F ⋙ H`.-/
def mapConeInv [IsEquivalence H] (c : Cone (F ⋙ H)) : Cone F :=
(Limits.Cones.functorialityEquivalence F (asEquivalence H)).inverse.obj c
#align category_theory.functor.map_cone_inv CategoryTheory.Functor.mapConeInv
--/
-#print CategoryTheory.Functor.mapConeMapConeInv /-
+/- warning: category_theory.functor.map_cone_map_cone_inv -> CategoryTheory.Functor.mapConeMapConeInv is a dubious translation:
+lean 3 declaration is
+ forall {J : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u1, u4} J] {C : Type.{u5}} [_inst_3 : CategoryTheory.Category.{u2, u5} C] {D : Type.{u6}} [_inst_4 : CategoryTheory.Category.{u3, u6} D] {F : CategoryTheory.Functor.{u1, u3, u4, u6} J _inst_1 D _inst_4} (H : CategoryTheory.Functor.{u3, u2, u6, u5} D _inst_4 C _inst_3) [_inst_5 : CategoryTheory.IsEquivalence.{u3, u2, u6, u5} D _inst_4 C _inst_3 H] (c : CategoryTheory.Limits.Cone.{u1, u2, u4, u5} J _inst_1 C _inst_3 (CategoryTheory.Functor.comp.{u1, u3, u2, u4, u6, u5} J _inst_1 D _inst_4 C _inst_3 F H)), CategoryTheory.Iso.{u2, max u4 u5 u2} (CategoryTheory.Limits.Cone.{u1, u2, u4, u5} J _inst_1 C _inst_3 (CategoryTheory.Functor.comp.{u1, u3, u2, u4, u6, u5} J _inst_1 D _inst_4 C _inst_3 F H)) (CategoryTheory.Limits.Cone.category.{u1, u2, u4, u5} J _inst_1 C _inst_3 (CategoryTheory.Functor.comp.{u1, u3, u2, u4, u6, u5} J _inst_1 D _inst_4 C _inst_3 F (CategoryTheory.Equivalence.functor.{u3, u2, u6, u5} D _inst_4 C _inst_3 (CategoryTheory.Functor.asEquivalence.{u3, u2, u6, u5} D _inst_4 C _inst_3 H _inst_5)))) (CategoryTheory.Functor.mapCone.{u1, u3, u2, u4, u6, u5} J _inst_1 D _inst_4 C _inst_3 F H (CategoryTheory.Functor.mapConeInv.{u1, u3, u2, u4, u6, u5} J _inst_1 D _inst_4 C _inst_3 F H _inst_5 c)) c
+but is expected to have type
+ forall {J : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u1, u4} J] {C : Type.{u5}} [_inst_3 : CategoryTheory.Category.{u2, u5} C] {D : Type.{u6}} [_inst_4 : CategoryTheory.Category.{u3, u6} D] {F : CategoryTheory.Functor.{u1, u3, u4, u6} J _inst_1 D _inst_4} (H : CategoryTheory.Functor.{u3, u2, u6, u5} D _inst_4 C _inst_3) [_inst_5 : CategoryTheory.IsEquivalence.{u3, u2, u6, u5} D _inst_4 C _inst_3 H] (c : CategoryTheory.Limits.Cone.{u1, u2, u4, u5} J _inst_1 C _inst_3 (CategoryTheory.Functor.comp.{u1, u3, u2, u4, u6, u5} J _inst_1 D _inst_4 C _inst_3 F H)), CategoryTheory.Iso.{u2, max (max u5 u2) u4} (CategoryTheory.Limits.Cone.{u1, u2, u4, u5} J _inst_1 C _inst_3 (CategoryTheory.Functor.comp.{u1, u3, u2, u4, u6, u5} J _inst_1 D _inst_4 C _inst_3 F H)) (CategoryTheory.Limits.Cone.category.{u1, u2, u4, u5} J _inst_1 C _inst_3 (CategoryTheory.Functor.comp.{u1, u3, u2, u4, u6, u5} J _inst_1 D _inst_4 C _inst_3 F H)) (CategoryTheory.Functor.mapCone.{u1, u3, u2, u4, u6, u5} J _inst_1 D _inst_4 C _inst_3 H F (CategoryTheory.Functor.mapConeInv.{u1, u3, u2, u4, u6, u5} J _inst_1 D _inst_4 C _inst_3 H F _inst_5 c)) c
+Case conversion may be inaccurate. Consider using '#align category_theory.functor.map_cone_map_cone_inv CategoryTheory.Functor.mapConeMapConeInvₓ'. -/
/-- `map_cone` is the left inverse to `map_cone_inv`. -/
def mapConeMapConeInv {F : J ⥤ D} (H : D ⥤ C) [IsEquivalence H] (c : Cone (F ⋙ H)) :
mapCone H (mapConeInv H c) ≅ c :=
(Limits.Cones.functorialityEquivalence F (asEquivalence H)).counitIso.app c
#align category_theory.functor.map_cone_map_cone_inv CategoryTheory.Functor.mapConeMapConeInv
--/
-#print CategoryTheory.Functor.mapConeInvMapCone /-
+/- warning: category_theory.functor.map_cone_inv_map_cone -> CategoryTheory.Functor.mapConeInvMapCone is a dubious translation:
+lean 3 declaration is
+ forall {J : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u1, u4} J] {C : Type.{u5}} [_inst_3 : CategoryTheory.Category.{u2, u5} C] {D : Type.{u6}} [_inst_4 : CategoryTheory.Category.{u3, u6} D] {F : CategoryTheory.Functor.{u1, u3, u4, u6} J _inst_1 D _inst_4} (H : CategoryTheory.Functor.{u3, u2, u6, u5} D _inst_4 C _inst_3) [_inst_5 : CategoryTheory.IsEquivalence.{u3, u2, u6, u5} D _inst_4 C _inst_3 H] (c : CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 F), CategoryTheory.Iso.{u3, max u4 u6 u3} (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 F) (CategoryTheory.Limits.Cone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 F) (CategoryTheory.Functor.mapConeInv.{u1, u3, u2, u4, u6, u5} J _inst_1 D _inst_4 C _inst_3 F H _inst_5 (CategoryTheory.Functor.mapCone.{u1, u3, u2, u4, u6, u5} J _inst_1 D _inst_4 C _inst_3 F H c)) c
+but is expected to have type
+ forall {J : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u1, u4} J] {C : Type.{u5}} [_inst_3 : CategoryTheory.Category.{u2, u5} C] {D : Type.{u6}} [_inst_4 : CategoryTheory.Category.{u3, u6} D] {F : CategoryTheory.Functor.{u1, u3, u4, u6} J _inst_1 D _inst_4} (H : CategoryTheory.Functor.{u3, u2, u6, u5} D _inst_4 C _inst_3) [_inst_5 : CategoryTheory.IsEquivalence.{u3, u2, u6, u5} D _inst_4 C _inst_3 H] (c : CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 F), CategoryTheory.Iso.{u3, max (max u6 u3) u4} (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 F) (CategoryTheory.Limits.Cone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 F) (CategoryTheory.Functor.mapConeInv.{u1, u3, u2, u4, u6, u5} J _inst_1 D _inst_4 C _inst_3 H F _inst_5 (CategoryTheory.Functor.mapCone.{u1, u3, u2, u4, u6, u5} J _inst_1 D _inst_4 C _inst_3 H F c)) c
+Case conversion may be inaccurate. Consider using '#align category_theory.functor.map_cone_inv_map_cone CategoryTheory.Functor.mapConeInvMapConeₓ'. -/
/-- `map_cone` is the right inverse to `map_cone_inv`. -/
def mapConeInvMapCone {F : J ⥤ D} (H : D ⥤ C) [IsEquivalence H] (c : Cone F) :
mapConeInv H (mapCone H c) ≅ c :=
(Limits.Cones.functorialityEquivalence F (asEquivalence H)).unitIso.symm.app c
#align category_theory.functor.map_cone_inv_map_cone CategoryTheory.Functor.mapConeInvMapCone
--/
-#print CategoryTheory.Functor.mapCoconeInv /-
+/- warning: category_theory.functor.map_cocone_inv -> CategoryTheory.Functor.mapCoconeInv is a dubious translation:
+lean 3 declaration is
+ forall {J : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u1, u4} J] {C : Type.{u5}} [_inst_3 : CategoryTheory.Category.{u2, u5} C] {D : Type.{u6}} [_inst_4 : CategoryTheory.Category.{u3, u6} D] {F : CategoryTheory.Functor.{u1, u2, u4, u5} J _inst_1 C _inst_3} (H : CategoryTheory.Functor.{u2, u3, u5, u6} C _inst_3 D _inst_4) [_inst_5 : CategoryTheory.IsEquivalence.{u2, u3, u5, u6} C _inst_3 D _inst_4 H], (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) -> (CategoryTheory.Limits.Cocone.{u1, u2, u4, u5} J _inst_1 C _inst_3 F)
+but is expected to have type
+ forall {J : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u1, u4} J] {C : Type.{u5}} [_inst_3 : CategoryTheory.Category.{u2, u5} C] {D : Type.{u6}} [_inst_4 : CategoryTheory.Category.{u3, u6} D] (F : CategoryTheory.Functor.{u2, u3, u5, u6} C _inst_3 D _inst_4) {H : CategoryTheory.Functor.{u1, u2, u4, u5} J _inst_1 C _inst_3} [_inst_5 : CategoryTheory.IsEquivalence.{u2, u3, u5, u6} C _inst_3 D _inst_4 F], (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 H F)) -> (CategoryTheory.Limits.Cocone.{u1, u2, u4, u5} J _inst_1 C _inst_3 H)
+Case conversion may be inaccurate. Consider using '#align category_theory.functor.map_cocone_inv CategoryTheory.Functor.mapCoconeInvₓ'. -/
/-- If `H` is an equivalence, we invert `H.map_cone` and get a cone for `F` from a cone
for `F ⋙ H`.-/
def mapCoconeInv [IsEquivalence H] (c : Cocone (F ⋙ H)) : Cocone F :=
(Limits.Cocones.functorialityEquivalence F (asEquivalence H)).inverse.obj c
#align category_theory.functor.map_cocone_inv CategoryTheory.Functor.mapCoconeInv
--/
-#print CategoryTheory.Functor.mapCoconeMapCoconeInv /-
+/- warning: category_theory.functor.map_cocone_map_cocone_inv -> CategoryTheory.Functor.mapCoconeMapCoconeInv is a dubious translation:
+lean 3 declaration is
+ forall {J : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u1, u4} J] {C : Type.{u5}} [_inst_3 : CategoryTheory.Category.{u2, u5} C] {D : Type.{u6}} [_inst_4 : CategoryTheory.Category.{u3, u6} D] {F : CategoryTheory.Functor.{u1, u3, u4, u6} J _inst_1 D _inst_4} (H : CategoryTheory.Functor.{u3, u2, u6, u5} D _inst_4 C _inst_3) [_inst_5 : CategoryTheory.IsEquivalence.{u3, u2, u6, u5} D _inst_4 C _inst_3 H] (c : CategoryTheory.Limits.Cocone.{u1, u2, u4, u5} J _inst_1 C _inst_3 (CategoryTheory.Functor.comp.{u1, u3, u2, u4, u6, u5} J _inst_1 D _inst_4 C _inst_3 F H)), CategoryTheory.Iso.{u2, max u4 u5 u2} (CategoryTheory.Limits.Cocone.{u1, u2, u4, u5} J _inst_1 C _inst_3 (CategoryTheory.Functor.comp.{u1, u3, u2, u4, u6, u5} J _inst_1 D _inst_4 C _inst_3 F H)) (CategoryTheory.Limits.Cocone.category.{u1, u2, u4, u5} J _inst_1 C _inst_3 (CategoryTheory.Functor.comp.{u1, u3, u2, u4, u6, u5} J _inst_1 D _inst_4 C _inst_3 F (CategoryTheory.Equivalence.functor.{u3, u2, u6, u5} D _inst_4 C _inst_3 (CategoryTheory.Functor.asEquivalence.{u3, u2, u6, u5} D _inst_4 C _inst_3 H _inst_5)))) (CategoryTheory.Functor.mapCocone.{u1, u3, u2, u4, u6, u5} J _inst_1 D _inst_4 C _inst_3 F H (CategoryTheory.Functor.mapCoconeInv.{u1, u3, u2, u4, u6, u5} J _inst_1 D _inst_4 C _inst_3 F H _inst_5 c)) c
+but is expected to have type
+ forall {J : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u1, u4} J] {C : Type.{u5}} [_inst_3 : CategoryTheory.Category.{u2, u5} C] {D : Type.{u6}} [_inst_4 : CategoryTheory.Category.{u3, u6} D] {F : CategoryTheory.Functor.{u1, u3, u4, u6} J _inst_1 D _inst_4} (H : CategoryTheory.Functor.{u3, u2, u6, u5} D _inst_4 C _inst_3) [_inst_5 : CategoryTheory.IsEquivalence.{u3, u2, u6, u5} D _inst_4 C _inst_3 H] (c : CategoryTheory.Limits.Cocone.{u1, u2, u4, u5} J _inst_1 C _inst_3 (CategoryTheory.Functor.comp.{u1, u3, u2, u4, u6, u5} J _inst_1 D _inst_4 C _inst_3 F H)), CategoryTheory.Iso.{u2, max (max u5 u2) u4} (CategoryTheory.Limits.Cocone.{u1, u2, u4, u5} J _inst_1 C _inst_3 (CategoryTheory.Functor.comp.{u1, u3, u2, u4, u6, u5} J _inst_1 D _inst_4 C _inst_3 F H)) (CategoryTheory.Limits.Cocone.category.{u1, u2, u4, u5} J _inst_1 C _inst_3 (CategoryTheory.Functor.comp.{u1, u3, u2, u4, u6, u5} J _inst_1 D _inst_4 C _inst_3 F H)) (CategoryTheory.Functor.mapCocone.{u1, u3, u2, u4, u6, u5} J _inst_1 D _inst_4 C _inst_3 H F (CategoryTheory.Functor.mapCoconeInv.{u1, u3, u2, u4, u6, u5} J _inst_1 D _inst_4 C _inst_3 H F _inst_5 c)) c
+Case conversion may be inaccurate. Consider using '#align category_theory.functor.map_cocone_map_cocone_inv CategoryTheory.Functor.mapCoconeMapCoconeInvₓ'. -/
/-- `map_cocone` is the left inverse to `map_cocone_inv`. -/
def mapCoconeMapCoconeInv {F : J ⥤ D} (H : D ⥤ C) [IsEquivalence H] (c : Cocone (F ⋙ H)) :
mapCocone H (mapCoconeInv H c) ≅ c :=
(Limits.Cocones.functorialityEquivalence F (asEquivalence H)).counitIso.app c
#align category_theory.functor.map_cocone_map_cocone_inv CategoryTheory.Functor.mapCoconeMapCoconeInv
--/
-#print CategoryTheory.Functor.mapCoconeInvMapCocone /-
+/- warning: category_theory.functor.map_cocone_inv_map_cocone -> CategoryTheory.Functor.mapCoconeInvMapCocone is a dubious translation:
+lean 3 declaration is
+ forall {J : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u1, u4} J] {C : Type.{u5}} [_inst_3 : CategoryTheory.Category.{u2, u5} C] {D : Type.{u6}} [_inst_4 : CategoryTheory.Category.{u3, u6} D] {F : CategoryTheory.Functor.{u1, u3, u4, u6} J _inst_1 D _inst_4} (H : CategoryTheory.Functor.{u3, u2, u6, u5} D _inst_4 C _inst_3) [_inst_5 : CategoryTheory.IsEquivalence.{u3, u2, u6, u5} D _inst_4 C _inst_3 H] (c : CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 F), CategoryTheory.Iso.{u3, max u4 u6 u3} (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 F) (CategoryTheory.Limits.Cocone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 F) (CategoryTheory.Functor.mapCoconeInv.{u1, u3, u2, u4, u6, u5} J _inst_1 D _inst_4 C _inst_3 F H _inst_5 (CategoryTheory.Functor.mapCocone.{u1, u3, u2, u4, u6, u5} J _inst_1 D _inst_4 C _inst_3 F H c)) c
+but is expected to have type
+ forall {J : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u1, u4} J] {C : Type.{u5}} [_inst_3 : CategoryTheory.Category.{u2, u5} C] {D : Type.{u6}} [_inst_4 : CategoryTheory.Category.{u3, u6} D] {F : CategoryTheory.Functor.{u1, u3, u4, u6} J _inst_1 D _inst_4} (H : CategoryTheory.Functor.{u3, u2, u6, u5} D _inst_4 C _inst_3) [_inst_5 : CategoryTheory.IsEquivalence.{u3, u2, u6, u5} D _inst_4 C _inst_3 H] (c : CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 F), CategoryTheory.Iso.{u3, max (max u6 u3) u4} (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 F) (CategoryTheory.Limits.Cocone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 F) (CategoryTheory.Functor.mapCoconeInv.{u1, u3, u2, u4, u6, u5} J _inst_1 D _inst_4 C _inst_3 H F _inst_5 (CategoryTheory.Functor.mapCocone.{u1, u3, u2, u4, u6, u5} J _inst_1 D _inst_4 C _inst_3 H F c)) c
+Case conversion may be inaccurate. Consider using '#align category_theory.functor.map_cocone_inv_map_cocone CategoryTheory.Functor.mapCoconeInvMapCoconeₓ'. -/
/-- `map_cocone` is the right inverse to `map_cocone_inv`. -/
def mapCoconeInvMapCocone {F : J ⥤ D} (H : D ⥤ C) [IsEquivalence H] (c : Cocone F) :
mapCoconeInv H (mapCocone H c) ≅ c :=
(Limits.Cocones.functorialityEquivalence F (asEquivalence H)).unitIso.symm.app c
#align category_theory.functor.map_cocone_inv_map_cocone CategoryTheory.Functor.mapCoconeInvMapCocone
--/
#print CategoryTheory.Functor.functorialityCompPostcompose /-
/-- `functoriality F _ ⋙ postcompose (whisker_left F _)` simplifies to `functoriality F _`. -/
@@ -951,7 +991,7 @@ def functorialityCompPostcompose {H H' : C ⥤ D} (α : H ≅ H') :
lean 3 declaration is
forall {J : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u1, u4} J] {C : Type.{u5}} [_inst_3 : CategoryTheory.Category.{u2, u5} C] {D : Type.{u6}} [_inst_4 : CategoryTheory.Category.{u3, u6} D] {F : CategoryTheory.Functor.{u1, u2, u4, u5} J _inst_1 C _inst_3} {H : CategoryTheory.Functor.{u2, u3, u5, u6} C _inst_3 D _inst_4} {H' : CategoryTheory.Functor.{u2, u3, u5, u6} C _inst_3 D _inst_4} (α : CategoryTheory.Iso.{max u5 u3, max u2 u3 u5 u6} (CategoryTheory.Functor.{u2, u3, u5, u6} C _inst_3 D _inst_4) (CategoryTheory.Functor.category.{u2, u3, u5, u6} C _inst_3 D _inst_4) H H') (c : CategoryTheory.Limits.Cone.{u1, u2, u4, u5} J _inst_1 C _inst_3 F), CategoryTheory.Iso.{u3, max u4 u6 u3} (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H')) (CategoryTheory.Limits.Cone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H')) (CategoryTheory.Functor.obj.{u3, u3, max u4 u6 u3, max u4 u6 u3} (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) (CategoryTheory.Limits.Cone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H')) (CategoryTheory.Limits.Cone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H')) (CategoryTheory.Limits.Cones.postcompose.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H) (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H') (CategoryTheory.whiskerLeft.{u4, u1, u5, u2, u6, u3} J _inst_1 C _inst_3 D _inst_4 F H H' (CategoryTheory.Iso.hom.{max u5 u3, max u2 u3 u5 u6} (CategoryTheory.Functor.{u2, u3, u5, u6} C _inst_3 D _inst_4) (CategoryTheory.Functor.category.{u2, u3, u5, u6} C _inst_3 D _inst_4) H H' α))) (CategoryTheory.Functor.mapCone.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H c)) (CategoryTheory.Functor.mapCone.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H' c)
but is expected to have type
- forall {J : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u1, u4} J] {C : Type.{u5}} [_inst_3 : CategoryTheory.Category.{u2, u5} C] {D : Type.{u6}} [_inst_4 : CategoryTheory.Category.{u3, u6} D] {F : CategoryTheory.Functor.{u1, u2, u4, u5} J _inst_1 C _inst_3} {H : CategoryTheory.Functor.{u2, u3, u5, u6} C _inst_3 D _inst_4} {H' : CategoryTheory.Functor.{u2, u3, u5, u6} C _inst_3 D _inst_4} (α : CategoryTheory.Iso.{max u5 u3, max (max (max u5 u6) u2) u3} (CategoryTheory.Functor.{u2, u3, u5, u6} C _inst_3 D _inst_4) (CategoryTheory.Functor.category.{u2, u3, u5, u6} C _inst_3 D _inst_4) H H') (c : CategoryTheory.Limits.Cone.{u1, u2, u4, u5} J _inst_1 C _inst_3 F), CategoryTheory.Iso.{u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H')) (CategoryTheory.Limits.Cone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H')) (Prefunctor.obj.{succ u3, succ u3, max (max u4 u6) u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) (CategoryTheory.CategoryStruct.toQuiver.{u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) (CategoryTheory.Category.toCategoryStruct.{u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) (CategoryTheory.Limits.Cone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)))) (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H')) (CategoryTheory.CategoryStruct.toQuiver.{u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H')) (CategoryTheory.Category.toCategoryStruct.{u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H')) (CategoryTheory.Limits.Cone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H')))) (CategoryTheory.Functor.toPrefunctor.{u3, u3, max (max u4 u6) u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) (CategoryTheory.Limits.Cone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H')) (CategoryTheory.Limits.Cone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H')) (CategoryTheory.Limits.Cones.postcompose.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H) (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H') (CategoryTheory.whiskerLeft.{u4, u1, u5, u2, u6, u3} J _inst_1 C _inst_3 D _inst_4 F H H' (CategoryTheory.Iso.hom.{max u5 u3, max (max (max u5 u6) u2) u3} (CategoryTheory.Functor.{u2, u3, u5, u6} C _inst_3 D _inst_4) (CategoryTheory.Functor.category.{u2, u3, u5, u6} C _inst_3 D _inst_4) H H' α)))) (CategoryTheory.Functor.mapCone.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H c)) (CategoryTheory.Functor.mapCone.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H' c)
+ forall {J : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u1, u4} J] {C : Type.{u5}} [_inst_3 : CategoryTheory.Category.{u2, u5} C] {D : Type.{u6}} [_inst_4 : CategoryTheory.Category.{u3, u6} D] {F : CategoryTheory.Functor.{u1, u2, u4, u5} J _inst_1 C _inst_3} {H : CategoryTheory.Functor.{u2, u3, u5, u6} C _inst_3 D _inst_4} {H' : CategoryTheory.Functor.{u2, u3, u5, u6} C _inst_3 D _inst_4} (α : CategoryTheory.Iso.{max u5 u3, max (max (max u5 u6) u2) u3} (CategoryTheory.Functor.{u2, u3, u5, u6} C _inst_3 D _inst_4) (CategoryTheory.Functor.category.{u2, u3, u5, u6} C _inst_3 D _inst_4) H H') (c : CategoryTheory.Limits.Cone.{u1, u2, u4, u5} J _inst_1 C _inst_3 F), CategoryTheory.Iso.{u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H')) (CategoryTheory.Limits.Cone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H')) (Prefunctor.obj.{succ u3, succ u3, max (max u4 u6) u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) (CategoryTheory.CategoryStruct.toQuiver.{u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) (CategoryTheory.Category.toCategoryStruct.{u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) (CategoryTheory.Limits.Cone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)))) (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H')) (CategoryTheory.CategoryStruct.toQuiver.{u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H')) (CategoryTheory.Category.toCategoryStruct.{u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H')) (CategoryTheory.Limits.Cone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H')))) (CategoryTheory.Functor.toPrefunctor.{u3, u3, max (max u4 u6) u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) (CategoryTheory.Limits.Cone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H')) (CategoryTheory.Limits.Cone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H')) (CategoryTheory.Limits.Cones.postcompose.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H) (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H') (CategoryTheory.whiskerLeft.{u4, u1, u5, u2, u6, u3} J _inst_1 C _inst_3 D _inst_4 F H H' (CategoryTheory.Iso.hom.{max u5 u3, max (max (max u5 u6) u2) u3} (CategoryTheory.Functor.{u2, u3, u5, u6} C _inst_3 D _inst_4) (CategoryTheory.Functor.category.{u2, u3, u5, u6} C _inst_3 D _inst_4) H H' α)))) (CategoryTheory.Functor.mapCone.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 H F c)) (CategoryTheory.Functor.mapCone.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 H' F c)
Case conversion may be inaccurate. Consider using '#align category_theory.functor.postcompose_whisker_left_map_cone CategoryTheory.Functor.postcomposeWhiskerLeftMapConeₓ'. -/
/-- For `F : J ⥤ C`, given a cone `c : cone F`, and a natural isomorphism `α : H ≅ H'` for functors
`H H' : C ⥤ D`, the postcomposition of the cone `H.map_cone` using the isomorphism `α` is
@@ -967,7 +1007,7 @@ def postcomposeWhiskerLeftMapCone {H H' : C ⥤ D} (α : H ≅ H') (c : Cone F)
lean 3 declaration is
forall {J : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u1, u4} J] {C : Type.{u5}} [_inst_3 : CategoryTheory.Category.{u2, u5} C] {D : Type.{u6}} [_inst_4 : CategoryTheory.Category.{u3, u6} D] {F : CategoryTheory.Functor.{u1, u2, u4, u5} J _inst_1 C _inst_3} {G : CategoryTheory.Functor.{u1, u2, u4, u5} J _inst_1 C _inst_3} (H : CategoryTheory.Functor.{u2, u3, u5, u6} C _inst_3 D _inst_4) {α : Quiver.Hom.{succ (max u4 u2), max u1 u2 u4 u5} (CategoryTheory.Functor.{u1, u2, u4, u5} J _inst_1 C _inst_3) (CategoryTheory.CategoryStruct.toQuiver.{max u4 u2, max u1 u2 u4 u5} (CategoryTheory.Functor.{u1, u2, u4, u5} J _inst_1 C _inst_3) (CategoryTheory.Category.toCategoryStruct.{max u4 u2, max u1 u2 u4 u5} (CategoryTheory.Functor.{u1, u2, u4, u5} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u4, u5} J _inst_1 C _inst_3))) F G} {c : CategoryTheory.Limits.Cone.{u1, u2, u4, u5} J _inst_1 C _inst_3 F}, CategoryTheory.Iso.{u3, max u4 u6 u3} (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G H)) (CategoryTheory.Limits.Cone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G H)) (CategoryTheory.Functor.mapCone.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G H (CategoryTheory.Functor.obj.{u2, u2, max u4 u5 u2, max u4 u5 u2} (CategoryTheory.Limits.Cone.{u1, u2, u4, u5} J _inst_1 C _inst_3 F) (CategoryTheory.Limits.Cone.category.{u1, u2, u4, u5} J _inst_1 C _inst_3 F) (CategoryTheory.Limits.Cone.{u1, u2, u4, u5} J _inst_1 C _inst_3 G) (CategoryTheory.Limits.Cone.category.{u1, u2, u4, u5} J _inst_1 C _inst_3 G) (CategoryTheory.Limits.Cones.postcompose.{u1, u2, u4, u5} J _inst_1 C _inst_3 F G α) c)) (CategoryTheory.Functor.obj.{u3, u3, max u4 u6 u3, max u4 u6 u3} (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) (CategoryTheory.Limits.Cone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G H)) (CategoryTheory.Limits.Cone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G H)) (CategoryTheory.Limits.Cones.postcompose.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H) (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G H) (CategoryTheory.whiskerRight.{u4, u1, u5, u2, u6, u3} J _inst_1 C _inst_3 D _inst_4 F G α H)) (CategoryTheory.Functor.mapCone.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H c))
but is expected to have type
- forall {J : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u1, u4} J] {C : Type.{u5}} [_inst_3 : CategoryTheory.Category.{u2, u5} C] {D : Type.{u6}} [_inst_4 : CategoryTheory.Category.{u3, u6} D] {F : CategoryTheory.Functor.{u1, u2, u4, u5} J _inst_1 C _inst_3} {G : CategoryTheory.Functor.{u1, u2, u4, u5} J _inst_1 C _inst_3} (H : CategoryTheory.Functor.{u2, u3, u5, u6} C _inst_3 D _inst_4) {α : Quiver.Hom.{max (succ u4) (succ u2), max (max (max u4 u5) u1) u2} (CategoryTheory.Functor.{u1, u2, u4, u5} J _inst_1 C _inst_3) (CategoryTheory.CategoryStruct.toQuiver.{max u4 u2, max (max (max u4 u5) u1) u2} (CategoryTheory.Functor.{u1, u2, u4, u5} J _inst_1 C _inst_3) (CategoryTheory.Category.toCategoryStruct.{max u4 u2, max (max (max u4 u5) u1) u2} (CategoryTheory.Functor.{u1, u2, u4, u5} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u4, u5} J _inst_1 C _inst_3))) F G} {c : CategoryTheory.Limits.Cone.{u1, u2, u4, u5} J _inst_1 C _inst_3 F}, CategoryTheory.Iso.{u3, max (max u6 u3) u4} (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G H)) (CategoryTheory.Limits.Cone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G H)) (CategoryTheory.Functor.mapCone.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G H (Prefunctor.obj.{succ u2, succ u2, max (max u4 u5) u2, max (max u4 u5) u2} (CategoryTheory.Limits.Cone.{u1, u2, u4, u5} J _inst_1 C _inst_3 F) (CategoryTheory.CategoryStruct.toQuiver.{u2, max (max u4 u5) u2} (CategoryTheory.Limits.Cone.{u1, u2, u4, u5} J _inst_1 C _inst_3 F) (CategoryTheory.Category.toCategoryStruct.{u2, max (max u4 u5) u2} (CategoryTheory.Limits.Cone.{u1, u2, u4, u5} J _inst_1 C _inst_3 F) (CategoryTheory.Limits.Cone.category.{u1, u2, u4, u5} J _inst_1 C _inst_3 F))) (CategoryTheory.Limits.Cone.{u1, u2, u4, u5} J _inst_1 C _inst_3 G) (CategoryTheory.CategoryStruct.toQuiver.{u2, max (max u4 u5) u2} (CategoryTheory.Limits.Cone.{u1, u2, u4, u5} J _inst_1 C _inst_3 G) (CategoryTheory.Category.toCategoryStruct.{u2, max (max u4 u5) u2} (CategoryTheory.Limits.Cone.{u1, u2, u4, u5} J _inst_1 C _inst_3 G) (CategoryTheory.Limits.Cone.category.{u1, u2, u4, u5} J _inst_1 C _inst_3 G))) (CategoryTheory.Functor.toPrefunctor.{u2, u2, max (max u4 u5) u2, max (max u4 u5) u2} (CategoryTheory.Limits.Cone.{u1, u2, u4, u5} J _inst_1 C _inst_3 F) (CategoryTheory.Limits.Cone.category.{u1, u2, u4, u5} J _inst_1 C _inst_3 F) (CategoryTheory.Limits.Cone.{u1, u2, u4, u5} J _inst_1 C _inst_3 G) (CategoryTheory.Limits.Cone.category.{u1, u2, u4, u5} J _inst_1 C _inst_3 G) (CategoryTheory.Limits.Cones.postcompose.{u1, u2, u4, u5} J _inst_1 C _inst_3 F G α)) c)) (Prefunctor.obj.{succ u3, succ u3, max (max u4 u6) u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) (CategoryTheory.CategoryStruct.toQuiver.{u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) (CategoryTheory.Category.toCategoryStruct.{u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) (CategoryTheory.Limits.Cone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)))) (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G H)) (CategoryTheory.CategoryStruct.toQuiver.{u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G H)) (CategoryTheory.Category.toCategoryStruct.{u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G H)) (CategoryTheory.Limits.Cone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G H)))) (CategoryTheory.Functor.toPrefunctor.{u3, u3, max (max u4 u6) u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) (CategoryTheory.Limits.Cone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G H)) (CategoryTheory.Limits.Cone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G H)) (CategoryTheory.Limits.Cones.postcompose.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H) (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G H) (CategoryTheory.whiskerRight.{u4, u1, u5, u2, u6, u3} J _inst_1 C _inst_3 D _inst_4 F G α H))) (CategoryTheory.Functor.mapCone.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H c))
+ forall {J : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u1, u4} J] {C : Type.{u5}} [_inst_3 : CategoryTheory.Category.{u2, u5} C] {D : Type.{u6}} [_inst_4 : CategoryTheory.Category.{u3, u6} D] (F : CategoryTheory.Functor.{u2, u3, u5, u6} C _inst_3 D _inst_4) {G : CategoryTheory.Functor.{u1, u2, u4, u5} J _inst_1 C _inst_3} {H : CategoryTheory.Functor.{u1, u2, u4, u5} J _inst_1 C _inst_3} {α : Quiver.Hom.{max (succ u4) (succ u2), max (max (max u4 u5) u1) u2} (CategoryTheory.Functor.{u1, u2, u4, u5} J _inst_1 C _inst_3) (CategoryTheory.CategoryStruct.toQuiver.{max u4 u2, max (max (max u4 u5) u1) u2} (CategoryTheory.Functor.{u1, u2, u4, u5} J _inst_1 C _inst_3) (CategoryTheory.Category.toCategoryStruct.{max u4 u2, max (max (max u4 u5) u1) u2} (CategoryTheory.Functor.{u1, u2, u4, u5} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u4, u5} J _inst_1 C _inst_3))) G H} {c : CategoryTheory.Limits.Cone.{u1, u2, u4, u5} J _inst_1 C _inst_3 G}, CategoryTheory.Iso.{u3, max (max u6 u3) u4} (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 H F)) (CategoryTheory.Limits.Cone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 H F)) (CategoryTheory.Functor.mapCone.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H (Prefunctor.obj.{succ u2, succ u2, max (max u4 u5) u2, max (max u4 u5) u2} (CategoryTheory.Limits.Cone.{u1, u2, u4, u5} J _inst_1 C _inst_3 G) (CategoryTheory.CategoryStruct.toQuiver.{u2, max (max u4 u5) u2} (CategoryTheory.Limits.Cone.{u1, u2, u4, u5} J _inst_1 C _inst_3 G) (CategoryTheory.Category.toCategoryStruct.{u2, max (max u4 u5) u2} (CategoryTheory.Limits.Cone.{u1, u2, u4, u5} J _inst_1 C _inst_3 G) (CategoryTheory.Limits.Cone.category.{u1, u2, u4, u5} J _inst_1 C _inst_3 G))) (CategoryTheory.Limits.Cone.{u1, u2, u4, u5} J _inst_1 C _inst_3 H) (CategoryTheory.CategoryStruct.toQuiver.{u2, max (max u4 u5) u2} (CategoryTheory.Limits.Cone.{u1, u2, u4, u5} J _inst_1 C _inst_3 H) (CategoryTheory.Category.toCategoryStruct.{u2, max (max u4 u5) u2} (CategoryTheory.Limits.Cone.{u1, u2, u4, u5} J _inst_1 C _inst_3 H) (CategoryTheory.Limits.Cone.category.{u1, u2, u4, u5} J _inst_1 C _inst_3 H))) (CategoryTheory.Functor.toPrefunctor.{u2, u2, max (max u4 u5) u2, max (max u4 u5) u2} (CategoryTheory.Limits.Cone.{u1, u2, u4, u5} J _inst_1 C _inst_3 G) (CategoryTheory.Limits.Cone.category.{u1, u2, u4, u5} J _inst_1 C _inst_3 G) (CategoryTheory.Limits.Cone.{u1, u2, u4, u5} J _inst_1 C _inst_3 H) (CategoryTheory.Limits.Cone.category.{u1, u2, u4, u5} J _inst_1 C _inst_3 H) (CategoryTheory.Limits.Cones.postcompose.{u1, u2, u4, u5} J _inst_1 C _inst_3 G H α)) c)) (Prefunctor.obj.{succ u3, succ u3, max (max u4 u6) u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G F)) (CategoryTheory.CategoryStruct.toQuiver.{u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G F)) (CategoryTheory.Category.toCategoryStruct.{u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G F)) (CategoryTheory.Limits.Cone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G F)))) (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 H F)) (CategoryTheory.CategoryStruct.toQuiver.{u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 H F)) (CategoryTheory.Category.toCategoryStruct.{u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 H F)) (CategoryTheory.Limits.Cone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 H F)))) (CategoryTheory.Functor.toPrefunctor.{u3, u3, max (max u4 u6) u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G F)) (CategoryTheory.Limits.Cone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G F)) (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 H F)) (CategoryTheory.Limits.Cone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 H F)) (CategoryTheory.Limits.Cones.postcompose.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G F) (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 H F) (CategoryTheory.whiskerRight.{u4, u1, u5, u2, u6, u3} J _inst_1 C _inst_3 D _inst_4 G H α F))) (CategoryTheory.Functor.mapCone.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F G c))
Case conversion may be inaccurate. Consider using '#align category_theory.functor.map_cone_postcompose CategoryTheory.Functor.mapConePostcomposeₓ'. -/
/--
`map_cone` commutes with `postcompose`. In particular, for `F : J ⥤ C`, given a cone `c : cone F`, a
@@ -985,7 +1025,7 @@ def mapConePostcompose {α : F ⟶ G} {c} :
lean 3 declaration is
forall {J : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u1, u4} J] {C : Type.{u5}} [_inst_3 : CategoryTheory.Category.{u2, u5} C] {D : Type.{u6}} [_inst_4 : CategoryTheory.Category.{u3, u6} D] {F : CategoryTheory.Functor.{u1, u2, u4, u5} J _inst_1 C _inst_3} {G : CategoryTheory.Functor.{u1, u2, u4, u5} J _inst_1 C _inst_3} (H : CategoryTheory.Functor.{u2, u3, u5, u6} C _inst_3 D _inst_4) {α : CategoryTheory.Iso.{max u4 u2, max u1 u2 u4 u5} (CategoryTheory.Functor.{u1, u2, u4, u5} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u4, u5} J _inst_1 C _inst_3) F G} {c : CategoryTheory.Limits.Cone.{u1, u2, u4, u5} J _inst_1 C _inst_3 F}, CategoryTheory.Iso.{u3, max u4 u6 u3} (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G H)) (CategoryTheory.Limits.Cone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G H)) (CategoryTheory.Functor.mapCone.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G H (CategoryTheory.Functor.obj.{u2, u2, max u4 u5 u2, max u4 u5 u2} (CategoryTheory.Limits.Cone.{u1, u2, u4, u5} J _inst_1 C _inst_3 F) (CategoryTheory.Limits.Cone.category.{u1, u2, u4, u5} J _inst_1 C _inst_3 F) (CategoryTheory.Limits.Cone.{u1, u2, u4, u5} J _inst_1 C _inst_3 G) (CategoryTheory.Limits.Cone.category.{u1, u2, u4, u5} J _inst_1 C _inst_3 G) (CategoryTheory.Equivalence.functor.{u2, u2, max u4 u5 u2, max u4 u5 u2} (CategoryTheory.Limits.Cone.{u1, u2, u4, u5} J _inst_1 C _inst_3 F) (CategoryTheory.Limits.Cone.category.{u1, u2, u4, u5} J _inst_1 C _inst_3 F) (CategoryTheory.Limits.Cone.{u1, u2, u4, u5} J _inst_1 C _inst_3 G) (CategoryTheory.Limits.Cone.category.{u1, u2, u4, u5} J _inst_1 C _inst_3 G) (CategoryTheory.Limits.Cones.postcomposeEquivalence.{u1, u2, u4, u5} J _inst_1 C _inst_3 F G α)) c)) (CategoryTheory.Functor.obj.{u3, u3, max u4 u6 u3, max u4 u6 u3} (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) (CategoryTheory.Limits.Cone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G H)) (CategoryTheory.Limits.Cone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G H)) (CategoryTheory.Equivalence.functor.{u3, u3, max u4 u6 u3, max u4 u6 u3} (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) (CategoryTheory.Limits.Cone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G H)) (CategoryTheory.Limits.Cone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G H)) (CategoryTheory.Limits.Cones.postcomposeEquivalence.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H) (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G H) (CategoryTheory.isoWhiskerRight.{u4, u1, u5, u2, u6, u3} J _inst_1 C _inst_3 D _inst_4 F G α H))) (CategoryTheory.Functor.mapCone.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H c))
but is expected to have type
- forall {J : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u1, u4} J] {C : Type.{u5}} [_inst_3 : CategoryTheory.Category.{u2, u5} C] {D : Type.{u6}} [_inst_4 : CategoryTheory.Category.{u3, u6} D] {F : CategoryTheory.Functor.{u1, u2, u4, u5} J _inst_1 C _inst_3} {G : CategoryTheory.Functor.{u1, u2, u4, u5} J _inst_1 C _inst_3} (H : CategoryTheory.Functor.{u2, u3, u5, u6} C _inst_3 D _inst_4) {α : CategoryTheory.Iso.{max u4 u2, max (max (max u4 u5) u1) u2} (CategoryTheory.Functor.{u1, u2, u4, u5} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u4, u5} J _inst_1 C _inst_3) F G} {c : CategoryTheory.Limits.Cone.{u1, u2, u4, u5} J _inst_1 C _inst_3 F}, CategoryTheory.Iso.{u3, max (max u6 u3) u4} (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G H)) (CategoryTheory.Limits.Cone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G H)) (CategoryTheory.Functor.mapCone.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G H (Prefunctor.obj.{succ u2, succ u2, max (max u4 u5) u2, max (max u4 u5) u2} (CategoryTheory.Limits.Cone.{u1, u2, u4, u5} J _inst_1 C _inst_3 F) (CategoryTheory.CategoryStruct.toQuiver.{u2, max (max u4 u5) u2} (CategoryTheory.Limits.Cone.{u1, u2, u4, u5} J _inst_1 C _inst_3 F) (CategoryTheory.Category.toCategoryStruct.{u2, max (max u4 u5) u2} (CategoryTheory.Limits.Cone.{u1, u2, u4, u5} J _inst_1 C _inst_3 F) (CategoryTheory.Limits.Cone.category.{u1, u2, u4, u5} J _inst_1 C _inst_3 F))) (CategoryTheory.Limits.Cone.{u1, u2, u4, u5} J _inst_1 C _inst_3 G) (CategoryTheory.CategoryStruct.toQuiver.{u2, max (max u4 u5) u2} (CategoryTheory.Limits.Cone.{u1, u2, u4, u5} J _inst_1 C _inst_3 G) (CategoryTheory.Category.toCategoryStruct.{u2, max (max u4 u5) u2} (CategoryTheory.Limits.Cone.{u1, u2, u4, u5} J _inst_1 C _inst_3 G) (CategoryTheory.Limits.Cone.category.{u1, u2, u4, u5} J _inst_1 C _inst_3 G))) (CategoryTheory.Functor.toPrefunctor.{u2, u2, max (max u4 u5) u2, max (max u4 u5) u2} (CategoryTheory.Limits.Cone.{u1, u2, u4, u5} J _inst_1 C _inst_3 F) (CategoryTheory.Limits.Cone.category.{u1, u2, u4, u5} J _inst_1 C _inst_3 F) (CategoryTheory.Limits.Cone.{u1, u2, u4, u5} J _inst_1 C _inst_3 G) (CategoryTheory.Limits.Cone.category.{u1, u2, u4, u5} J _inst_1 C _inst_3 G) (CategoryTheory.Equivalence.functor.{u2, u2, max (max u4 u5) u2, max (max u4 u5) u2} (CategoryTheory.Limits.Cone.{u1, u2, u4, u5} J _inst_1 C _inst_3 F) (CategoryTheory.Limits.Cone.{u1, u2, u4, u5} J _inst_1 C _inst_3 G) (CategoryTheory.Limits.Cone.category.{u1, u2, u4, u5} J _inst_1 C _inst_3 F) (CategoryTheory.Limits.Cone.category.{u1, u2, u4, u5} J _inst_1 C _inst_3 G) (CategoryTheory.Limits.Cones.postcomposeEquivalence.{u1, u2, u4, u5} J _inst_1 C _inst_3 F G α))) c)) (Prefunctor.obj.{succ u3, succ u3, max (max u4 u6) u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) (CategoryTheory.CategoryStruct.toQuiver.{u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) (CategoryTheory.Category.toCategoryStruct.{u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) (CategoryTheory.Limits.Cone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)))) (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G H)) (CategoryTheory.CategoryStruct.toQuiver.{u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G H)) (CategoryTheory.Category.toCategoryStruct.{u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G H)) (CategoryTheory.Limits.Cone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G H)))) (CategoryTheory.Functor.toPrefunctor.{u3, u3, max (max u4 u6) u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) (CategoryTheory.Limits.Cone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G H)) (CategoryTheory.Limits.Cone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G H)) (CategoryTheory.Equivalence.functor.{u3, u3, max (max u4 u6) u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G H)) (CategoryTheory.Limits.Cone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) (CategoryTheory.Limits.Cone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G H)) (CategoryTheory.Limits.Cones.postcomposeEquivalence.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H) (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G H) (CategoryTheory.isoWhiskerRight.{u4, u1, u5, u2, u6, u3} J _inst_1 C _inst_3 D _inst_4 F G α H)))) (CategoryTheory.Functor.mapCone.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H c))
+ forall {J : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u1, u4} J] {C : Type.{u5}} [_inst_3 : CategoryTheory.Category.{u2, u5} C] {D : Type.{u6}} [_inst_4 : CategoryTheory.Category.{u3, u6} D] (F : CategoryTheory.Functor.{u2, u3, u5, u6} C _inst_3 D _inst_4) {G : CategoryTheory.Functor.{u1, u2, u4, u5} J _inst_1 C _inst_3} {H : CategoryTheory.Functor.{u1, u2, u4, u5} J _inst_1 C _inst_3} {α : CategoryTheory.Iso.{max u4 u2, max (max (max u4 u5) u1) u2} (CategoryTheory.Functor.{u1, u2, u4, u5} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u4, u5} J _inst_1 C _inst_3) G H} {c : CategoryTheory.Limits.Cone.{u1, u2, u4, u5} J _inst_1 C _inst_3 G}, CategoryTheory.Iso.{u3, max (max u6 u3) u4} (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 H F)) (CategoryTheory.Limits.Cone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 H F)) (CategoryTheory.Functor.mapCone.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H (Prefunctor.obj.{succ u2, succ u2, max (max u4 u5) u2, max (max u4 u5) u2} (CategoryTheory.Limits.Cone.{u1, u2, u4, u5} J _inst_1 C _inst_3 G) (CategoryTheory.CategoryStruct.toQuiver.{u2, max (max u4 u5) u2} (CategoryTheory.Limits.Cone.{u1, u2, u4, u5} J _inst_1 C _inst_3 G) (CategoryTheory.Category.toCategoryStruct.{u2, max (max u4 u5) u2} (CategoryTheory.Limits.Cone.{u1, u2, u4, u5} J _inst_1 C _inst_3 G) (CategoryTheory.Limits.Cone.category.{u1, u2, u4, u5} J _inst_1 C _inst_3 G))) (CategoryTheory.Limits.Cone.{u1, u2, u4, u5} J _inst_1 C _inst_3 H) (CategoryTheory.CategoryStruct.toQuiver.{u2, max (max u4 u5) u2} (CategoryTheory.Limits.Cone.{u1, u2, u4, u5} J _inst_1 C _inst_3 H) (CategoryTheory.Category.toCategoryStruct.{u2, max (max u4 u5) u2} (CategoryTheory.Limits.Cone.{u1, u2, u4, u5} J _inst_1 C _inst_3 H) (CategoryTheory.Limits.Cone.category.{u1, u2, u4, u5} J _inst_1 C _inst_3 H))) (CategoryTheory.Functor.toPrefunctor.{u2, u2, max (max u4 u5) u2, max (max u4 u5) u2} (CategoryTheory.Limits.Cone.{u1, u2, u4, u5} J _inst_1 C _inst_3 G) (CategoryTheory.Limits.Cone.category.{u1, u2, u4, u5} J _inst_1 C _inst_3 G) (CategoryTheory.Limits.Cone.{u1, u2, u4, u5} J _inst_1 C _inst_3 H) (CategoryTheory.Limits.Cone.category.{u1, u2, u4, u5} J _inst_1 C _inst_3 H) (CategoryTheory.Equivalence.functor.{u2, u2, max (max u4 u5) u2, max (max u4 u5) u2} (CategoryTheory.Limits.Cone.{u1, u2, u4, u5} J _inst_1 C _inst_3 G) (CategoryTheory.Limits.Cone.{u1, u2, u4, u5} J _inst_1 C _inst_3 H) (CategoryTheory.Limits.Cone.category.{u1, u2, u4, u5} J _inst_1 C _inst_3 G) (CategoryTheory.Limits.Cone.category.{u1, u2, u4, u5} J _inst_1 C _inst_3 H) (CategoryTheory.Limits.Cones.postcomposeEquivalence.{u1, u2, u4, u5} J _inst_1 C _inst_3 G H α))) c)) (Prefunctor.obj.{succ u3, succ u3, max (max u4 u6) u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G F)) (CategoryTheory.CategoryStruct.toQuiver.{u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G F)) (CategoryTheory.Category.toCategoryStruct.{u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G F)) (CategoryTheory.Limits.Cone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G F)))) (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 H F)) (CategoryTheory.CategoryStruct.toQuiver.{u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 H F)) (CategoryTheory.Category.toCategoryStruct.{u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 H F)) (CategoryTheory.Limits.Cone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 H F)))) (CategoryTheory.Functor.toPrefunctor.{u3, u3, max (max u4 u6) u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G F)) (CategoryTheory.Limits.Cone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G F)) (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 H F)) (CategoryTheory.Limits.Cone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 H F)) (CategoryTheory.Equivalence.functor.{u3, u3, max (max u4 u6) u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G F)) (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 H F)) (CategoryTheory.Limits.Cone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G F)) (CategoryTheory.Limits.Cone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 H F)) (CategoryTheory.Limits.Cones.postcomposeEquivalence.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G F) (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 H F) (CategoryTheory.isoWhiskerRight.{u4, u1, u5, u2, u6, u3} J _inst_1 C _inst_3 D _inst_4 G H α F)))) (CategoryTheory.Functor.mapCone.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F G c))
Case conversion may be inaccurate. Consider using '#align category_theory.functor.map_cone_postcompose_equivalence_functor CategoryTheory.Functor.mapConePostcomposeEquivalenceFunctorₓ'. -/
/-- `map_cone` commutes with `postcompose_equivalence`
-/
@@ -1010,7 +1050,7 @@ def functorialityCompPrecompose {H H' : C ⥤ D} (α : H ≅ H') :
lean 3 declaration is
forall {J : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u1, u4} J] {C : Type.{u5}} [_inst_3 : CategoryTheory.Category.{u2, u5} C] {D : Type.{u6}} [_inst_4 : CategoryTheory.Category.{u3, u6} D] {F : CategoryTheory.Functor.{u1, u2, u4, u5} J _inst_1 C _inst_3} {H : CategoryTheory.Functor.{u2, u3, u5, u6} C _inst_3 D _inst_4} {H' : CategoryTheory.Functor.{u2, u3, u5, u6} C _inst_3 D _inst_4} (α : CategoryTheory.Iso.{max u5 u3, max u2 u3 u5 u6} (CategoryTheory.Functor.{u2, u3, u5, u6} C _inst_3 D _inst_4) (CategoryTheory.Functor.category.{u2, u3, u5, u6} C _inst_3 D _inst_4) H H') (c : CategoryTheory.Limits.Cocone.{u1, u2, u4, u5} J _inst_1 C _inst_3 F), CategoryTheory.Iso.{u3, max u4 u6 u3} (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H')) (CategoryTheory.Limits.Cocone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H')) (CategoryTheory.Functor.obj.{u3, u3, max u4 u6 u3, max u4 u6 u3} (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) (CategoryTheory.Limits.Cocone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H')) (CategoryTheory.Limits.Cocone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H')) (CategoryTheory.Limits.Cocones.precompose.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H) (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H') (CategoryTheory.whiskerLeft.{u4, u1, u5, u2, u6, u3} J _inst_1 C _inst_3 D _inst_4 F H' H (CategoryTheory.Iso.inv.{max u5 u3, max u2 u3 u5 u6} (CategoryTheory.Functor.{u2, u3, u5, u6} C _inst_3 D _inst_4) (CategoryTheory.Functor.category.{u2, u3, u5, u6} C _inst_3 D _inst_4) H H' α))) (CategoryTheory.Functor.mapCocone.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H c)) (CategoryTheory.Functor.mapCocone.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H' c)
but is expected to have type
- forall {J : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u1, u4} J] {C : Type.{u5}} [_inst_3 : CategoryTheory.Category.{u2, u5} C] {D : Type.{u6}} [_inst_4 : CategoryTheory.Category.{u3, u6} D] {F : CategoryTheory.Functor.{u1, u2, u4, u5} J _inst_1 C _inst_3} {H : CategoryTheory.Functor.{u2, u3, u5, u6} C _inst_3 D _inst_4} {H' : CategoryTheory.Functor.{u2, u3, u5, u6} C _inst_3 D _inst_4} (α : CategoryTheory.Iso.{max u5 u3, max (max (max u5 u6) u2) u3} (CategoryTheory.Functor.{u2, u3, u5, u6} C _inst_3 D _inst_4) (CategoryTheory.Functor.category.{u2, u3, u5, u6} C _inst_3 D _inst_4) H H') (c : CategoryTheory.Limits.Cocone.{u1, u2, u4, u5} J _inst_1 C _inst_3 F), CategoryTheory.Iso.{u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H')) (CategoryTheory.Limits.Cocone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H')) (Prefunctor.obj.{succ u3, succ u3, max (max u4 u6) u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) (CategoryTheory.CategoryStruct.toQuiver.{u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) (CategoryTheory.Category.toCategoryStruct.{u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) (CategoryTheory.Limits.Cocone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)))) (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H')) (CategoryTheory.CategoryStruct.toQuiver.{u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H')) (CategoryTheory.Category.toCategoryStruct.{u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H')) (CategoryTheory.Limits.Cocone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H')))) (CategoryTheory.Functor.toPrefunctor.{u3, u3, max (max u4 u6) u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) (CategoryTheory.Limits.Cocone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H')) (CategoryTheory.Limits.Cocone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H')) (CategoryTheory.Limits.Cocones.precompose.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H) (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H') (CategoryTheory.whiskerLeft.{u4, u1, u5, u2, u6, u3} J _inst_1 C _inst_3 D _inst_4 F H' H (CategoryTheory.Iso.inv.{max u5 u3, max (max (max u5 u6) u2) u3} (CategoryTheory.Functor.{u2, u3, u5, u6} C _inst_3 D _inst_4) (CategoryTheory.Functor.category.{u2, u3, u5, u6} C _inst_3 D _inst_4) H H' α)))) (CategoryTheory.Functor.mapCocone.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H c)) (CategoryTheory.Functor.mapCocone.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H' c)
+ forall {J : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u1, u4} J] {C : Type.{u5}} [_inst_3 : CategoryTheory.Category.{u2, u5} C] {D : Type.{u6}} [_inst_4 : CategoryTheory.Category.{u3, u6} D] {F : CategoryTheory.Functor.{u1, u2, u4, u5} J _inst_1 C _inst_3} {H : CategoryTheory.Functor.{u2, u3, u5, u6} C _inst_3 D _inst_4} {H' : CategoryTheory.Functor.{u2, u3, u5, u6} C _inst_3 D _inst_4} (α : CategoryTheory.Iso.{max u5 u3, max (max (max u5 u6) u2) u3} (CategoryTheory.Functor.{u2, u3, u5, u6} C _inst_3 D _inst_4) (CategoryTheory.Functor.category.{u2, u3, u5, u6} C _inst_3 D _inst_4) H H') (c : CategoryTheory.Limits.Cocone.{u1, u2, u4, u5} J _inst_1 C _inst_3 F), CategoryTheory.Iso.{u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H')) (CategoryTheory.Limits.Cocone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H')) (Prefunctor.obj.{succ u3, succ u3, max (max u4 u6) u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) (CategoryTheory.CategoryStruct.toQuiver.{u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) (CategoryTheory.Category.toCategoryStruct.{u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) (CategoryTheory.Limits.Cocone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)))) (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H')) (CategoryTheory.CategoryStruct.toQuiver.{u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H')) (CategoryTheory.Category.toCategoryStruct.{u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H')) (CategoryTheory.Limits.Cocone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H')))) (CategoryTheory.Functor.toPrefunctor.{u3, u3, max (max u4 u6) u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) (CategoryTheory.Limits.Cocone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H')) (CategoryTheory.Limits.Cocone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H')) (CategoryTheory.Limits.Cocones.precompose.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H) (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H') (CategoryTheory.whiskerLeft.{u4, u1, u5, u2, u6, u3} J _inst_1 C _inst_3 D _inst_4 F H' H (CategoryTheory.Iso.inv.{max u5 u3, max (max (max u5 u6) u2) u3} (CategoryTheory.Functor.{u2, u3, u5, u6} C _inst_3 D _inst_4) (CategoryTheory.Functor.category.{u2, u3, u5, u6} C _inst_3 D _inst_4) H H' α)))) (CategoryTheory.Functor.mapCocone.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 H F c)) (CategoryTheory.Functor.mapCocone.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 H' F c)
Case conversion may be inaccurate. Consider using '#align category_theory.functor.precompose_whisker_left_map_cocone CategoryTheory.Functor.precomposeWhiskerLeftMapCoconeₓ'. -/
/--
For `F : J ⥤ C`, given a cocone `c : cocone F`, and a natural isomorphism `α : H ≅ H'` for functors
@@ -1027,7 +1067,7 @@ def precomposeWhiskerLeftMapCocone {H H' : C ⥤ D} (α : H ≅ H') (c : Cocone
lean 3 declaration is
forall {J : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u1, u4} J] {C : Type.{u5}} [_inst_3 : CategoryTheory.Category.{u2, u5} C] {D : Type.{u6}} [_inst_4 : CategoryTheory.Category.{u3, u6} D] {F : CategoryTheory.Functor.{u1, u2, u4, u5} J _inst_1 C _inst_3} {G : CategoryTheory.Functor.{u1, u2, u4, u5} J _inst_1 C _inst_3} (H : CategoryTheory.Functor.{u2, u3, u5, u6} C _inst_3 D _inst_4) {α : Quiver.Hom.{succ (max u4 u2), max u1 u2 u4 u5} (CategoryTheory.Functor.{u1, u2, u4, u5} J _inst_1 C _inst_3) (CategoryTheory.CategoryStruct.toQuiver.{max u4 u2, max u1 u2 u4 u5} (CategoryTheory.Functor.{u1, u2, u4, u5} J _inst_1 C _inst_3) (CategoryTheory.Category.toCategoryStruct.{max u4 u2, max u1 u2 u4 u5} (CategoryTheory.Functor.{u1, u2, u4, u5} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u4, u5} J _inst_1 C _inst_3))) F G} {c : CategoryTheory.Limits.Cocone.{u1, u2, u4, u5} J _inst_1 C _inst_3 G}, CategoryTheory.Iso.{u3, max u4 u6 u3} (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) (CategoryTheory.Limits.Cocone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) (CategoryTheory.Functor.mapCocone.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H (CategoryTheory.Functor.obj.{u2, u2, max u4 u5 u2, max u4 u5 u2} (CategoryTheory.Limits.Cocone.{u1, u2, u4, u5} J _inst_1 C _inst_3 G) (CategoryTheory.Limits.Cocone.category.{u1, u2, u4, u5} J _inst_1 C _inst_3 G) (CategoryTheory.Limits.Cocone.{u1, u2, u4, u5} J _inst_1 C _inst_3 F) (CategoryTheory.Limits.Cocone.category.{u1, u2, u4, u5} J _inst_1 C _inst_3 F) (CategoryTheory.Limits.Cocones.precompose.{u1, u2, u4, u5} J _inst_1 C _inst_3 G F α) c)) (CategoryTheory.Functor.obj.{u3, u3, max u4 u6 u3, max u4 u6 u3} (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G H)) (CategoryTheory.Limits.Cocone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G H)) (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) (CategoryTheory.Limits.Cocone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) (CategoryTheory.Limits.Cocones.precompose.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G H) (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H) (CategoryTheory.whiskerRight.{u4, u1, u5, u2, u6, u3} J _inst_1 C _inst_3 D _inst_4 F G α H)) (CategoryTheory.Functor.mapCocone.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G H c))
but is expected to have type
- forall {J : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u1, u4} J] {C : Type.{u5}} [_inst_3 : CategoryTheory.Category.{u2, u5} C] {D : Type.{u6}} [_inst_4 : CategoryTheory.Category.{u3, u6} D] {F : CategoryTheory.Functor.{u1, u2, u4, u5} J _inst_1 C _inst_3} {G : CategoryTheory.Functor.{u1, u2, u4, u5} J _inst_1 C _inst_3} (H : CategoryTheory.Functor.{u2, u3, u5, u6} C _inst_3 D _inst_4) {α : Quiver.Hom.{max (succ u4) (succ u2), max (max (max u4 u5) u1) u2} (CategoryTheory.Functor.{u1, u2, u4, u5} J _inst_1 C _inst_3) (CategoryTheory.CategoryStruct.toQuiver.{max u4 u2, max (max (max u4 u5) u1) u2} (CategoryTheory.Functor.{u1, u2, u4, u5} J _inst_1 C _inst_3) (CategoryTheory.Category.toCategoryStruct.{max u4 u2, max (max (max u4 u5) u1) u2} (CategoryTheory.Functor.{u1, u2, u4, u5} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u4, u5} J _inst_1 C _inst_3))) F G} {c : CategoryTheory.Limits.Cocone.{u1, u2, u4, u5} J _inst_1 C _inst_3 G}, CategoryTheory.Iso.{u3, max (max u6 u3) u4} (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) (CategoryTheory.Limits.Cocone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) (CategoryTheory.Functor.mapCocone.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H (Prefunctor.obj.{succ u2, succ u2, max (max u4 u5) u2, max (max u4 u5) u2} (CategoryTheory.Limits.Cocone.{u1, u2, u4, u5} J _inst_1 C _inst_3 G) (CategoryTheory.CategoryStruct.toQuiver.{u2, max (max u4 u5) u2} (CategoryTheory.Limits.Cocone.{u1, u2, u4, u5} J _inst_1 C _inst_3 G) (CategoryTheory.Category.toCategoryStruct.{u2, max (max u4 u5) u2} (CategoryTheory.Limits.Cocone.{u1, u2, u4, u5} J _inst_1 C _inst_3 G) (CategoryTheory.Limits.Cocone.category.{u1, u2, u4, u5} J _inst_1 C _inst_3 G))) (CategoryTheory.Limits.Cocone.{u1, u2, u4, u5} J _inst_1 C _inst_3 F) (CategoryTheory.CategoryStruct.toQuiver.{u2, max (max u4 u5) u2} (CategoryTheory.Limits.Cocone.{u1, u2, u4, u5} J _inst_1 C _inst_3 F) (CategoryTheory.Category.toCategoryStruct.{u2, max (max u4 u5) u2} (CategoryTheory.Limits.Cocone.{u1, u2, u4, u5} J _inst_1 C _inst_3 F) (CategoryTheory.Limits.Cocone.category.{u1, u2, u4, u5} J _inst_1 C _inst_3 F))) (CategoryTheory.Functor.toPrefunctor.{u2, u2, max (max u4 u5) u2, max (max u4 u5) u2} (CategoryTheory.Limits.Cocone.{u1, u2, u4, u5} J _inst_1 C _inst_3 G) (CategoryTheory.Limits.Cocone.category.{u1, u2, u4, u5} J _inst_1 C _inst_3 G) (CategoryTheory.Limits.Cocone.{u1, u2, u4, u5} J _inst_1 C _inst_3 F) (CategoryTheory.Limits.Cocone.category.{u1, u2, u4, u5} J _inst_1 C _inst_3 F) (CategoryTheory.Limits.Cocones.precompose.{u1, u2, u4, u5} J _inst_1 C _inst_3 G F α)) c)) (Prefunctor.obj.{succ u3, succ u3, max (max u4 u6) u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G H)) (CategoryTheory.CategoryStruct.toQuiver.{u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G H)) (CategoryTheory.Category.toCategoryStruct.{u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G H)) (CategoryTheory.Limits.Cocone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G H)))) (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) (CategoryTheory.CategoryStruct.toQuiver.{u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) (CategoryTheory.Category.toCategoryStruct.{u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) (CategoryTheory.Limits.Cocone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)))) (CategoryTheory.Functor.toPrefunctor.{u3, u3, max (max u4 u6) u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G H)) (CategoryTheory.Limits.Cocone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G H)) (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) (CategoryTheory.Limits.Cocone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) (CategoryTheory.Limits.Cocones.precompose.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G H) (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H) (CategoryTheory.whiskerRight.{u4, u1, u5, u2, u6, u3} J _inst_1 C _inst_3 D _inst_4 F G α H))) (CategoryTheory.Functor.mapCocone.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G H c))
+ forall {J : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u1, u4} J] {C : Type.{u5}} [_inst_3 : CategoryTheory.Category.{u2, u5} C] {D : Type.{u6}} [_inst_4 : CategoryTheory.Category.{u3, u6} D] (F : CategoryTheory.Functor.{u2, u3, u5, u6} C _inst_3 D _inst_4) {G : CategoryTheory.Functor.{u1, u2, u4, u5} J _inst_1 C _inst_3} {H : CategoryTheory.Functor.{u1, u2, u4, u5} J _inst_1 C _inst_3} {α : Quiver.Hom.{max (succ u4) (succ u2), max (max (max u4 u5) u1) u2} (CategoryTheory.Functor.{u1, u2, u4, u5} J _inst_1 C _inst_3) (CategoryTheory.CategoryStruct.toQuiver.{max u4 u2, max (max (max u4 u5) u1) u2} (CategoryTheory.Functor.{u1, u2, u4, u5} J _inst_1 C _inst_3) (CategoryTheory.Category.toCategoryStruct.{max u4 u2, max (max (max u4 u5) u1) u2} (CategoryTheory.Functor.{u1, u2, u4, u5} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u4, u5} J _inst_1 C _inst_3))) G H} {c : CategoryTheory.Limits.Cocone.{u1, u2, u4, u5} J _inst_1 C _inst_3 H}, CategoryTheory.Iso.{u3, max (max u6 u3) u4} (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G F)) (CategoryTheory.Limits.Cocone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G F)) (CategoryTheory.Functor.mapCocone.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F G (Prefunctor.obj.{succ u2, succ u2, max (max u4 u5) u2, max (max u4 u5) u2} (CategoryTheory.Limits.Cocone.{u1, u2, u4, u5} J _inst_1 C _inst_3 H) (CategoryTheory.CategoryStruct.toQuiver.{u2, max (max u4 u5) u2} (CategoryTheory.Limits.Cocone.{u1, u2, u4, u5} J _inst_1 C _inst_3 H) (CategoryTheory.Category.toCategoryStruct.{u2, max (max u4 u5) u2} (CategoryTheory.Limits.Cocone.{u1, u2, u4, u5} J _inst_1 C _inst_3 H) (CategoryTheory.Limits.Cocone.category.{u1, u2, u4, u5} J _inst_1 C _inst_3 H))) (CategoryTheory.Limits.Cocone.{u1, u2, u4, u5} J _inst_1 C _inst_3 G) (CategoryTheory.CategoryStruct.toQuiver.{u2, max (max u4 u5) u2} (CategoryTheory.Limits.Cocone.{u1, u2, u4, u5} J _inst_1 C _inst_3 G) (CategoryTheory.Category.toCategoryStruct.{u2, max (max u4 u5) u2} (CategoryTheory.Limits.Cocone.{u1, u2, u4, u5} J _inst_1 C _inst_3 G) (CategoryTheory.Limits.Cocone.category.{u1, u2, u4, u5} J _inst_1 C _inst_3 G))) (CategoryTheory.Functor.toPrefunctor.{u2, u2, max (max u4 u5) u2, max (max u4 u5) u2} (CategoryTheory.Limits.Cocone.{u1, u2, u4, u5} J _inst_1 C _inst_3 H) (CategoryTheory.Limits.Cocone.category.{u1, u2, u4, u5} J _inst_1 C _inst_3 H) (CategoryTheory.Limits.Cocone.{u1, u2, u4, u5} J _inst_1 C _inst_3 G) (CategoryTheory.Limits.Cocone.category.{u1, u2, u4, u5} J _inst_1 C _inst_3 G) (CategoryTheory.Limits.Cocones.precompose.{u1, u2, u4, u5} J _inst_1 C _inst_3 H G α)) c)) (Prefunctor.obj.{succ u3, succ u3, max (max u4 u6) u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 H F)) (CategoryTheory.CategoryStruct.toQuiver.{u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 H F)) (CategoryTheory.Category.toCategoryStruct.{u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 H F)) (CategoryTheory.Limits.Cocone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 H F)))) (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G F)) (CategoryTheory.CategoryStruct.toQuiver.{u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G F)) (CategoryTheory.Category.toCategoryStruct.{u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G F)) (CategoryTheory.Limits.Cocone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G F)))) (CategoryTheory.Functor.toPrefunctor.{u3, u3, max (max u4 u6) u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 H F)) (CategoryTheory.Limits.Cocone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 H F)) (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G F)) (CategoryTheory.Limits.Cocone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G F)) (CategoryTheory.Limits.Cocones.precompose.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 H F) (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G F) (CategoryTheory.whiskerRight.{u4, u1, u5, u2, u6, u3} J _inst_1 C _inst_3 D _inst_4 G H α F))) (CategoryTheory.Functor.mapCocone.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H c))
Case conversion may be inaccurate. Consider using '#align category_theory.functor.map_cocone_precompose CategoryTheory.Functor.mapCoconePrecomposeₓ'. -/
/-- `map_cocone` commutes with `precompose`. In particular, for `F : J ⥤ C`, given a cocone
`c : cocone F`, a natural transformation `α : F ⟶ G` and a functor `H : C ⥤ D`, we have two obvious
@@ -1044,7 +1084,7 @@ def mapCoconePrecompose {α : F ⟶ G} {c} :
lean 3 declaration is
forall {J : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u1, u4} J] {C : Type.{u5}} [_inst_3 : CategoryTheory.Category.{u2, u5} C] {D : Type.{u6}} [_inst_4 : CategoryTheory.Category.{u3, u6} D] {F : CategoryTheory.Functor.{u1, u2, u4, u5} J _inst_1 C _inst_3} {G : CategoryTheory.Functor.{u1, u2, u4, u5} J _inst_1 C _inst_3} (H : CategoryTheory.Functor.{u2, u3, u5, u6} C _inst_3 D _inst_4) {α : CategoryTheory.Iso.{max u4 u2, max u1 u2 u4 u5} (CategoryTheory.Functor.{u1, u2, u4, u5} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u4, u5} J _inst_1 C _inst_3) F G} {c : CategoryTheory.Limits.Cocone.{u1, u2, u4, u5} J _inst_1 C _inst_3 G}, CategoryTheory.Iso.{u3, max u4 u6 u3} (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) (CategoryTheory.Limits.Cocone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) (CategoryTheory.Functor.mapCocone.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H (CategoryTheory.Functor.obj.{u2, u2, max u4 u5 u2, max u4 u5 u2} (CategoryTheory.Limits.Cocone.{u1, u2, u4, u5} J _inst_1 C _inst_3 G) (CategoryTheory.Limits.Cocone.category.{u1, u2, u4, u5} J _inst_1 C _inst_3 G) (CategoryTheory.Limits.Cocone.{u1, u2, u4, u5} J _inst_1 C _inst_3 F) (CategoryTheory.Limits.Cocone.category.{u1, u2, u4, u5} J _inst_1 C _inst_3 F) (CategoryTheory.Equivalence.functor.{u2, u2, max u4 u5 u2, max u4 u5 u2} (CategoryTheory.Limits.Cocone.{u1, u2, u4, u5} J _inst_1 C _inst_3 G) (CategoryTheory.Limits.Cocone.category.{u1, u2, u4, u5} J _inst_1 C _inst_3 G) (CategoryTheory.Limits.Cocone.{u1, u2, u4, u5} J _inst_1 C _inst_3 F) (CategoryTheory.Limits.Cocone.category.{u1, u2, u4, u5} J _inst_1 C _inst_3 F) (CategoryTheory.Limits.Cocones.precomposeEquivalence.{u1, u2, u4, u5} J _inst_1 C _inst_3 G F α)) c)) (CategoryTheory.Functor.obj.{u3, u3, max u4 u6 u3, max u4 u6 u3} (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G H)) (CategoryTheory.Limits.Cocone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G H)) (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) (CategoryTheory.Limits.Cocone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) (CategoryTheory.Equivalence.functor.{u3, u3, max u4 u6 u3, max u4 u6 u3} (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G H)) (CategoryTheory.Limits.Cocone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G H)) (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) (CategoryTheory.Limits.Cocone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) (CategoryTheory.Limits.Cocones.precomposeEquivalence.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G H) (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H) (CategoryTheory.isoWhiskerRight.{u4, u1, u5, u2, u6, u3} J _inst_1 C _inst_3 D _inst_4 F G α H))) (CategoryTheory.Functor.mapCocone.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G H c))
but is expected to have type
- forall {J : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u1, u4} J] {C : Type.{u5}} [_inst_3 : CategoryTheory.Category.{u2, u5} C] {D : Type.{u6}} [_inst_4 : CategoryTheory.Category.{u3, u6} D] {F : CategoryTheory.Functor.{u1, u2, u4, u5} J _inst_1 C _inst_3} {G : CategoryTheory.Functor.{u1, u2, u4, u5} J _inst_1 C _inst_3} (H : CategoryTheory.Functor.{u2, u3, u5, u6} C _inst_3 D _inst_4) {α : CategoryTheory.Iso.{max u4 u2, max (max (max u4 u5) u1) u2} (CategoryTheory.Functor.{u1, u2, u4, u5} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u4, u5} J _inst_1 C _inst_3) F G} {c : CategoryTheory.Limits.Cocone.{u1, u2, u4, u5} J _inst_1 C _inst_3 G}, CategoryTheory.Iso.{u3, max (max u6 u3) u4} (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) (CategoryTheory.Limits.Cocone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) (CategoryTheory.Functor.mapCocone.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H (Prefunctor.obj.{succ u2, succ u2, max (max u4 u5) u2, max (max u4 u5) u2} (CategoryTheory.Limits.Cocone.{u1, u2, u4, u5} J _inst_1 C _inst_3 G) (CategoryTheory.CategoryStruct.toQuiver.{u2, max (max u4 u5) u2} (CategoryTheory.Limits.Cocone.{u1, u2, u4, u5} J _inst_1 C _inst_3 G) (CategoryTheory.Category.toCategoryStruct.{u2, max (max u4 u5) u2} (CategoryTheory.Limits.Cocone.{u1, u2, u4, u5} J _inst_1 C _inst_3 G) (CategoryTheory.Limits.Cocone.category.{u1, u2, u4, u5} J _inst_1 C _inst_3 G))) (CategoryTheory.Limits.Cocone.{u1, u2, u4, u5} J _inst_1 C _inst_3 F) (CategoryTheory.CategoryStruct.toQuiver.{u2, max (max u4 u5) u2} (CategoryTheory.Limits.Cocone.{u1, u2, u4, u5} J _inst_1 C _inst_3 F) (CategoryTheory.Category.toCategoryStruct.{u2, max (max u4 u5) u2} (CategoryTheory.Limits.Cocone.{u1, u2, u4, u5} J _inst_1 C _inst_3 F) (CategoryTheory.Limits.Cocone.category.{u1, u2, u4, u5} J _inst_1 C _inst_3 F))) (CategoryTheory.Functor.toPrefunctor.{u2, u2, max (max u4 u5) u2, max (max u4 u5) u2} (CategoryTheory.Limits.Cocone.{u1, u2, u4, u5} J _inst_1 C _inst_3 G) (CategoryTheory.Limits.Cocone.category.{u1, u2, u4, u5} J _inst_1 C _inst_3 G) (CategoryTheory.Limits.Cocone.{u1, u2, u4, u5} J _inst_1 C _inst_3 F) (CategoryTheory.Limits.Cocone.category.{u1, u2, u4, u5} J _inst_1 C _inst_3 F) (CategoryTheory.Equivalence.functor.{u2, u2, max (max u4 u5) u2, max (max u4 u5) u2} (CategoryTheory.Limits.Cocone.{u1, u2, u4, u5} J _inst_1 C _inst_3 G) (CategoryTheory.Limits.Cocone.{u1, u2, u4, u5} J _inst_1 C _inst_3 F) (CategoryTheory.Limits.Cocone.category.{u1, u2, u4, u5} J _inst_1 C _inst_3 G) (CategoryTheory.Limits.Cocone.category.{u1, u2, u4, u5} J _inst_1 C _inst_3 F) (CategoryTheory.Limits.Cocones.precomposeEquivalence.{u1, u2, u4, u5} J _inst_1 C _inst_3 G F α))) c)) (Prefunctor.obj.{succ u3, succ u3, max (max u4 u6) u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G H)) (CategoryTheory.CategoryStruct.toQuiver.{u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G H)) (CategoryTheory.Category.toCategoryStruct.{u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G H)) (CategoryTheory.Limits.Cocone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G H)))) (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) (CategoryTheory.CategoryStruct.toQuiver.{u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) (CategoryTheory.Category.toCategoryStruct.{u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) (CategoryTheory.Limits.Cocone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)))) (CategoryTheory.Functor.toPrefunctor.{u3, u3, max (max u4 u6) u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G H)) (CategoryTheory.Limits.Cocone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G H)) (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) (CategoryTheory.Limits.Cocone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) (CategoryTheory.Equivalence.functor.{u3, u3, max (max u4 u6) u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G H)) (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) (CategoryTheory.Limits.Cocone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G H)) (CategoryTheory.Limits.Cocone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) (CategoryTheory.Limits.Cocones.precomposeEquivalence.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G H) (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H) (CategoryTheory.isoWhiskerRight.{u4, u1, u5, u2, u6, u3} J _inst_1 C _inst_3 D _inst_4 F G α H)))) (CategoryTheory.Functor.mapCocone.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G H c))
+ forall {J : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u1, u4} J] {C : Type.{u5}} [_inst_3 : CategoryTheory.Category.{u2, u5} C] {D : Type.{u6}} [_inst_4 : CategoryTheory.Category.{u3, u6} D] (F : CategoryTheory.Functor.{u2, u3, u5, u6} C _inst_3 D _inst_4) {G : CategoryTheory.Functor.{u1, u2, u4, u5} J _inst_1 C _inst_3} {H : CategoryTheory.Functor.{u1, u2, u4, u5} J _inst_1 C _inst_3} {α : CategoryTheory.Iso.{max u4 u2, max (max (max u4 u5) u1) u2} (CategoryTheory.Functor.{u1, u2, u4, u5} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u4, u5} J _inst_1 C _inst_3) G H} {c : CategoryTheory.Limits.Cocone.{u1, u2, u4, u5} J _inst_1 C _inst_3 H}, CategoryTheory.Iso.{u3, max (max u6 u3) u4} (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G F)) (CategoryTheory.Limits.Cocone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G F)) (CategoryTheory.Functor.mapCocone.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F G (Prefunctor.obj.{succ u2, succ u2, max (max u4 u5) u2, max (max u4 u5) u2} (CategoryTheory.Limits.Cocone.{u1, u2, u4, u5} J _inst_1 C _inst_3 H) (CategoryTheory.CategoryStruct.toQuiver.{u2, max (max u4 u5) u2} (CategoryTheory.Limits.Cocone.{u1, u2, u4, u5} J _inst_1 C _inst_3 H) (CategoryTheory.Category.toCategoryStruct.{u2, max (max u4 u5) u2} (CategoryTheory.Limits.Cocone.{u1, u2, u4, u5} J _inst_1 C _inst_3 H) (CategoryTheory.Limits.Cocone.category.{u1, u2, u4, u5} J _inst_1 C _inst_3 H))) (CategoryTheory.Limits.Cocone.{u1, u2, u4, u5} J _inst_1 C _inst_3 G) (CategoryTheory.CategoryStruct.toQuiver.{u2, max (max u4 u5) u2} (CategoryTheory.Limits.Cocone.{u1, u2, u4, u5} J _inst_1 C _inst_3 G) (CategoryTheory.Category.toCategoryStruct.{u2, max (max u4 u5) u2} (CategoryTheory.Limits.Cocone.{u1, u2, u4, u5} J _inst_1 C _inst_3 G) (CategoryTheory.Limits.Cocone.category.{u1, u2, u4, u5} J _inst_1 C _inst_3 G))) (CategoryTheory.Functor.toPrefunctor.{u2, u2, max (max u4 u5) u2, max (max u4 u5) u2} (CategoryTheory.Limits.Cocone.{u1, u2, u4, u5} J _inst_1 C _inst_3 H) (CategoryTheory.Limits.Cocone.category.{u1, u2, u4, u5} J _inst_1 C _inst_3 H) (CategoryTheory.Limits.Cocone.{u1, u2, u4, u5} J _inst_1 C _inst_3 G) (CategoryTheory.Limits.Cocone.category.{u1, u2, u4, u5} J _inst_1 C _inst_3 G) (CategoryTheory.Equivalence.functor.{u2, u2, max (max u4 u5) u2, max (max u4 u5) u2} (CategoryTheory.Limits.Cocone.{u1, u2, u4, u5} J _inst_1 C _inst_3 H) (CategoryTheory.Limits.Cocone.{u1, u2, u4, u5} J _inst_1 C _inst_3 G) (CategoryTheory.Limits.Cocone.category.{u1, u2, u4, u5} J _inst_1 C _inst_3 H) (CategoryTheory.Limits.Cocone.category.{u1, u2, u4, u5} J _inst_1 C _inst_3 G) (CategoryTheory.Limits.Cocones.precomposeEquivalence.{u1, u2, u4, u5} J _inst_1 C _inst_3 H G α))) c)) (Prefunctor.obj.{succ u3, succ u3, max (max u4 u6) u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 H F)) (CategoryTheory.CategoryStruct.toQuiver.{u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 H F)) (CategoryTheory.Category.toCategoryStruct.{u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 H F)) (CategoryTheory.Limits.Cocone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 H F)))) (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G F)) (CategoryTheory.CategoryStruct.toQuiver.{u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G F)) (CategoryTheory.Category.toCategoryStruct.{u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G F)) (CategoryTheory.Limits.Cocone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G F)))) (CategoryTheory.Functor.toPrefunctor.{u3, u3, max (max u4 u6) u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 H F)) (CategoryTheory.Limits.Cocone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 H F)) (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G F)) (CategoryTheory.Limits.Cocone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G F)) (CategoryTheory.Equivalence.functor.{u3, u3, max (max u4 u6) u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 H F)) (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G F)) (CategoryTheory.Limits.Cocone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 H F)) (CategoryTheory.Limits.Cocone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G F)) (CategoryTheory.Limits.Cocones.precomposeEquivalence.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 H F) (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G F) (CategoryTheory.isoWhiskerRight.{u4, u1, u5, u2, u6, u3} J _inst_1 C _inst_3 D _inst_4 G H α F)))) (CategoryTheory.Functor.mapCocone.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H c))
Case conversion may be inaccurate. Consider using '#align category_theory.functor.map_cocone_precompose_equivalence_functor CategoryTheory.Functor.mapCoconePrecomposeEquivalenceFunctorₓ'. -/
/-- `map_cocone` commutes with `precompose_equivalence`
-/
@@ -1055,16 +1095,25 @@ def mapCoconePrecomposeEquivalenceFunctor {α : F ≅ G} {c} :
Cocones.ext (Iso.refl _) (by tidy)
#align category_theory.functor.map_cocone_precompose_equivalence_functor CategoryTheory.Functor.mapCoconePrecomposeEquivalenceFunctor
-#print CategoryTheory.Functor.mapConeWhisker /-
+/- warning: category_theory.functor.map_cone_whisker -> CategoryTheory.Functor.mapConeWhisker is a dubious translation:
+lean 3 declaration is
+ forall {J : Type.{u5}} [_inst_1 : CategoryTheory.Category.{u1, u5} J] {K : Type.{u6}} [_inst_2 : CategoryTheory.Category.{u2, u6} K] {C : Type.{u7}} [_inst_3 : CategoryTheory.Category.{u3, u7} C] {D : Type.{u8}} [_inst_4 : CategoryTheory.Category.{u4, u8} D] {F : CategoryTheory.Functor.{u1, u3, u5, u7} J _inst_1 C _inst_3} (H : CategoryTheory.Functor.{u3, u4, u7, u8} C _inst_3 D _inst_4) {E : CategoryTheory.Functor.{u2, u1, u6, u5} K _inst_2 J _inst_1} {c : CategoryTheory.Limits.Cone.{u1, u3, u5, u7} J _inst_1 C _inst_3 F}, CategoryTheory.Iso.{u4, max u6 u8 u4} (CategoryTheory.Limits.Cone.{u2, u4, u6, u8} K _inst_2 D _inst_4 (CategoryTheory.Functor.comp.{u2, u3, u4, u6, u7, u8} K _inst_2 C _inst_3 D _inst_4 (CategoryTheory.Functor.comp.{u2, u1, u3, u6, u5, u7} K _inst_2 J _inst_1 C _inst_3 E F) H)) (CategoryTheory.Limits.Cone.category.{u2, u4, u6, u8} K _inst_2 D _inst_4 (CategoryTheory.Functor.comp.{u2, u3, u4, u6, u7, u8} K _inst_2 C _inst_3 D _inst_4 (CategoryTheory.Functor.comp.{u2, u1, u3, u6, u5, u7} K _inst_2 J _inst_1 C _inst_3 E F) H)) (CategoryTheory.Functor.mapCone.{u2, u3, u4, u6, u7, u8} K _inst_2 C _inst_3 D _inst_4 (CategoryTheory.Functor.comp.{u2, u1, u3, u6, u5, u7} K _inst_2 J _inst_1 C _inst_3 E F) H (CategoryTheory.Limits.Cone.whisker.{u1, u2, u3, u5, u6, u7} J _inst_1 K _inst_2 C _inst_3 F E c)) (CategoryTheory.Limits.Cone.whisker.{u1, u2, u4, u5, u6, u8} J _inst_1 K _inst_2 D _inst_4 (CategoryTheory.Functor.comp.{u1, u3, u4, u5, u7, u8} J _inst_1 C _inst_3 D _inst_4 F H) E (CategoryTheory.Functor.mapCone.{u1, u3, u4, u5, u7, u8} J _inst_1 C _inst_3 D _inst_4 F H c))
+but is expected to have type
+ forall {J : Type.{u5}} [_inst_1 : CategoryTheory.Category.{u1, u5} J] {K : Type.{u6}} [_inst_2 : CategoryTheory.Category.{u2, u6} K] {C : Type.{u7}} [_inst_3 : CategoryTheory.Category.{u3, u7} C] {D : Type.{u8}} [_inst_4 : CategoryTheory.Category.{u4, u8} D] (F : CategoryTheory.Functor.{u3, u4, u7, u8} C _inst_3 D _inst_4) {H : CategoryTheory.Functor.{u1, u3, u5, u7} J _inst_1 C _inst_3} {E : CategoryTheory.Functor.{u2, u1, u6, u5} K _inst_2 J _inst_1} {c : CategoryTheory.Limits.Cone.{u1, u3, u5, u7} J _inst_1 C _inst_3 H}, CategoryTheory.Iso.{u4, max (max u8 u4) u6} (CategoryTheory.Limits.Cone.{u2, u4, u6, u8} K _inst_2 D _inst_4 (CategoryTheory.Functor.comp.{u2, u3, u4, u6, u7, u8} K _inst_2 C _inst_3 D _inst_4 (CategoryTheory.Functor.comp.{u2, u1, u3, u6, u5, u7} K _inst_2 J _inst_1 C _inst_3 E H) F)) (CategoryTheory.Limits.Cone.category.{u2, u4, u6, u8} K _inst_2 D _inst_4 (CategoryTheory.Functor.comp.{u2, u3, u4, u6, u7, u8} K _inst_2 C _inst_3 D _inst_4 (CategoryTheory.Functor.comp.{u2, u1, u3, u6, u5, u7} K _inst_2 J _inst_1 C _inst_3 E H) F)) (CategoryTheory.Functor.mapCone.{u2, u3, u4, u6, u7, u8} K _inst_2 C _inst_3 D _inst_4 F (CategoryTheory.Functor.comp.{u2, u1, u3, u6, u5, u7} K _inst_2 J _inst_1 C _inst_3 E H) (CategoryTheory.Limits.Cone.whisker.{u1, u2, u3, u5, u6, u7} J _inst_1 K _inst_2 C _inst_3 H E c)) (CategoryTheory.Limits.Cone.whisker.{u1, u2, u4, u5, u6, u8} J _inst_1 K _inst_2 D _inst_4 (CategoryTheory.Functor.comp.{u1, u3, u4, u5, u7, u8} J _inst_1 C _inst_3 D _inst_4 H F) E (CategoryTheory.Functor.mapCone.{u1, u3, u4, u5, u7, u8} J _inst_1 C _inst_3 D _inst_4 F H c))
+Case conversion may be inaccurate. Consider using '#align category_theory.functor.map_cone_whisker CategoryTheory.Functor.mapConeWhiskerₓ'. -/
/-- `map_cone` commutes with `whisker`
-/
@[simps]
def mapConeWhisker {E : K ⥤ J} {c : Cone F} : H.mapCone (c.whisker E) ≅ (H.mapCone c).whisker E :=
Cones.ext (Iso.refl _) (by tidy)
#align category_theory.functor.map_cone_whisker CategoryTheory.Functor.mapConeWhisker
--/
-#print CategoryTheory.Functor.mapCoconeWhisker /-
+/- warning: category_theory.functor.map_cocone_whisker -> CategoryTheory.Functor.mapCoconeWhisker is a dubious translation:
+lean 3 declaration is
+ forall {J : Type.{u5}} [_inst_1 : CategoryTheory.Category.{u1, u5} J] {K : Type.{u6}} [_inst_2 : CategoryTheory.Category.{u2, u6} K] {C : Type.{u7}} [_inst_3 : CategoryTheory.Category.{u3, u7} C] {D : Type.{u8}} [_inst_4 : CategoryTheory.Category.{u4, u8} D] {F : CategoryTheory.Functor.{u1, u3, u5, u7} J _inst_1 C _inst_3} (H : CategoryTheory.Functor.{u3, u4, u7, u8} C _inst_3 D _inst_4) {E : CategoryTheory.Functor.{u2, u1, u6, u5} K _inst_2 J _inst_1} {c : CategoryTheory.Limits.Cocone.{u1, u3, u5, u7} J _inst_1 C _inst_3 F}, CategoryTheory.Iso.{u4, max u6 u8 u4} (CategoryTheory.Limits.Cocone.{u2, u4, u6, u8} K _inst_2 D _inst_4 (CategoryTheory.Functor.comp.{u2, u3, u4, u6, u7, u8} K _inst_2 C _inst_3 D _inst_4 (CategoryTheory.Functor.comp.{u2, u1, u3, u6, u5, u7} K _inst_2 J _inst_1 C _inst_3 E F) H)) (CategoryTheory.Limits.Cocone.category.{u2, u4, u6, u8} K _inst_2 D _inst_4 (CategoryTheory.Functor.comp.{u2, u3, u4, u6, u7, u8} K _inst_2 C _inst_3 D _inst_4 (CategoryTheory.Functor.comp.{u2, u1, u3, u6, u5, u7} K _inst_2 J _inst_1 C _inst_3 E F) H)) (CategoryTheory.Functor.mapCocone.{u2, u3, u4, u6, u7, u8} K _inst_2 C _inst_3 D _inst_4 (CategoryTheory.Functor.comp.{u2, u1, u3, u6, u5, u7} K _inst_2 J _inst_1 C _inst_3 E F) H (CategoryTheory.Limits.Cocone.whisker.{u1, u2, u3, u5, u6, u7} J _inst_1 K _inst_2 C _inst_3 F E c)) (CategoryTheory.Limits.Cocone.whisker.{u1, u2, u4, u5, u6, u8} J _inst_1 K _inst_2 D _inst_4 (CategoryTheory.Functor.comp.{u1, u3, u4, u5, u7, u8} J _inst_1 C _inst_3 D _inst_4 F H) E (CategoryTheory.Functor.mapCocone.{u1, u3, u4, u5, u7, u8} J _inst_1 C _inst_3 D _inst_4 F H c))
+but is expected to have type
+ forall {J : Type.{u5}} [_inst_1 : CategoryTheory.Category.{u1, u5} J] {K : Type.{u6}} [_inst_2 : CategoryTheory.Category.{u2, u6} K] {C : Type.{u7}} [_inst_3 : CategoryTheory.Category.{u3, u7} C] {D : Type.{u8}} [_inst_4 : CategoryTheory.Category.{u4, u8} D] (F : CategoryTheory.Functor.{u3, u4, u7, u8} C _inst_3 D _inst_4) {H : CategoryTheory.Functor.{u1, u3, u5, u7} J _inst_1 C _inst_3} {E : CategoryTheory.Functor.{u2, u1, u6, u5} K _inst_2 J _inst_1} {c : CategoryTheory.Limits.Cocone.{u1, u3, u5, u7} J _inst_1 C _inst_3 H}, CategoryTheory.Iso.{u4, max (max u8 u4) u6} (CategoryTheory.Limits.Cocone.{u2, u4, u6, u8} K _inst_2 D _inst_4 (CategoryTheory.Functor.comp.{u2, u3, u4, u6, u7, u8} K _inst_2 C _inst_3 D _inst_4 (CategoryTheory.Functor.comp.{u2, u1, u3, u6, u5, u7} K _inst_2 J _inst_1 C _inst_3 E H) F)) (CategoryTheory.Limits.Cocone.category.{u2, u4, u6, u8} K _inst_2 D _inst_4 (CategoryTheory.Functor.comp.{u2, u3, u4, u6, u7, u8} K _inst_2 C _inst_3 D _inst_4 (CategoryTheory.Functor.comp.{u2, u1, u3, u6, u5, u7} K _inst_2 J _inst_1 C _inst_3 E H) F)) (CategoryTheory.Functor.mapCocone.{u2, u3, u4, u6, u7, u8} K _inst_2 C _inst_3 D _inst_4 F (CategoryTheory.Functor.comp.{u2, u1, u3, u6, u5, u7} K _inst_2 J _inst_1 C _inst_3 E H) (CategoryTheory.Limits.Cocone.whisker.{u1, u2, u3, u5, u6, u7} J _inst_1 K _inst_2 C _inst_3 H E c)) (CategoryTheory.Limits.Cocone.whisker.{u1, u2, u4, u5, u6, u8} J _inst_1 K _inst_2 D _inst_4 (CategoryTheory.Functor.comp.{u1, u3, u4, u5, u7, u8} J _inst_1 C _inst_3 D _inst_4 H F) E (CategoryTheory.Functor.mapCocone.{u1, u3, u4, u5, u7, u8} J _inst_1 C _inst_3 D _inst_4 F H c))
+Case conversion may be inaccurate. Consider using '#align category_theory.functor.map_cocone_whisker CategoryTheory.Functor.mapCoconeWhiskerₓ'. -/
/-- `map_cocone` commutes with `whisker`
-/
@[simps]
@@ -1072,7 +1121,6 @@ def mapCoconeWhisker {E : K ⥤ J} {c : Cocone F} :
H.mapCocone (c.whisker E) ≅ (H.mapCocone c).whisker E :=
Cocones.ext (Iso.refl _) (by tidy)
#align category_theory.functor.map_cocone_whisker CategoryTheory.Functor.mapCoconeWhisker
--/
end Functor
@@ -1367,21 +1415,29 @@ section
variable (G : C ⥤ D)
-#print CategoryTheory.Functor.mapConeOp /-
+/- warning: category_theory.functor.map_cone_op -> CategoryTheory.Functor.mapConeOp is a dubious translation:
+lean 3 declaration is
+ forall {J : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u1, u4} J] {C : Type.{u5}} [_inst_3 : CategoryTheory.Category.{u2, u5} C] {D : Type.{u6}} [_inst_4 : CategoryTheory.Category.{u3, u6} D] {F : CategoryTheory.Functor.{u1, u2, u4, u5} J _inst_1 C _inst_3} (G : CategoryTheory.Functor.{u2, u3, u5, u6} C _inst_3 D _inst_4) (t : CategoryTheory.Limits.Cone.{u1, u2, u4, u5} J _inst_1 C _inst_3 F), CategoryTheory.Iso.{u3, max u4 u6 u3} (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} (Opposite.{succ u4} J) (CategoryTheory.Category.opposite.{u1, u4} J _inst_1) (Opposite.{succ u6} D) (CategoryTheory.Category.opposite.{u3, u6} D _inst_4) (CategoryTheory.Functor.op.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F G))) (CategoryTheory.Limits.Cocone.category.{u1, u3, u4, u6} (Opposite.{succ u4} J) (CategoryTheory.Category.opposite.{u1, u4} J _inst_1) (Opposite.{succ u6} D) (CategoryTheory.Category.opposite.{u3, u6} D _inst_4) (CategoryTheory.Functor.op.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F G))) (CategoryTheory.Limits.Cone.op.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F G) (CategoryTheory.Functor.mapCone.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F G t)) (CategoryTheory.Functor.mapCocone.{u1, u2, u3, u4, u5, u6} (Opposite.{succ u4} J) (CategoryTheory.Category.opposite.{u1, u4} J _inst_1) (Opposite.{succ u5} C) (CategoryTheory.Category.opposite.{u2, u5} C _inst_3) (Opposite.{succ u6} D) (CategoryTheory.Category.opposite.{u3, u6} D _inst_4) (CategoryTheory.Functor.op.{u1, u2, u4, u5} J _inst_1 C _inst_3 F) (CategoryTheory.Functor.op.{u2, u3, u5, u6} C _inst_3 D _inst_4 G) (CategoryTheory.Limits.Cone.op.{u1, u2, u4, u5} J _inst_1 C _inst_3 F t))
+but is expected to have type
+ forall {J : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u1, u4} J] {C : Type.{u5}} [_inst_3 : CategoryTheory.Category.{u2, u5} C] {D : Type.{u6}} [_inst_4 : CategoryTheory.Category.{u3, u6} D] {F : CategoryTheory.Functor.{u1, u2, u4, u5} J _inst_1 C _inst_3} (G : CategoryTheory.Functor.{u2, u3, u5, u6} C _inst_3 D _inst_4) (t : CategoryTheory.Limits.Cone.{u1, u2, u4, u5} J _inst_1 C _inst_3 F), CategoryTheory.Iso.{u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} (Opposite.{succ u4} J) (CategoryTheory.Category.opposite.{u1, u4} J _inst_1) (Opposite.{succ u6} D) (CategoryTheory.Category.opposite.{u3, u6} D _inst_4) (CategoryTheory.Functor.op.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F G))) (CategoryTheory.Limits.Cocone.category.{u1, u3, u4, u6} (Opposite.{succ u4} J) (CategoryTheory.Category.opposite.{u1, u4} J _inst_1) (Opposite.{succ u6} D) (CategoryTheory.Category.opposite.{u3, u6} D _inst_4) (CategoryTheory.Functor.op.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F G))) (CategoryTheory.Limits.Cone.op.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F G) (CategoryTheory.Functor.mapCone.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G F t)) (CategoryTheory.Functor.mapCocone.{u1, u2, u3, u4, u5, u6} (Opposite.{succ u4} J) (CategoryTheory.Category.opposite.{u1, u4} J _inst_1) (Opposite.{succ u5} C) (CategoryTheory.Category.opposite.{u2, u5} C _inst_3) (Opposite.{succ u6} D) (CategoryTheory.Category.opposite.{u3, u6} D _inst_4) (CategoryTheory.Functor.op.{u2, u3, u5, u6} C _inst_3 D _inst_4 G) (CategoryTheory.Functor.op.{u1, u2, u4, u5} J _inst_1 C _inst_3 F) (CategoryTheory.Limits.Cone.op.{u1, u2, u4, u5} J _inst_1 C _inst_3 F t))
+Case conversion may be inaccurate. Consider using '#align category_theory.functor.map_cone_op CategoryTheory.Functor.mapConeOpₓ'. -/
/-- The opposite cocone of the image of a cone is the image of the opposite cocone. -/
@[simps (config := { rhsMd := semireducible })]
def mapConeOp (t : Cone F) : (G.mapCone t).op ≅ G.op.mapCocone t.op :=
Cocones.ext (Iso.refl _) (by tidy)
#align category_theory.functor.map_cone_op CategoryTheory.Functor.mapConeOp
--/
-#print CategoryTheory.Functor.mapCoconeOp /-
+/- warning: category_theory.functor.map_cocone_op -> CategoryTheory.Functor.mapCoconeOp is a dubious translation:
+lean 3 declaration is
+ forall {J : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u1, u4} J] {C : Type.{u5}} [_inst_3 : CategoryTheory.Category.{u2, u5} C] {D : Type.{u6}} [_inst_4 : CategoryTheory.Category.{u3, u6} D] {F : CategoryTheory.Functor.{u1, u2, u4, u5} J _inst_1 C _inst_3} (G : CategoryTheory.Functor.{u2, u3, u5, u6} C _inst_3 D _inst_4) {t : CategoryTheory.Limits.Cocone.{u1, u2, u4, u5} J _inst_1 C _inst_3 F}, CategoryTheory.Iso.{u3, max u4 u6 u3} (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} (Opposite.{succ u4} J) (CategoryTheory.Category.opposite.{u1, u4} J _inst_1) (Opposite.{succ u6} D) (CategoryTheory.Category.opposite.{u3, u6} D _inst_4) (CategoryTheory.Functor.op.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F G))) (CategoryTheory.Limits.Cone.category.{u1, u3, u4, u6} (Opposite.{succ u4} J) (CategoryTheory.Category.opposite.{u1, u4} J _inst_1) (Opposite.{succ u6} D) (CategoryTheory.Category.opposite.{u3, u6} D _inst_4) (CategoryTheory.Functor.op.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F G))) (CategoryTheory.Limits.Cocone.op.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F G) (CategoryTheory.Functor.mapCocone.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F G t)) (CategoryTheory.Functor.mapCone.{u1, u2, u3, u4, u5, u6} (Opposite.{succ u4} J) (CategoryTheory.Category.opposite.{u1, u4} J _inst_1) (Opposite.{succ u5} C) (CategoryTheory.Category.opposite.{u2, u5} C _inst_3) (Opposite.{succ u6} D) (CategoryTheory.Category.opposite.{u3, u6} D _inst_4) (CategoryTheory.Functor.op.{u1, u2, u4, u5} J _inst_1 C _inst_3 F) (CategoryTheory.Functor.op.{u2, u3, u5, u6} C _inst_3 D _inst_4 G) (CategoryTheory.Limits.Cocone.op.{u1, u2, u4, u5} J _inst_1 C _inst_3 F t))
+but is expected to have type
+ forall {J : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u1, u4} J] {C : Type.{u5}} [_inst_3 : CategoryTheory.Category.{u2, u5} C] {D : Type.{u6}} [_inst_4 : CategoryTheory.Category.{u3, u6} D] {F : CategoryTheory.Functor.{u1, u2, u4, u5} J _inst_1 C _inst_3} (G : CategoryTheory.Functor.{u2, u3, u5, u6} C _inst_3 D _inst_4) {t : CategoryTheory.Limits.Cocone.{u1, u2, u4, u5} J _inst_1 C _inst_3 F}, CategoryTheory.Iso.{u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} (Opposite.{succ u4} J) (CategoryTheory.Category.opposite.{u1, u4} J _inst_1) (Opposite.{succ u6} D) (CategoryTheory.Category.opposite.{u3, u6} D _inst_4) (CategoryTheory.Functor.op.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F G))) (CategoryTheory.Limits.Cone.category.{u1, u3, u4, u6} (Opposite.{succ u4} J) (CategoryTheory.Category.opposite.{u1, u4} J _inst_1) (Opposite.{succ u6} D) (CategoryTheory.Category.opposite.{u3, u6} D _inst_4) (CategoryTheory.Functor.op.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F G))) (CategoryTheory.Limits.Cocone.op.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F G) (CategoryTheory.Functor.mapCocone.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G F t)) (CategoryTheory.Functor.mapCone.{u1, u2, u3, u4, u5, u6} (Opposite.{succ u4} J) (CategoryTheory.Category.opposite.{u1, u4} J _inst_1) (Opposite.{succ u5} C) (CategoryTheory.Category.opposite.{u2, u5} C _inst_3) (Opposite.{succ u6} D) (CategoryTheory.Category.opposite.{u3, u6} D _inst_4) (CategoryTheory.Functor.op.{u2, u3, u5, u6} C _inst_3 D _inst_4 G) (CategoryTheory.Functor.op.{u1, u2, u4, u5} J _inst_1 C _inst_3 F) (CategoryTheory.Limits.Cocone.op.{u1, u2, u4, u5} J _inst_1 C _inst_3 F t))
+Case conversion may be inaccurate. Consider using '#align category_theory.functor.map_cocone_op CategoryTheory.Functor.mapCoconeOpₓ'. -/
/-- The opposite cone of the image of a cocone is the image of the opposite cone. -/
@[simps (config := { rhsMd := semireducible })]
def mapCoconeOp {t : Cocone F} : (G.mapCocone t).op ≅ G.op.mapCone t.op :=
Cones.ext (Iso.refl _) (by tidy)
#align category_theory.functor.map_cocone_op CategoryTheory.Functor.mapCoconeOp
--/
end
mathlib commit https://github.com/leanprover-community/mathlib/commit/195fcd60ff2bfe392543bceb0ec2adcdb472db4c
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Stephen Morgan, Scott Morrison, Floris van Doorn
! This file was ported from Lean 3 source module category_theory.limits.cones
-! leanprover-community/mathlib commit 1995c7bbdbb0adb1b6d5acdc654f6cf46ed96cfa
+! leanprover-community/mathlib commit ee05e9ce1322178f0c12004eb93c00d2c8c00ed2
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
@@ -16,6 +16,9 @@ import Mathbin.CategoryTheory.Functor.ReflectsIsomorphisms
/-!
# Cones and cocones
+> THIS FILE IS SYNCHRONIZED WITH MATHLIB4.
+> Any changes to this file require a corresponding PR to mathlib4.
+
We define `cone F`, a cone over a functor `F`,
and `F.cones : Cᵒᵖ ⥤ Type`, the functor associating to `X` the cones over `F` with cone point `X`.
mathlib commit https://github.com/leanprover-community/mathlib/commit/9da1b3534b65d9661eb8f42443598a92bbb49211
@@ -134,21 +134,21 @@ attribute [local tidy] tactic.discrete_cases
`cone F` is equivalent, via `cone.equiv` below, to `Σ X, F.cones.obj X`.
-/
structure Cone (F : J ⥤ C) where
- x : C
+ pt : C
π : (const J).obj X ⟶ F
#align category_theory.limits.cone CategoryTheory.Limits.Cone
-/
#print CategoryTheory.Limits.inhabitedCone /-
instance inhabitedCone (F : Discrete PUnit ⥤ C) : Inhabited (Cone F) :=
- ⟨{ x := F.obj ⟨⟨⟩⟩
+ ⟨{ pt := F.obj ⟨⟨⟩⟩
π := { app := fun ⟨⟨⟩⟩ => 𝟙 _ } }⟩
#align category_theory.limits.inhabited_cone CategoryTheory.Limits.inhabitedCone
-/
/- warning: category_theory.limits.cone.w -> CategoryTheory.Limits.Cone.w is a dubious translation:
lean 3 declaration is
- forall {J : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} J] {C : Type.{u4}} [_inst_3 : CategoryTheory.Category.{u2, u4} C] {F : CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3} (c : CategoryTheory.Limits.Cone.{u1, u2, u3, u4} J _inst_1 C _inst_3 F) {j : J} {j' : J} (f : Quiver.Hom.{succ u1, u3} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} J (CategoryTheory.Category.toCategoryStruct.{u1, u3} J _inst_1)) j j'), Eq.{succ u2} (Quiver.Hom.{succ u2, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} J _inst_1 C _inst_3 (CategoryTheory.Functor.obj.{u2, max u3 u2, u4, max u1 u2 u3 u4} C _inst_3 (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.const.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Limits.Cone.x.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c)) j) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} J _inst_1 C _inst_3 F j')) (CategoryTheory.CategoryStruct.comp.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} J _inst_1 C _inst_3 (CategoryTheory.Functor.obj.{u2, max u3 u2, u4, max u1 u2 u3 u4} C _inst_3 (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.const.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Limits.Cone.x.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c)) j) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} J _inst_1 C _inst_3 F j) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} J _inst_1 C _inst_3 F j') (CategoryTheory.NatTrans.app.{u1, u2, u3, u4} J _inst_1 C _inst_3 (CategoryTheory.Functor.obj.{u2, max u3 u2, u4, max u1 u2 u3 u4} C _inst_3 (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.const.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Limits.Cone.x.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c)) F (CategoryTheory.Limits.Cone.π.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c) j) (CategoryTheory.Functor.map.{u1, u2, u3, u4} J _inst_1 C _inst_3 F j j' f)) (CategoryTheory.NatTrans.app.{u1, u2, u3, u4} J _inst_1 C _inst_3 (CategoryTheory.Functor.obj.{u2, max u3 u2, u4, max u1 u2 u3 u4} C _inst_3 (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.const.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Limits.Cone.x.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c)) F (CategoryTheory.Limits.Cone.π.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c) j')
+ forall {J : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} J] {C : Type.{u4}} [_inst_3 : CategoryTheory.Category.{u2, u4} C] {F : CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3} (c : CategoryTheory.Limits.Cone.{u1, u2, u3, u4} J _inst_1 C _inst_3 F) {j : J} {j' : J} (f : Quiver.Hom.{succ u1, u3} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} J (CategoryTheory.Category.toCategoryStruct.{u1, u3} J _inst_1)) j j'), Eq.{succ u2} (Quiver.Hom.{succ u2, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} J _inst_1 C _inst_3 (CategoryTheory.Functor.obj.{u2, max u3 u2, u4, max u1 u2 u3 u4} C _inst_3 (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.const.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Limits.Cone.pt.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c)) j) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} J _inst_1 C _inst_3 F j')) (CategoryTheory.CategoryStruct.comp.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} J _inst_1 C _inst_3 (CategoryTheory.Functor.obj.{u2, max u3 u2, u4, max u1 u2 u3 u4} C _inst_3 (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.const.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Limits.Cone.pt.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c)) j) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} J _inst_1 C _inst_3 F j) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} J _inst_1 C _inst_3 F j') (CategoryTheory.NatTrans.app.{u1, u2, u3, u4} J _inst_1 C _inst_3 (CategoryTheory.Functor.obj.{u2, max u3 u2, u4, max u1 u2 u3 u4} C _inst_3 (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.const.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Limits.Cone.pt.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c)) F (CategoryTheory.Limits.Cone.π.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c) j) (CategoryTheory.Functor.map.{u1, u2, u3, u4} J _inst_1 C _inst_3 F j j' f)) (CategoryTheory.NatTrans.app.{u1, u2, u3, u4} J _inst_1 C _inst_3 (CategoryTheory.Functor.obj.{u2, max u3 u2, u4, max u1 u2 u3 u4} C _inst_3 (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.const.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Limits.Cone.pt.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c)) F (CategoryTheory.Limits.Cone.π.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c) j')
but is expected to have type
forall {J : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} J] {C : Type.{u4}} [_inst_3 : CategoryTheory.Category.{u2, u4} C] {F : CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3} (c : CategoryTheory.Limits.Cone.{u1, u2, u3, u4} J _inst_1 C _inst_3 F) {j : J} {j' : J} (f : Quiver.Hom.{succ u1, u3} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} J (CategoryTheory.Category.toCategoryStruct.{u1, u3} J _inst_1)) j j'), Eq.{succ u2} (Quiver.Hom.{succ u2, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) (Prefunctor.obj.{succ u1, succ u2, u3, u4} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} J (CategoryTheory.Category.toCategoryStruct.{u1, u3} J _inst_1)) C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} J _inst_1 C _inst_3 (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u4, max (max (max u3 u1) u2) u4} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max (max (max u3 u1) u4) u2} (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max (max (max u3 u1) u4) u2} (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 C _inst_3))) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u4, max (max (max u3 u1) u4) u2} C _inst_3 (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.const.{u1, u2, u3, u4} J _inst_1 C _inst_3)) (CategoryTheory.Limits.Cone.pt.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c))) j) (Prefunctor.obj.{succ u1, succ u2, u3, u4} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} J (CategoryTheory.Category.toCategoryStruct.{u1, u3} J _inst_1)) C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} J _inst_1 C _inst_3 F) j')) (CategoryTheory.CategoryStruct.comp.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3) (Prefunctor.obj.{succ u1, succ u2, u3, u4} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} J (CategoryTheory.Category.toCategoryStruct.{u1, u3} J _inst_1)) C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} J _inst_1 C _inst_3 (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u4, max (max (max u3 u1) u2) u4} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max (max (max u3 u1) u4) u2} (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max (max (max u3 u1) u4) u2} (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 C _inst_3))) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u4, max (max (max u3 u1) u4) u2} C _inst_3 (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.const.{u1, u2, u3, u4} J _inst_1 C _inst_3)) (CategoryTheory.Limits.Cone.pt.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c))) j) (Prefunctor.obj.{succ u1, succ u2, u3, u4} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} J (CategoryTheory.Category.toCategoryStruct.{u1, u3} J _inst_1)) C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} J _inst_1 C _inst_3 F) j) (Prefunctor.obj.{succ u1, succ u2, u3, u4} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} J (CategoryTheory.Category.toCategoryStruct.{u1, u3} J _inst_1)) C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} J _inst_1 C _inst_3 F) j') (CategoryTheory.NatTrans.app.{u1, u2, u3, u4} J _inst_1 C _inst_3 (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u4, max (max (max u3 u1) u2) u4} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max (max (max u3 u1) u4) u2} (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max (max (max u3 u1) u4) u2} (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 C _inst_3))) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u4, max (max (max u3 u1) u4) u2} C _inst_3 (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.const.{u1, u2, u3, u4} J _inst_1 C _inst_3)) (CategoryTheory.Limits.Cone.pt.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c)) F (CategoryTheory.Limits.Cone.π.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c) j) (Prefunctor.map.{succ u1, succ u2, u3, u4} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} J (CategoryTheory.Category.toCategoryStruct.{u1, u3} J _inst_1)) C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} J _inst_1 C _inst_3 F) j j' f)) (CategoryTheory.NatTrans.app.{u1, u2, u3, u4} J _inst_1 C _inst_3 (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u4, max (max (max u3 u1) u2) u4} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max (max (max u3 u1) u4) u2} (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max (max (max u3 u1) u4) u2} (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 C _inst_3))) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u4, max (max (max u3 u1) u4) u2} C _inst_3 (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.const.{u1, u2, u3, u4} J _inst_1 C _inst_3)) (CategoryTheory.Limits.Cone.pt.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c)) F (CategoryTheory.Limits.Cone.π.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c) j')
Case conversion may be inaccurate. Consider using '#align category_theory.limits.cone.w CategoryTheory.Limits.Cone.wₓ'. -/
@@ -168,21 +168,21 @@ theorem Cone.w {F : J ⥤ C} (c : Cone F) {j j' : J} (f : j ⟶ j') :
`cocone F` is equivalent, via `cone.equiv` below, to `Σ X, F.cocones.obj X`.
-/
structure Cocone (F : J ⥤ C) where
- x : C
+ pt : C
ι : F ⟶ (const J).obj X
#align category_theory.limits.cocone CategoryTheory.Limits.Cocone
-/
#print CategoryTheory.Limits.inhabitedCocone /-
instance inhabitedCocone (F : Discrete PUnit ⥤ C) : Inhabited (Cocone F) :=
- ⟨{ x := F.obj ⟨⟨⟩⟩
+ ⟨{ pt := F.obj ⟨⟨⟩⟩
ι := { app := fun ⟨⟨⟩⟩ => 𝟙 _ } }⟩
#align category_theory.limits.inhabited_cocone CategoryTheory.Limits.inhabitedCocone
-/
/- warning: category_theory.limits.cocone.w -> CategoryTheory.Limits.Cocone.w is a dubious translation:
lean 3 declaration is
- forall {J : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} J] {C : Type.{u4}} [_inst_3 : CategoryTheory.Category.{u2, u4} C] {F : CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3} (c : CategoryTheory.Limits.Cocone.{u1, u2, u3, u4} J _inst_1 C _inst_3 F) {j : J} {j' : J} (f : Quiver.Hom.{succ u1, u3} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} J (CategoryTheory.Category.toCategoryStruct.{u1, u3} J _inst_1)) j j'), Eq.{succ u2} (Quiver.Hom.{succ u2, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} J _inst_1 C _inst_3 F j) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} J _inst_1 C _inst_3 (CategoryTheory.Functor.obj.{u2, max u3 u2, u4, max u1 u2 u3 u4} C _inst_3 (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.const.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Limits.Cocone.x.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c)) j')) (CategoryTheory.CategoryStruct.comp.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} J _inst_1 C _inst_3 F j) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} J _inst_1 C _inst_3 F j') (CategoryTheory.Functor.obj.{u1, u2, u3, u4} J _inst_1 C _inst_3 (CategoryTheory.Functor.obj.{u2, max u3 u2, u4, max u1 u2 u3 u4} C _inst_3 (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.const.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Limits.Cocone.x.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c)) j') (CategoryTheory.Functor.map.{u1, u2, u3, u4} J _inst_1 C _inst_3 F j j' f) (CategoryTheory.NatTrans.app.{u1, u2, u3, u4} J _inst_1 C _inst_3 F (CategoryTheory.Functor.obj.{u2, max u3 u2, u4, max u1 u2 u3 u4} C _inst_3 (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.const.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Limits.Cocone.x.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c)) (CategoryTheory.Limits.Cocone.ι.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c) j')) (CategoryTheory.NatTrans.app.{u1, u2, u3, u4} J _inst_1 C _inst_3 F (CategoryTheory.Functor.obj.{u2, max u3 u2, u4, max u1 u2 u3 u4} C _inst_3 (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.const.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Limits.Cocone.x.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c)) (CategoryTheory.Limits.Cocone.ι.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c) j)
+ forall {J : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} J] {C : Type.{u4}} [_inst_3 : CategoryTheory.Category.{u2, u4} C] {F : CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3} (c : CategoryTheory.Limits.Cocone.{u1, u2, u3, u4} J _inst_1 C _inst_3 F) {j : J} {j' : J} (f : Quiver.Hom.{succ u1, u3} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} J (CategoryTheory.Category.toCategoryStruct.{u1, u3} J _inst_1)) j j'), Eq.{succ u2} (Quiver.Hom.{succ u2, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} J _inst_1 C _inst_3 F j) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} J _inst_1 C _inst_3 (CategoryTheory.Functor.obj.{u2, max u3 u2, u4, max u1 u2 u3 u4} C _inst_3 (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.const.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Limits.Cocone.pt.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c)) j')) (CategoryTheory.CategoryStruct.comp.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} J _inst_1 C _inst_3 F j) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} J _inst_1 C _inst_3 F j') (CategoryTheory.Functor.obj.{u1, u2, u3, u4} J _inst_1 C _inst_3 (CategoryTheory.Functor.obj.{u2, max u3 u2, u4, max u1 u2 u3 u4} C _inst_3 (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.const.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Limits.Cocone.pt.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c)) j') (CategoryTheory.Functor.map.{u1, u2, u3, u4} J _inst_1 C _inst_3 F j j' f) (CategoryTheory.NatTrans.app.{u1, u2, u3, u4} J _inst_1 C _inst_3 F (CategoryTheory.Functor.obj.{u2, max u3 u2, u4, max u1 u2 u3 u4} C _inst_3 (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.const.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Limits.Cocone.pt.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c)) (CategoryTheory.Limits.Cocone.ι.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c) j')) (CategoryTheory.NatTrans.app.{u1, u2, u3, u4} J _inst_1 C _inst_3 F (CategoryTheory.Functor.obj.{u2, max u3 u2, u4, max u1 u2 u3 u4} C _inst_3 (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.const.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Limits.Cocone.pt.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c)) (CategoryTheory.Limits.Cocone.ι.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c) j)
but is expected to have type
forall {J : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} J] {C : Type.{u4}} [_inst_3 : CategoryTheory.Category.{u2, u4} C] {F : CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3} (c : CategoryTheory.Limits.Cocone.{u1, u2, u3, u4} J _inst_1 C _inst_3 F) {j : J} {j' : J} (f : Quiver.Hom.{succ u1, u3} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} J (CategoryTheory.Category.toCategoryStruct.{u1, u3} J _inst_1)) j j'), Eq.{succ u2} (Quiver.Hom.{succ u2, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) (Prefunctor.obj.{succ u1, succ u2, u3, u4} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} J (CategoryTheory.Category.toCategoryStruct.{u1, u3} J _inst_1)) C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} J _inst_1 C _inst_3 F) j) (Prefunctor.obj.{succ u1, succ u2, u3, u4} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} J (CategoryTheory.Category.toCategoryStruct.{u1, u3} J _inst_1)) C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} J _inst_1 C _inst_3 (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u4, max (max (max u3 u1) u2) u4} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max (max (max u3 u1) u4) u2} (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max (max (max u3 u1) u4) u2} (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 C _inst_3))) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u4, max (max (max u3 u1) u4) u2} C _inst_3 (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.const.{u1, u2, u3, u4} J _inst_1 C _inst_3)) (CategoryTheory.Limits.Cocone.pt.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c))) j')) (CategoryTheory.CategoryStruct.comp.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3) (Prefunctor.obj.{succ u1, succ u2, u3, u4} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} J (CategoryTheory.Category.toCategoryStruct.{u1, u3} J _inst_1)) C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} J _inst_1 C _inst_3 F) j) (Prefunctor.obj.{succ u1, succ u2, u3, u4} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} J (CategoryTheory.Category.toCategoryStruct.{u1, u3} J _inst_1)) C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} J _inst_1 C _inst_3 F) j') (Prefunctor.obj.{succ u1, succ u2, u3, u4} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} J (CategoryTheory.Category.toCategoryStruct.{u1, u3} J _inst_1)) C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} J _inst_1 C _inst_3 (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u4, max (max (max u3 u1) u2) u4} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max (max (max u3 u1) u4) u2} (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max (max (max u3 u1) u4) u2} (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 C _inst_3))) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u4, max (max (max u3 u1) u4) u2} C _inst_3 (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.const.{u1, u2, u3, u4} J _inst_1 C _inst_3)) (CategoryTheory.Limits.Cocone.pt.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c))) j') (Prefunctor.map.{succ u1, succ u2, u3, u4} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} J (CategoryTheory.Category.toCategoryStruct.{u1, u3} J _inst_1)) C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} J _inst_1 C _inst_3 F) j j' f) (CategoryTheory.NatTrans.app.{u1, u2, u3, u4} J _inst_1 C _inst_3 F (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u4, max (max (max u3 u1) u2) u4} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max (max (max u3 u1) u4) u2} (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max (max (max u3 u1) u4) u2} (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 C _inst_3))) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u4, max (max (max u3 u1) u4) u2} C _inst_3 (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.const.{u1, u2, u3, u4} J _inst_1 C _inst_3)) (CategoryTheory.Limits.Cocone.pt.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c)) (CategoryTheory.Limits.Cocone.ι.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c) j')) (CategoryTheory.NatTrans.app.{u1, u2, u3, u4} J _inst_1 C _inst_3 F (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u4, max (max (max u3 u1) u2) u4} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max (max (max u3 u1) u4) u2} (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max (max (max u3 u1) u4) u2} (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 C _inst_3))) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u4, max (max (max u3 u1) u4) u2} C _inst_3 (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.const.{u1, u2, u3, u4} J _inst_1 C _inst_3)) (CategoryTheory.Limits.Cocone.pt.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c)) (CategoryTheory.Limits.Cocone.ι.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c) j)
Case conversion may be inaccurate. Consider using '#align category_theory.limits.cocone.w CategoryTheory.Limits.Cocone.wₓ'. -/
@@ -210,9 +210,9 @@ Case conversion may be inaccurate. Consider using '#align category_theory.limits
@[simps]
def equiv (F : J ⥤ C) : Cone F ≅ ΣX, F.cones.obj X
where
- Hom c := ⟨op c.x, c.π⟩
+ Hom c := ⟨op c.pt, c.π⟩
inv c :=
- { x := c.1.unop
+ { pt := c.1.unop
π := c.2 }
hom_inv_id' := by
ext1
@@ -226,21 +226,21 @@ def equiv (F : J ⥤ C) : Cone F ≅ ΣX, F.cones.obj X
/- warning: category_theory.limits.cone.extensions -> CategoryTheory.Limits.Cone.extensions is a dubious translation:
lean 3 declaration is
- forall {J : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} J] {C : Type.{u4}} [_inst_3 : CategoryTheory.Category.{u2, u4} C] {F : CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3} (c : CategoryTheory.Limits.Cone.{u1, u2, u3, u4} J _inst_1 C _inst_3 F), Quiver.Hom.{succ (max u4 u2 u3), max u2 (max u2 u3) u4 (succ (max u2 u3))} (CategoryTheory.Functor.{u2, max u2 u3, u4, succ (max u2 u3)} (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3) Type.{max u2 u3} CategoryTheory.types.{max u2 u3}) (CategoryTheory.CategoryStruct.toQuiver.{max u4 u2 u3, max u2 (max u2 u3) u4 (succ (max u2 u3))} (CategoryTheory.Functor.{u2, max u2 u3, u4, succ (max u2 u3)} (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3) Type.{max u2 u3} CategoryTheory.types.{max u2 u3}) (CategoryTheory.Category.toCategoryStruct.{max u4 u2 u3, max u2 (max u2 u3) u4 (succ (max u2 u3))} (CategoryTheory.Functor.{u2, max u2 u3, u4, succ (max u2 u3)} (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3) Type.{max u2 u3} CategoryTheory.types.{max u2 u3}) (CategoryTheory.Functor.category.{u2, max u2 u3, u4, succ (max u2 u3)} (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3) Type.{max u2 u3} CategoryTheory.types.{max u2 u3}))) (CategoryTheory.Functor.comp.{u2, u2, max u2 u3, u4, succ u2, succ (max u2 u3)} (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3) Type.{u2} CategoryTheory.types.{u2} Type.{max u2 u3} CategoryTheory.types.{max u2 u3} (CategoryTheory.Functor.obj.{u2, max u4 u2, u4, max u2 u4 (succ u2)} C _inst_3 (CategoryTheory.Functor.{u2, u2, u4, succ u2} (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3) Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.Functor.category.{u2, u2, u4, succ u2} (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3) Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.yoneda.{u2, u4} C _inst_3) (CategoryTheory.Limits.Cone.x.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c)) CategoryTheory.uliftFunctor.{u3, u2}) (CategoryTheory.Functor.cones.{u1, u2, u3, u4} J _inst_1 C _inst_3 F)
+ forall {J : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} J] {C : Type.{u4}} [_inst_3 : CategoryTheory.Category.{u2, u4} C] {F : CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3} (c : CategoryTheory.Limits.Cone.{u1, u2, u3, u4} J _inst_1 C _inst_3 F), Quiver.Hom.{succ (max u4 u2 u3), max u2 (max u2 u3) u4 (succ (max u2 u3))} (CategoryTheory.Functor.{u2, max u2 u3, u4, succ (max u2 u3)} (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3) Type.{max u2 u3} CategoryTheory.types.{max u2 u3}) (CategoryTheory.CategoryStruct.toQuiver.{max u4 u2 u3, max u2 (max u2 u3) u4 (succ (max u2 u3))} (CategoryTheory.Functor.{u2, max u2 u3, u4, succ (max u2 u3)} (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3) Type.{max u2 u3} CategoryTheory.types.{max u2 u3}) (CategoryTheory.Category.toCategoryStruct.{max u4 u2 u3, max u2 (max u2 u3) u4 (succ (max u2 u3))} (CategoryTheory.Functor.{u2, max u2 u3, u4, succ (max u2 u3)} (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3) Type.{max u2 u3} CategoryTheory.types.{max u2 u3}) (CategoryTheory.Functor.category.{u2, max u2 u3, u4, succ (max u2 u3)} (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3) Type.{max u2 u3} CategoryTheory.types.{max u2 u3}))) (CategoryTheory.Functor.comp.{u2, u2, max u2 u3, u4, succ u2, succ (max u2 u3)} (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3) Type.{u2} CategoryTheory.types.{u2} Type.{max u2 u3} CategoryTheory.types.{max u2 u3} (CategoryTheory.Functor.obj.{u2, max u4 u2, u4, max u2 u4 (succ u2)} C _inst_3 (CategoryTheory.Functor.{u2, u2, u4, succ u2} (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3) Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.Functor.category.{u2, u2, u4, succ u2} (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3) Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.yoneda.{u2, u4} C _inst_3) (CategoryTheory.Limits.Cone.pt.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c)) CategoryTheory.uliftFunctor.{u3, u2}) (CategoryTheory.Functor.cones.{u1, u2, u3, u4} J _inst_1 C _inst_3 F)
but is expected to have type
forall {J : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} J] {C : Type.{u4}} [_inst_3 : CategoryTheory.Category.{u2, u4} C] {F : CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3} (c : CategoryTheory.Limits.Cone.{u1, u2, u3, u4} J _inst_1 C _inst_3 F), Quiver.Hom.{max (max (succ u3) (succ u4)) (succ u2), max (max (max (max (succ u3) (succ u2)) u4) u3 u2) u2} (CategoryTheory.Functor.{u2, max u3 u2, u4, max (succ u3) (succ u2)} (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3) Type.{max u2 u3} CategoryTheory.types.{max u2 u3}) (CategoryTheory.CategoryStruct.toQuiver.{max (max u3 u4) u2, max (max (succ u3) u4) (succ u2)} (CategoryTheory.Functor.{u2, max u3 u2, u4, max (succ u3) (succ u2)} (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3) Type.{max u2 u3} CategoryTheory.types.{max u2 u3}) (CategoryTheory.Category.toCategoryStruct.{max (max u3 u4) u2, max (max (succ u3) u4) (succ u2)} (CategoryTheory.Functor.{u2, max u3 u2, u4, max (succ u3) (succ u2)} (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3) Type.{max u2 u3} CategoryTheory.types.{max u2 u3}) (CategoryTheory.Functor.category.{u2, max u3 u2, u4, max (succ u3) (succ u2)} (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3) Type.{max u2 u3} CategoryTheory.types.{max u2 u3}))) (CategoryTheory.Functor.comp.{u2, u2, max u3 u2, u4, succ u2, max (succ u3) (succ u2)} (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3) Type.{u2} CategoryTheory.types.{u2} Type.{max u2 u3} CategoryTheory.types.{max u2 u3} (Prefunctor.obj.{succ u2, max (succ u2) (succ u4), u4, max (succ u2) u4} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) (CategoryTheory.Functor.{u2, u2, u4, succ u2} (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3) Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.CategoryStruct.toQuiver.{max u4 u2, max u4 (succ u2)} (CategoryTheory.Functor.{u2, u2, u4, succ u2} (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3) Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.Category.toCategoryStruct.{max u4 u2, max u4 (succ u2)} (CategoryTheory.Functor.{u2, u2, u4, succ u2} (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3) Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.Functor.category.{u2, u2, u4, succ u2} (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3) Type.{u2} CategoryTheory.types.{u2}))) (CategoryTheory.Functor.toPrefunctor.{u2, max u4 u2, u4, max u4 (succ u2)} C _inst_3 (CategoryTheory.Functor.{u2, u2, u4, succ u2} (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3) Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.Functor.category.{u2, u2, u4, succ u2} (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3) Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.yoneda.{u2, u4} C _inst_3)) (CategoryTheory.Limits.Cone.pt.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c)) CategoryTheory.uliftFunctor.{u3, u2}) (CategoryTheory.Functor.cones.{u1, u2, u3, u4} J _inst_1 C _inst_3 F)
Case conversion may be inaccurate. Consider using '#align category_theory.limits.cone.extensions CategoryTheory.Limits.Cone.extensionsₓ'. -/
/-- A map to the vertex of a cone naturally induces a cone by composition. -/
@[simps]
-def extensions (c : Cone F) : yoneda.obj c.x ⋙ uliftFunctor.{u₁} ⟶ F.cones
+def extensions (c : Cone F) : yoneda.obj c.pt ⋙ uliftFunctor.{u₁} ⟶ F.cones
where app X f := (const J).map f.down ≫ c.π
#align category_theory.limits.cone.extensions CategoryTheory.Limits.Cone.extensions
#print CategoryTheory.Limits.Cone.extend /-
/-- A map to the vertex of a cone induces a cone by composition. -/
@[simps]
-def extend (c : Cone F) {X : C} (f : X ⟶ c.x) : Cone F :=
- { x
+def extend (c : Cone F) {X : C} (f : X ⟶ c.pt) : Cone F :=
+ { pt
π := c.extensions.app (op X) ⟨f⟩ }
#align category_theory.limits.cone.extend CategoryTheory.Limits.Cone.extend
-/
@@ -250,7 +250,7 @@ def extend (c : Cone F) {X : C} (f : X ⟶ c.x) : Cone F :=
@[simps]
def whisker (E : K ⥤ J) (c : Cone F) : Cone (E ⋙ F)
where
- x := c.x
+ pt := c.pt
π := whiskerLeft E c.π
#align category_theory.limits.cone.whisker CategoryTheory.Limits.Cone.whisker
-/
@@ -268,9 +268,9 @@ Case conversion may be inaccurate. Consider using '#align category_theory.limits
/-- The isomorphism between a cocone on `F` and an element of the functor `F.cocones`. -/
def equiv (F : J ⥤ C) : Cocone F ≅ ΣX, F.cocones.obj X
where
- Hom c := ⟨c.x, c.ι⟩
+ Hom c := ⟨c.pt, c.ι⟩
inv c :=
- { x := c.1
+ { pt := c.1
ι := c.2 }
hom_inv_id' := by
ext1
@@ -284,21 +284,21 @@ def equiv (F : J ⥤ C) : Cocone F ≅ ΣX, F.cocones.obj X
/- warning: category_theory.limits.cocone.extensions -> CategoryTheory.Limits.Cocone.extensions is a dubious translation:
lean 3 declaration is
- forall {J : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} J] {C : Type.{u4}} [_inst_3 : CategoryTheory.Category.{u2, u4} C] {F : CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3} (c : CategoryTheory.Limits.Cocone.{u1, u2, u3, u4} J _inst_1 C _inst_3 F), Quiver.Hom.{succ (max u4 u2 u3), max u2 (max u2 u3) u4 (succ (max u2 u3))} (CategoryTheory.Functor.{u2, max u2 u3, u4, succ (max u2 u3)} C _inst_3 Type.{max u2 u3} CategoryTheory.types.{max u2 u3}) (CategoryTheory.CategoryStruct.toQuiver.{max u4 u2 u3, max u2 (max u2 u3) u4 (succ (max u2 u3))} (CategoryTheory.Functor.{u2, max u2 u3, u4, succ (max u2 u3)} C _inst_3 Type.{max u2 u3} CategoryTheory.types.{max u2 u3}) (CategoryTheory.Category.toCategoryStruct.{max u4 u2 u3, max u2 (max u2 u3) u4 (succ (max u2 u3))} (CategoryTheory.Functor.{u2, max u2 u3, u4, succ (max u2 u3)} C _inst_3 Type.{max u2 u3} CategoryTheory.types.{max u2 u3}) (CategoryTheory.Functor.category.{u2, max u2 u3, u4, succ (max u2 u3)} C _inst_3 Type.{max u2 u3} CategoryTheory.types.{max u2 u3}))) (CategoryTheory.Functor.comp.{u2, u2, max u2 u3, u4, succ u2, succ (max u2 u3)} C _inst_3 Type.{u2} CategoryTheory.types.{u2} Type.{max u2 u3} CategoryTheory.types.{max u2 u3} (CategoryTheory.Functor.obj.{u2, max u4 u2, u4, max u2 u4 (succ u2)} (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3) (CategoryTheory.Functor.{u2, u2, u4, succ u2} C _inst_3 Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.Functor.category.{u2, u2, u4, succ u2} C _inst_3 Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.coyoneda.{u2, u4} C _inst_3) (Opposite.op.{succ u4} C (CategoryTheory.Limits.Cocone.x.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c))) CategoryTheory.uliftFunctor.{u3, u2}) (CategoryTheory.Functor.cocones.{u1, u2, u3, u4} J _inst_1 C _inst_3 F)
+ forall {J : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} J] {C : Type.{u4}} [_inst_3 : CategoryTheory.Category.{u2, u4} C] {F : CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3} (c : CategoryTheory.Limits.Cocone.{u1, u2, u3, u4} J _inst_1 C _inst_3 F), Quiver.Hom.{succ (max u4 u2 u3), max u2 (max u2 u3) u4 (succ (max u2 u3))} (CategoryTheory.Functor.{u2, max u2 u3, u4, succ (max u2 u3)} C _inst_3 Type.{max u2 u3} CategoryTheory.types.{max u2 u3}) (CategoryTheory.CategoryStruct.toQuiver.{max u4 u2 u3, max u2 (max u2 u3) u4 (succ (max u2 u3))} (CategoryTheory.Functor.{u2, max u2 u3, u4, succ (max u2 u3)} C _inst_3 Type.{max u2 u3} CategoryTheory.types.{max u2 u3}) (CategoryTheory.Category.toCategoryStruct.{max u4 u2 u3, max u2 (max u2 u3) u4 (succ (max u2 u3))} (CategoryTheory.Functor.{u2, max u2 u3, u4, succ (max u2 u3)} C _inst_3 Type.{max u2 u3} CategoryTheory.types.{max u2 u3}) (CategoryTheory.Functor.category.{u2, max u2 u3, u4, succ (max u2 u3)} C _inst_3 Type.{max u2 u3} CategoryTheory.types.{max u2 u3}))) (CategoryTheory.Functor.comp.{u2, u2, max u2 u3, u4, succ u2, succ (max u2 u3)} C _inst_3 Type.{u2} CategoryTheory.types.{u2} Type.{max u2 u3} CategoryTheory.types.{max u2 u3} (CategoryTheory.Functor.obj.{u2, max u4 u2, u4, max u2 u4 (succ u2)} (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3) (CategoryTheory.Functor.{u2, u2, u4, succ u2} C _inst_3 Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.Functor.category.{u2, u2, u4, succ u2} C _inst_3 Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.coyoneda.{u2, u4} C _inst_3) (Opposite.op.{succ u4} C (CategoryTheory.Limits.Cocone.pt.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c))) CategoryTheory.uliftFunctor.{u3, u2}) (CategoryTheory.Functor.cocones.{u1, u2, u3, u4} J _inst_1 C _inst_3 F)
but is expected to have type
forall {J : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} J] {C : Type.{u4}} [_inst_3 : CategoryTheory.Category.{u2, u4} C] {F : CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3} (c : CategoryTheory.Limits.Cocone.{u1, u2, u3, u4} J _inst_1 C _inst_3 F), Quiver.Hom.{max (max (succ u3) (succ u4)) (succ u2), max (max (max (max (succ u3) (succ u2)) u4) u3 u2) u2} (CategoryTheory.Functor.{u2, max u3 u2, u4, max (succ u3) (succ u2)} C _inst_3 Type.{max u2 u3} CategoryTheory.types.{max u2 u3}) (CategoryTheory.CategoryStruct.toQuiver.{max (max u3 u4) u2, max (max (succ u3) u4) (succ u2)} (CategoryTheory.Functor.{u2, max u3 u2, u4, max (succ u3) (succ u2)} C _inst_3 Type.{max u2 u3} CategoryTheory.types.{max u2 u3}) (CategoryTheory.Category.toCategoryStruct.{max (max u3 u4) u2, max (max (succ u3) u4) (succ u2)} (CategoryTheory.Functor.{u2, max u3 u2, u4, max (succ u3) (succ u2)} C _inst_3 Type.{max u2 u3} CategoryTheory.types.{max u2 u3}) (CategoryTheory.Functor.category.{u2, max u3 u2, u4, max (succ u3) (succ u2)} C _inst_3 Type.{max u2 u3} CategoryTheory.types.{max u2 u3}))) (CategoryTheory.Functor.comp.{u2, u2, max u3 u2, u4, succ u2, max (succ u3) (succ u2)} C _inst_3 Type.{u2} CategoryTheory.types.{u2} Type.{max u2 u3} CategoryTheory.types.{max u2 u3} (Prefunctor.obj.{succ u2, max (succ u4) (succ u2), u4, max u4 (succ u2)} (Opposite.{succ u4} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} (Opposite.{succ u4} C) (CategoryTheory.Category.toCategoryStruct.{u2, u4} (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3))) (CategoryTheory.Functor.{u2, u2, u4, succ u2} C _inst_3 Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.CategoryStruct.toQuiver.{max u4 u2, max u4 (succ u2)} (CategoryTheory.Functor.{u2, u2, u4, succ u2} C _inst_3 Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.Category.toCategoryStruct.{max u4 u2, max u4 (succ u2)} (CategoryTheory.Functor.{u2, u2, u4, succ u2} C _inst_3 Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.Functor.category.{u2, u2, u4, succ u2} C _inst_3 Type.{u2} CategoryTheory.types.{u2}))) (CategoryTheory.Functor.toPrefunctor.{u2, max u4 u2, u4, max u4 (succ u2)} (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3) (CategoryTheory.Functor.{u2, u2, u4, succ u2} C _inst_3 Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.Functor.category.{u2, u2, u4, succ u2} C _inst_3 Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.coyoneda.{u2, u4} C _inst_3)) (Opposite.op.{succ u4} C (CategoryTheory.Limits.Cocone.pt.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c))) CategoryTheory.uliftFunctor.{u3, u2}) (CategoryTheory.Functor.cocones.{u1, u2, u3, u4} J _inst_1 C _inst_3 F)
Case conversion may be inaccurate. Consider using '#align category_theory.limits.cocone.extensions CategoryTheory.Limits.Cocone.extensionsₓ'. -/
/-- A map from the vertex of a cocone naturally induces a cocone by composition. -/
@[simps]
-def extensions (c : Cocone F) : coyoneda.obj (op c.x) ⋙ uliftFunctor.{u₁} ⟶ F.cocones
+def extensions (c : Cocone F) : coyoneda.obj (op c.pt) ⋙ uliftFunctor.{u₁} ⟶ F.cocones
where app X f := c.ι ≫ (const J).map f.down
#align category_theory.limits.cocone.extensions CategoryTheory.Limits.Cocone.extensions
#print CategoryTheory.Limits.Cocone.extend /-
/-- A map from the vertex of a cocone induces a cocone by composition. -/
@[simps]
-def extend (c : Cocone F) {X : C} (f : c.x ⟶ X) : Cocone F :=
- { x
+def extend (c : Cocone F) {X : C} (f : c.pt ⟶ X) : Cocone F :=
+ { pt
ι := c.extensions.app X ⟨f⟩ }
#align category_theory.limits.cocone.extend CategoryTheory.Limits.Cocone.extend
-/
@@ -310,7 +310,7 @@ version.
@[simps]
def whisker (E : K ⥤ J) (c : Cocone F) : Cocone (E ⋙ F)
where
- x := c.x
+ pt := c.pt
ι := whiskerLeft E c.ι
#align category_theory.limits.cocone.whisker CategoryTheory.Limits.Cocone.whisker
-/
@@ -322,7 +322,7 @@ end Cocone
commutes with the cone legs. -/
@[ext]
structure ConeMorphism (A B : Cone F) where
- Hom : A.x ⟶ B.x
+ Hom : A.pt ⟶ B.pt
w' : ∀ j : J, hom ≫ B.π.app j = A.π.app j := by obviously
#align category_theory.limits.cone_morphism CategoryTheory.Limits.ConeMorphism
-/
@@ -344,7 +344,7 @@ instance Cone.category : Category (Cone F)
where
Hom A B := ConeMorphism A B
comp X Y Z f g := { Hom := f.Hom ≫ g.Hom }
- id B := { Hom := 𝟙 B.x }
+ id B := { Hom := 𝟙 B.pt }
#align category_theory.limits.cone.category CategoryTheory.Limits.Cone.category
-/
@@ -352,7 +352,7 @@ namespace Cones
/- warning: category_theory.limits.cones.ext -> CategoryTheory.Limits.Cones.ext is a dubious translation:
lean 3 declaration is
- forall {J : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} J] {C : Type.{u4}} [_inst_3 : CategoryTheory.Category.{u2, u4} C] {F : CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3} {c : CategoryTheory.Limits.Cone.{u1, u2, u3, u4} J _inst_1 C _inst_3 F} {c' : CategoryTheory.Limits.Cone.{u1, u2, u3, u4} J _inst_1 C _inst_3 F} (φ : CategoryTheory.Iso.{u2, u4} C _inst_3 (CategoryTheory.Limits.Cone.x.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c) (CategoryTheory.Limits.Cone.x.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c')), (forall (j : J), Eq.{succ u2} (Quiver.Hom.{succ u2, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} J _inst_1 C _inst_3 (CategoryTheory.Functor.obj.{u2, max u3 u2, u4, max u1 u2 u3 u4} C _inst_3 (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.const.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Limits.Cone.x.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c)) j) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} J _inst_1 C _inst_3 F j)) (CategoryTheory.NatTrans.app.{u1, u2, u3, u4} J _inst_1 C _inst_3 (CategoryTheory.Functor.obj.{u2, max u3 u2, u4, max u1 u2 u3 u4} C _inst_3 (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.const.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Limits.Cone.x.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c)) F (CategoryTheory.Limits.Cone.π.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c) j) (CategoryTheory.CategoryStruct.comp.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} J _inst_1 C _inst_3 (CategoryTheory.Functor.obj.{u2, max u3 u2, u4, max u1 u2 u3 u4} C _inst_3 (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.const.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Limits.Cone.x.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c)) j) (CategoryTheory.Limits.Cone.x.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c') (CategoryTheory.Functor.obj.{u1, u2, u3, u4} J _inst_1 C _inst_3 F j) (CategoryTheory.Iso.hom.{u2, u4} C _inst_3 (CategoryTheory.Limits.Cone.x.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c) (CategoryTheory.Limits.Cone.x.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c') φ) (CategoryTheory.NatTrans.app.{u1, u2, u3, u4} J _inst_1 C _inst_3 (CategoryTheory.Functor.obj.{u2, max u3 u2, u4, max u1 u2 u3 u4} C _inst_3 (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.const.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Limits.Cone.x.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c')) F (CategoryTheory.Limits.Cone.π.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c') j))) -> (CategoryTheory.Iso.{u2, max u3 u4 u2} (CategoryTheory.Limits.Cone.{u1, u2, u3, u4} J _inst_1 C _inst_3 F) (CategoryTheory.Limits.Cone.category.{u1, u2, u3, u4} J _inst_1 C _inst_3 F) c c')
+ forall {J : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} J] {C : Type.{u4}} [_inst_3 : CategoryTheory.Category.{u2, u4} C] {F : CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3} {c : CategoryTheory.Limits.Cone.{u1, u2, u3, u4} J _inst_1 C _inst_3 F} {c' : CategoryTheory.Limits.Cone.{u1, u2, u3, u4} J _inst_1 C _inst_3 F} (φ : CategoryTheory.Iso.{u2, u4} C _inst_3 (CategoryTheory.Limits.Cone.pt.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c) (CategoryTheory.Limits.Cone.pt.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c')), (forall (j : J), Eq.{succ u2} (Quiver.Hom.{succ u2, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} J _inst_1 C _inst_3 (CategoryTheory.Functor.obj.{u2, max u3 u2, u4, max u1 u2 u3 u4} C _inst_3 (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.const.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Limits.Cone.pt.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c)) j) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} J _inst_1 C _inst_3 F j)) (CategoryTheory.NatTrans.app.{u1, u2, u3, u4} J _inst_1 C _inst_3 (CategoryTheory.Functor.obj.{u2, max u3 u2, u4, max u1 u2 u3 u4} C _inst_3 (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.const.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Limits.Cone.pt.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c)) F (CategoryTheory.Limits.Cone.π.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c) j) (CategoryTheory.CategoryStruct.comp.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} J _inst_1 C _inst_3 (CategoryTheory.Functor.obj.{u2, max u3 u2, u4, max u1 u2 u3 u4} C _inst_3 (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.const.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Limits.Cone.pt.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c)) j) (CategoryTheory.Limits.Cone.pt.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c') (CategoryTheory.Functor.obj.{u1, u2, u3, u4} J _inst_1 C _inst_3 F j) (CategoryTheory.Iso.hom.{u2, u4} C _inst_3 (CategoryTheory.Limits.Cone.pt.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c) (CategoryTheory.Limits.Cone.pt.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c') φ) (CategoryTheory.NatTrans.app.{u1, u2, u3, u4} J _inst_1 C _inst_3 (CategoryTheory.Functor.obj.{u2, max u3 u2, u4, max u1 u2 u3 u4} C _inst_3 (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.const.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Limits.Cone.pt.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c')) F (CategoryTheory.Limits.Cone.π.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c') j))) -> (CategoryTheory.Iso.{u2, max u3 u4 u2} (CategoryTheory.Limits.Cone.{u1, u2, u3, u4} J _inst_1 C _inst_3 F) (CategoryTheory.Limits.Cone.category.{u1, u2, u3, u4} J _inst_1 C _inst_3 F) c c')
but is expected to have type
forall {J : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} J] {C : Type.{u4}} [_inst_3 : CategoryTheory.Category.{u2, u4} C] {F : CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3} {c : CategoryTheory.Limits.Cone.{u1, u2, u3, u4} J _inst_1 C _inst_3 F} {c' : CategoryTheory.Limits.Cone.{u1, u2, u3, u4} J _inst_1 C _inst_3 F} (φ : CategoryTheory.Iso.{u2, u4} C _inst_3 (CategoryTheory.Limits.Cone.pt.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c) (CategoryTheory.Limits.Cone.pt.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c')), (forall (j : J), Eq.{succ u2} (Quiver.Hom.{succ u2, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) (Prefunctor.obj.{succ u1, succ u2, u3, u4} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} J (CategoryTheory.Category.toCategoryStruct.{u1, u3} J _inst_1)) C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} J _inst_1 C _inst_3 (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u4, max (max (max u3 u1) u2) u4} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max (max (max u3 u1) u4) u2} (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max (max (max u3 u1) u4) u2} (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 C _inst_3))) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u4, max (max (max u3 u1) u4) u2} C _inst_3 (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.const.{u1, u2, u3, u4} J _inst_1 C _inst_3)) (CategoryTheory.Limits.Cone.pt.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c))) j) (Prefunctor.obj.{succ u1, succ u2, u3, u4} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} J (CategoryTheory.Category.toCategoryStruct.{u1, u3} J _inst_1)) C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} J _inst_1 C _inst_3 F) j)) (CategoryTheory.NatTrans.app.{u1, u2, u3, u4} J _inst_1 C _inst_3 (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u4, max (max (max u3 u1) u2) u4} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max (max (max u3 u1) u4) u2} (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max (max (max u3 u1) u4) u2} (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 C _inst_3))) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u4, max (max (max u3 u1) u4) u2} C _inst_3 (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.const.{u1, u2, u3, u4} J _inst_1 C _inst_3)) (CategoryTheory.Limits.Cone.pt.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c)) F (CategoryTheory.Limits.Cone.π.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c) j) (CategoryTheory.CategoryStruct.comp.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3) (CategoryTheory.Limits.Cone.pt.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c) (CategoryTheory.Limits.Cone.pt.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c') (Prefunctor.obj.{succ u1, succ u2, u3, u4} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} J (CategoryTheory.Category.toCategoryStruct.{u1, u3} J _inst_1)) C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} J _inst_1 C _inst_3 F) j) (CategoryTheory.Iso.hom.{u2, u4} C _inst_3 (CategoryTheory.Limits.Cone.pt.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c) (CategoryTheory.Limits.Cone.pt.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c') φ) (CategoryTheory.NatTrans.app.{u1, u2, u3, u4} J _inst_1 C _inst_3 (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u4, max (max (max u3 u1) u2) u4} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max (max (max u3 u1) u4) u2} (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max (max (max u3 u1) u4) u2} (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 C _inst_3))) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u4, max (max (max u3 u1) u4) u2} C _inst_3 (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.const.{u1, u2, u3, u4} J _inst_1 C _inst_3)) (CategoryTheory.Limits.Cone.pt.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c')) F (CategoryTheory.Limits.Cone.π.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c') j))) -> (CategoryTheory.Iso.{u2, max (max u3 u4) u2} (CategoryTheory.Limits.Cone.{u1, u2, u3, u4} J _inst_1 C _inst_3 F) (CategoryTheory.Limits.Cone.category.{u1, u2, u3, u4} J _inst_1 C _inst_3 F) c c')
Case conversion may be inaccurate. Consider using '#align category_theory.limits.cones.ext CategoryTheory.Limits.Cones.extₓ'. -/
@@ -360,7 +360,7 @@ Case conversion may be inaccurate. Consider using '#align category_theory.limits
isomorphism between their vertices which commutes with the cone
maps. -/
@[ext, simps]
-def ext {c c' : Cone F} (φ : c.x ≅ c'.x) (w : ∀ j, c.π.app j = φ.Hom ≫ c'.π.app j) : c ≅ c'
+def ext {c c' : Cone F} (φ : c.pt ≅ c'.pt) (w : ∀ j, c.π.app j = φ.Hom ≫ c'.π.app j) : c ≅ c'
where
Hom := { Hom := φ.Hom }
inv :=
@@ -371,7 +371,7 @@ def ext {c c' : Cone F} (φ : c.x ≅ c'.x) (w : ∀ j, c.π.app j = φ.Hom ≫
#print CategoryTheory.Limits.Cones.eta /-
/-- Eta rule for cones. -/
@[simps]
-def eta (c : Cone F) : c ≅ ⟨c.x, c.π⟩ :=
+def eta (c : Cone F) : c ≅ ⟨c.pt, c.π⟩ :=
Cones.ext (Iso.refl _) (by tidy)
#align category_theory.limits.cones.eta CategoryTheory.Limits.Cones.eta
-/
@@ -394,7 +394,7 @@ Functorially postcompose a cone for `F` by a natural transformation `F ⟶ G` to
def postcompose {G : J ⥤ C} (α : F ⟶ G) : Cone F ⥤ Cone G
where
obj c :=
- { x := c.x
+ { pt := c.pt
π := c.π ≫ α }
map c₁ c₂ f := { Hom := f.Hom }
#align category_theory.limits.cones.postcompose CategoryTheory.Limits.Cones.postcompose
@@ -495,7 +495,7 @@ variable (F)
/-- Forget the cone structure and obtain just the cone point. -/
@[simps]
def forget : Cone F ⥤ C where
- obj t := t.x
+ obj t := t.pt
map s t f := f.Hom
#align category_theory.limits.cones.forget CategoryTheory.Limits.Cones.forget
-/
@@ -508,7 +508,7 @@ variable (G : C ⥤ D)
def functoriality : Cone F ⥤ Cone (F ⋙ G)
where
obj A :=
- { x := G.obj A.x
+ { pt := G.obj A.pt
π :=
{ app := fun j => G.map (A.π.app j)
naturality' := by intros <;> erw [← G.map_comp] <;> tidy } }
@@ -578,7 +578,7 @@ end Cones
which commutes with the cocone legs. -/
@[ext]
structure CoconeMorphism (A B : Cocone F) where
- Hom : A.x ⟶ B.x
+ Hom : A.pt ⟶ B.pt
w' : ∀ j : J, A.ι.app j ≫ hom = B.ι.app j := by obviously
#align category_theory.limits.cocone_morphism CategoryTheory.Limits.CoconeMorphism
-/
@@ -599,7 +599,7 @@ instance Cocone.category : Category (Cocone F)
where
Hom A B := CoconeMorphism A B
comp _ _ _ f g := { Hom := f.Hom ≫ g.Hom }
- id B := { Hom := 𝟙 B.x }
+ id B := { Hom := 𝟙 B.pt }
#align category_theory.limits.cocone.category CategoryTheory.Limits.Cocone.category
-/
@@ -607,7 +607,7 @@ namespace Cocones
/- warning: category_theory.limits.cocones.ext -> CategoryTheory.Limits.Cocones.ext is a dubious translation:
lean 3 declaration is
- forall {J : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} J] {C : Type.{u4}} [_inst_3 : CategoryTheory.Category.{u2, u4} C] {F : CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3} {c : CategoryTheory.Limits.Cocone.{u1, u2, u3, u4} J _inst_1 C _inst_3 F} {c' : CategoryTheory.Limits.Cocone.{u1, u2, u3, u4} J _inst_1 C _inst_3 F} (φ : CategoryTheory.Iso.{u2, u4} C _inst_3 (CategoryTheory.Limits.Cocone.x.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c) (CategoryTheory.Limits.Cocone.x.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c')), (forall (j : J), Eq.{succ u2} (Quiver.Hom.{succ u2, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} J _inst_1 C _inst_3 F j) (CategoryTheory.Limits.Cocone.x.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c')) (CategoryTheory.CategoryStruct.comp.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} J _inst_1 C _inst_3 F j) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} J _inst_1 C _inst_3 (CategoryTheory.Functor.obj.{u2, max u3 u2, u4, max u1 u2 u3 u4} C _inst_3 (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.const.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Limits.Cocone.x.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c)) j) (CategoryTheory.Limits.Cocone.x.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c') (CategoryTheory.NatTrans.app.{u1, u2, u3, u4} J _inst_1 C _inst_3 F (CategoryTheory.Functor.obj.{u2, max u3 u2, u4, max u1 u2 u3 u4} C _inst_3 (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.const.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Limits.Cocone.x.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c)) (CategoryTheory.Limits.Cocone.ι.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c) j) (CategoryTheory.Iso.hom.{u2, u4} C _inst_3 (CategoryTheory.Limits.Cocone.x.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c) (CategoryTheory.Limits.Cocone.x.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c') φ)) (CategoryTheory.NatTrans.app.{u1, u2, u3, u4} J _inst_1 C _inst_3 F (CategoryTheory.Functor.obj.{u2, max u3 u2, u4, max u1 u2 u3 u4} C _inst_3 (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.const.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Limits.Cocone.x.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c')) (CategoryTheory.Limits.Cocone.ι.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c') j)) -> (CategoryTheory.Iso.{u2, max u3 u4 u2} (CategoryTheory.Limits.Cocone.{u1, u2, u3, u4} J _inst_1 C _inst_3 F) (CategoryTheory.Limits.Cocone.category.{u1, u2, u3, u4} J _inst_1 C _inst_3 F) c c')
+ forall {J : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} J] {C : Type.{u4}} [_inst_3 : CategoryTheory.Category.{u2, u4} C] {F : CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3} {c : CategoryTheory.Limits.Cocone.{u1, u2, u3, u4} J _inst_1 C _inst_3 F} {c' : CategoryTheory.Limits.Cocone.{u1, u2, u3, u4} J _inst_1 C _inst_3 F} (φ : CategoryTheory.Iso.{u2, u4} C _inst_3 (CategoryTheory.Limits.Cocone.pt.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c) (CategoryTheory.Limits.Cocone.pt.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c')), (forall (j : J), Eq.{succ u2} (Quiver.Hom.{succ u2, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} J _inst_1 C _inst_3 F j) (CategoryTheory.Limits.Cocone.pt.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c')) (CategoryTheory.CategoryStruct.comp.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} J _inst_1 C _inst_3 F j) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} J _inst_1 C _inst_3 (CategoryTheory.Functor.obj.{u2, max u3 u2, u4, max u1 u2 u3 u4} C _inst_3 (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.const.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Limits.Cocone.pt.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c)) j) (CategoryTheory.Limits.Cocone.pt.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c') (CategoryTheory.NatTrans.app.{u1, u2, u3, u4} J _inst_1 C _inst_3 F (CategoryTheory.Functor.obj.{u2, max u3 u2, u4, max u1 u2 u3 u4} C _inst_3 (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.const.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Limits.Cocone.pt.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c)) (CategoryTheory.Limits.Cocone.ι.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c) j) (CategoryTheory.Iso.hom.{u2, u4} C _inst_3 (CategoryTheory.Limits.Cocone.pt.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c) (CategoryTheory.Limits.Cocone.pt.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c') φ)) (CategoryTheory.NatTrans.app.{u1, u2, u3, u4} J _inst_1 C _inst_3 F (CategoryTheory.Functor.obj.{u2, max u3 u2, u4, max u1 u2 u3 u4} C _inst_3 (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.const.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Limits.Cocone.pt.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c')) (CategoryTheory.Limits.Cocone.ι.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c') j)) -> (CategoryTheory.Iso.{u2, max u3 u4 u2} (CategoryTheory.Limits.Cocone.{u1, u2, u3, u4} J _inst_1 C _inst_3 F) (CategoryTheory.Limits.Cocone.category.{u1, u2, u3, u4} J _inst_1 C _inst_3 F) c c')
but is expected to have type
forall {J : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} J] {C : Type.{u4}} [_inst_3 : CategoryTheory.Category.{u2, u4} C] {F : CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3} {c : CategoryTheory.Limits.Cocone.{u1, u2, u3, u4} J _inst_1 C _inst_3 F} {c' : CategoryTheory.Limits.Cocone.{u1, u2, u3, u4} J _inst_1 C _inst_3 F} (φ : CategoryTheory.Iso.{u2, u4} C _inst_3 (CategoryTheory.Limits.Cocone.pt.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c) (CategoryTheory.Limits.Cocone.pt.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c')), (forall (j : J), Eq.{succ u2} (Quiver.Hom.{succ u2, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) (Prefunctor.obj.{succ u1, succ u2, u3, u4} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} J (CategoryTheory.Category.toCategoryStruct.{u1, u3} J _inst_1)) C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} J _inst_1 C _inst_3 F) j) (CategoryTheory.Limits.Cocone.pt.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c')) (CategoryTheory.CategoryStruct.comp.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3) (Prefunctor.obj.{succ u1, succ u2, u3, u4} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} J (CategoryTheory.Category.toCategoryStruct.{u1, u3} J _inst_1)) C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} J _inst_1 C _inst_3 F) j) (Prefunctor.obj.{succ u1, succ u2, u3, u4} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} J (CategoryTheory.Category.toCategoryStruct.{u1, u3} J _inst_1)) C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} J _inst_1 C _inst_3 (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u4, max (max (max u3 u1) u2) u4} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max (max (max u3 u1) u4) u2} (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max (max (max u3 u1) u4) u2} (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 C _inst_3))) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u4, max (max (max u3 u1) u4) u2} C _inst_3 (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.const.{u1, u2, u3, u4} J _inst_1 C _inst_3)) (CategoryTheory.Limits.Cocone.pt.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c))) j) (CategoryTheory.Limits.Cocone.pt.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c') (CategoryTheory.NatTrans.app.{u1, u2, u3, u4} J _inst_1 C _inst_3 F (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u4, max (max (max u3 u1) u2) u4} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max (max (max u3 u1) u4) u2} (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max (max (max u3 u1) u4) u2} (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 C _inst_3))) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u4, max (max (max u3 u1) u4) u2} C _inst_3 (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.const.{u1, u2, u3, u4} J _inst_1 C _inst_3)) (CategoryTheory.Limits.Cocone.pt.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c)) (CategoryTheory.Limits.Cocone.ι.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c) j) (CategoryTheory.Iso.hom.{u2, u4} C _inst_3 (CategoryTheory.Limits.Cocone.pt.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c) (CategoryTheory.Limits.Cocone.pt.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c') φ)) (CategoryTheory.NatTrans.app.{u1, u2, u3, u4} J _inst_1 C _inst_3 F (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u4, max (max (max u3 u1) u2) u4} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max (max (max u3 u1) u4) u2} (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max (max (max u3 u1) u4) u2} (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 C _inst_3))) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u4, max (max (max u3 u1) u4) u2} C _inst_3 (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.const.{u1, u2, u3, u4} J _inst_1 C _inst_3)) (CategoryTheory.Limits.Cocone.pt.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c')) (CategoryTheory.Limits.Cocone.ι.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c') j)) -> (CategoryTheory.Iso.{u2, max (max u3 u4) u2} (CategoryTheory.Limits.Cocone.{u1, u2, u3, u4} J _inst_1 C _inst_3 F) (CategoryTheory.Limits.Cocone.category.{u1, u2, u3, u4} J _inst_1 C _inst_3 F) c c')
Case conversion may be inaccurate. Consider using '#align category_theory.limits.cocones.ext CategoryTheory.Limits.Cocones.extₓ'. -/
@@ -615,7 +615,7 @@ Case conversion may be inaccurate. Consider using '#align category_theory.limits
isomorphism between their vertices which commutes with the cocone
maps. -/
@[ext, simps]
-def ext {c c' : Cocone F} (φ : c.x ≅ c'.x) (w : ∀ j, c.ι.app j ≫ φ.Hom = c'.ι.app j) : c ≅ c'
+def ext {c c' : Cocone F} (φ : c.pt ≅ c'.pt) (w : ∀ j, c.ι.app j ≫ φ.Hom = c'.ι.app j) : c ≅ c'
where
Hom := { Hom := φ.Hom }
inv :=
@@ -626,7 +626,7 @@ def ext {c c' : Cocone F} (φ : c.x ≅ c'.x) (w : ∀ j, c.ι.app j ≫ φ.Hom
#print CategoryTheory.Limits.Cocones.eta /-
/-- Eta rule for cocones. -/
@[simps]
-def eta (c : Cocone F) : c ≅ ⟨c.x, c.ι⟩ :=
+def eta (c : Cocone F) : c ≅ ⟨c.pt, c.ι⟩ :=
Cocones.ext (Iso.refl _) (by tidy)
#align category_theory.limits.cocones.eta CategoryTheory.Limits.Cocones.eta
-/
@@ -649,7 +649,7 @@ for `G`. -/
def precompose {G : J ⥤ C} (α : G ⟶ F) : Cocone F ⥤ Cocone G
where
obj c :=
- { x := c.x
+ { pt := c.pt
ι := α ≫ c.ι }
map c₁ c₂ f := { Hom := f.Hom }
#align category_theory.limits.cocones.precompose CategoryTheory.Limits.Cocones.precompose
@@ -752,7 +752,7 @@ variable (F)
/-- Forget the cocone structure and obtain just the cocone point. -/
@[simps]
def forget : Cocone F ⥤ C where
- obj t := t.x
+ obj t := t.pt
map s t f := f.Hom
#align category_theory.limits.cocones.forget CategoryTheory.Limits.Cocones.forget
-/
@@ -765,7 +765,7 @@ variable (G : C ⥤ D)
def functoriality : Cocone F ⥤ Cocone (F ⋙ G)
where
obj A :=
- { x := G.obj A.x
+ { pt := G.obj A.pt
ι :=
{ app := fun j => G.map (A.ι.app j)
naturality' := by intros <;> erw [← G.map_comp] <;> tidy } }
@@ -1084,8 +1084,9 @@ variable {F : J ⥤ C}
#print CategoryTheory.Limits.Cocone.op /-
/-- Change a `cocone F` into a `cone F.op`. -/
@[simps]
-def Cocone.op (c : Cocone F) : Cone F.op where
- x := op c.x
+def Cocone.op (c : Cocone F) : Cone F.op
+ where
+ pt := op c.pt
π := NatTrans.op c.ι
#align category_theory.limits.cocone.op CategoryTheory.Limits.Cocone.op
-/
@@ -1094,7 +1095,7 @@ def Cocone.op (c : Cocone F) : Cone F.op where
/-- Change a `cone F` into a `cocone F.op`. -/
@[simps]
def Cone.op (c : Cone F) : Cocone F.op where
- x := op c.x
+ pt := op c.pt
ι := NatTrans.op c.π
#align category_theory.limits.cone.op CategoryTheory.Limits.Cone.op
-/
@@ -1104,7 +1105,7 @@ def Cone.op (c : Cone F) : Cocone F.op where
@[simps]
def Cocone.unop (c : Cocone F.op) : Cone F
where
- x := unop c.x
+ pt := unop c.pt
π := NatTrans.removeOp c.ι
#align category_theory.limits.cocone.unop CategoryTheory.Limits.Cocone.unop
-/
@@ -1114,7 +1115,7 @@ def Cocone.unop (c : Cocone F.op) : Cone F
@[simps]
def Cone.unop (c : Cone F.op) : Cocone F
where
- x := unop c.x
+ pt := unop c.pt
ι := NatTrans.removeOp c.π
#align category_theory.limits.cone.unop CategoryTheory.Limits.Cone.unop
-/
@@ -1201,7 +1202,7 @@ variable {F : J ⥤ Cᵒᵖ}
simpRhs := true })]
def coneOfCoconeLeftOp (c : Cocone F.leftOp) : Cone F
where
- x := op c.x
+ pt := op c.pt
π := NatTrans.removeLeftOp c.ι
#align category_theory.limits.cone_of_cocone_left_op CategoryTheory.Limits.coneOfCoconeLeftOp
-/
@@ -1213,7 +1214,7 @@ def coneOfCoconeLeftOp (c : Cocone F.leftOp) : Cone F
simpRhs := true })]
def coconeLeftOpOfCone (c : Cone F) : Cocone F.leftOp
where
- x := unop c.x
+ pt := unop c.pt
ι := NatTrans.leftOp c.π
#align category_theory.limits.cocone_left_op_of_cone CategoryTheory.Limits.coconeLeftOpOfCone
-/
@@ -1223,17 +1224,17 @@ def coconeLeftOpOfCone (c : Cone F) : Cocone F.leftOp
reduce the RHS using `expr.dsimp` and `expr.simp`, but for some reason the expression is not
being simplified properly. -/
/-- Change a cone on `F.left_op : Jᵒᵖ ⥤ C` to a cocone on `F : J ⥤ Cᵒᵖ`. -/
-@[simps x]
+@[simps pt]
def coconeOfConeLeftOp (c : Cone F.leftOp) : Cocone F
where
- x := op c.x
+ pt := op c.pt
ι := NatTrans.removeLeftOp c.π
#align category_theory.limits.cocone_of_cone_left_op CategoryTheory.Limits.coconeOfConeLeftOp
-/
/- warning: category_theory.limits.cocone_of_cone_left_op_ι_app -> CategoryTheory.Limits.coconeOfConeLeftOp_ι_app is a dubious translation:
lean 3 declaration is
- forall {J : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} J] {C : Type.{u4}} [_inst_3 : CategoryTheory.Category.{u2, u4} C] {F : CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3)} (c : CategoryTheory.Limits.Cone.{u1, u2, u3, u4} (Opposite.{succ u3} J) (CategoryTheory.Category.opposite.{u1, u3} J _inst_1) C _inst_3 (CategoryTheory.Functor.leftOp.{u1, u2, u3, u4} J _inst_1 C _inst_3 F)) (j : J), Eq.{succ u2} (Quiver.Hom.{succ u2, u4} (Opposite.{succ u4} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} (Opposite.{succ u4} C) (CategoryTheory.Category.toCategoryStruct.{u2, u4} (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3))) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} J _inst_1 (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3) F j) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} J _inst_1 (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3) (CategoryTheory.Functor.obj.{u2, max u3 u2, u4, max u1 u2 u3 u4} (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3) (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3)) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3)) (CategoryTheory.Functor.const.{u1, u2, u3, u4} J _inst_1 (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3)) (CategoryTheory.Limits.Cocone.x.{u1, u2, u3, u4} J _inst_1 (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3) F (CategoryTheory.Limits.coconeOfConeLeftOp.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c))) j)) (CategoryTheory.NatTrans.app.{u1, u2, u3, u4} J _inst_1 (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3) F (CategoryTheory.Functor.obj.{u2, max u3 u2, u4, max u1 u2 u3 u4} (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3) (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3)) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3)) (CategoryTheory.Functor.const.{u1, u2, u3, u4} J _inst_1 (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3)) (CategoryTheory.Limits.Cocone.x.{u1, u2, u3, u4} J _inst_1 (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3) F (CategoryTheory.Limits.coconeOfConeLeftOp.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c))) (CategoryTheory.Limits.Cocone.ι.{u1, u2, u3, u4} J _inst_1 (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3) F (CategoryTheory.Limits.coconeOfConeLeftOp.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c)) j) (Quiver.Hom.op.{u4, succ u2} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} (Opposite.{succ u3} J) (CategoryTheory.Category.opposite.{u1, u3} J _inst_1) C _inst_3 (CategoryTheory.Functor.obj.{u2, max u3 u2, u4, max u1 u2 u3 u4} C _inst_3 (CategoryTheory.Functor.{u1, u2, u3, u4} (Opposite.{succ u3} J) (CategoryTheory.Category.opposite.{u1, u3} J _inst_1) C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} (Opposite.{succ u3} J) (CategoryTheory.Category.opposite.{u1, u3} J _inst_1) C _inst_3) (CategoryTheory.Functor.const.{u1, u2, u3, u4} (Opposite.{succ u3} J) (CategoryTheory.Category.opposite.{u1, u3} J _inst_1) C _inst_3) (CategoryTheory.Limits.Cone.x.{u1, u2, u3, u4} (Opposite.{succ u3} J) (CategoryTheory.Category.opposite.{u1, u3} J _inst_1) C _inst_3 (CategoryTheory.Functor.leftOp.{u1, u2, u3, u4} J _inst_1 C _inst_3 F) c)) (Opposite.op.{succ u3} J j)) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} (Opposite.{succ u3} J) (CategoryTheory.Category.opposite.{u1, u3} J _inst_1) C _inst_3 (CategoryTheory.Functor.leftOp.{u1, u2, u3, u4} J _inst_1 C _inst_3 F) (Opposite.op.{succ u3} J j)) (CategoryTheory.NatTrans.app.{u1, u2, u3, u4} (Opposite.{succ u3} J) (CategoryTheory.Category.opposite.{u1, u3} J _inst_1) C _inst_3 (CategoryTheory.Functor.obj.{u2, max u3 u2, u4, max u1 u2 u3 u4} C _inst_3 (CategoryTheory.Functor.{u1, u2, u3, u4} (Opposite.{succ u3} J) (CategoryTheory.Category.opposite.{u1, u3} J _inst_1) C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} (Opposite.{succ u3} J) (CategoryTheory.Category.opposite.{u1, u3} J _inst_1) C _inst_3) (CategoryTheory.Functor.const.{u1, u2, u3, u4} (Opposite.{succ u3} J) (CategoryTheory.Category.opposite.{u1, u3} J _inst_1) C _inst_3) (CategoryTheory.Limits.Cone.x.{u1, u2, u3, u4} (Opposite.{succ u3} J) (CategoryTheory.Category.opposite.{u1, u3} J _inst_1) C _inst_3 (CategoryTheory.Functor.leftOp.{u1, u2, u3, u4} J _inst_1 C _inst_3 F) c)) (CategoryTheory.Functor.leftOp.{u1, u2, u3, u4} J _inst_1 C _inst_3 F) (CategoryTheory.Limits.Cone.π.{u1, u2, u3, u4} (Opposite.{succ u3} J) (CategoryTheory.Category.opposite.{u1, u3} J _inst_1) C _inst_3 (CategoryTheory.Functor.leftOp.{u1, u2, u3, u4} J _inst_1 C _inst_3 F) c) (Opposite.op.{succ u3} J j)))
+ forall {J : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} J] {C : Type.{u4}} [_inst_3 : CategoryTheory.Category.{u2, u4} C] {F : CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3)} (c : CategoryTheory.Limits.Cone.{u1, u2, u3, u4} (Opposite.{succ u3} J) (CategoryTheory.Category.opposite.{u1, u3} J _inst_1) C _inst_3 (CategoryTheory.Functor.leftOp.{u1, u2, u3, u4} J _inst_1 C _inst_3 F)) (j : J), Eq.{succ u2} (Quiver.Hom.{succ u2, u4} (Opposite.{succ u4} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} (Opposite.{succ u4} C) (CategoryTheory.Category.toCategoryStruct.{u2, u4} (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3))) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} J _inst_1 (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3) F j) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} J _inst_1 (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3) (CategoryTheory.Functor.obj.{u2, max u3 u2, u4, max u1 u2 u3 u4} (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3) (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3)) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3)) (CategoryTheory.Functor.const.{u1, u2, u3, u4} J _inst_1 (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3)) (CategoryTheory.Limits.Cocone.pt.{u1, u2, u3, u4} J _inst_1 (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3) F (CategoryTheory.Limits.coconeOfConeLeftOp.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c))) j)) (CategoryTheory.NatTrans.app.{u1, u2, u3, u4} J _inst_1 (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3) F (CategoryTheory.Functor.obj.{u2, max u3 u2, u4, max u1 u2 u3 u4} (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3) (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3)) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3)) (CategoryTheory.Functor.const.{u1, u2, u3, u4} J _inst_1 (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3)) (CategoryTheory.Limits.Cocone.pt.{u1, u2, u3, u4} J _inst_1 (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3) F (CategoryTheory.Limits.coconeOfConeLeftOp.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c))) (CategoryTheory.Limits.Cocone.ι.{u1, u2, u3, u4} J _inst_1 (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3) F (CategoryTheory.Limits.coconeOfConeLeftOp.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c)) j) (Quiver.Hom.op.{u4, succ u2} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} (Opposite.{succ u3} J) (CategoryTheory.Category.opposite.{u1, u3} J _inst_1) C _inst_3 (CategoryTheory.Functor.obj.{u2, max u3 u2, u4, max u1 u2 u3 u4} C _inst_3 (CategoryTheory.Functor.{u1, u2, u3, u4} (Opposite.{succ u3} J) (CategoryTheory.Category.opposite.{u1, u3} J _inst_1) C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} (Opposite.{succ u3} J) (CategoryTheory.Category.opposite.{u1, u3} J _inst_1) C _inst_3) (CategoryTheory.Functor.const.{u1, u2, u3, u4} (Opposite.{succ u3} J) (CategoryTheory.Category.opposite.{u1, u3} J _inst_1) C _inst_3) (CategoryTheory.Limits.Cone.pt.{u1, u2, u3, u4} (Opposite.{succ u3} J) (CategoryTheory.Category.opposite.{u1, u3} J _inst_1) C _inst_3 (CategoryTheory.Functor.leftOp.{u1, u2, u3, u4} J _inst_1 C _inst_3 F) c)) (Opposite.op.{succ u3} J j)) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} (Opposite.{succ u3} J) (CategoryTheory.Category.opposite.{u1, u3} J _inst_1) C _inst_3 (CategoryTheory.Functor.leftOp.{u1, u2, u3, u4} J _inst_1 C _inst_3 F) (Opposite.op.{succ u3} J j)) (CategoryTheory.NatTrans.app.{u1, u2, u3, u4} (Opposite.{succ u3} J) (CategoryTheory.Category.opposite.{u1, u3} J _inst_1) C _inst_3 (CategoryTheory.Functor.obj.{u2, max u3 u2, u4, max u1 u2 u3 u4} C _inst_3 (CategoryTheory.Functor.{u1, u2, u3, u4} (Opposite.{succ u3} J) (CategoryTheory.Category.opposite.{u1, u3} J _inst_1) C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} (Opposite.{succ u3} J) (CategoryTheory.Category.opposite.{u1, u3} J _inst_1) C _inst_3) (CategoryTheory.Functor.const.{u1, u2, u3, u4} (Opposite.{succ u3} J) (CategoryTheory.Category.opposite.{u1, u3} J _inst_1) C _inst_3) (CategoryTheory.Limits.Cone.pt.{u1, u2, u3, u4} (Opposite.{succ u3} J) (CategoryTheory.Category.opposite.{u1, u3} J _inst_1) C _inst_3 (CategoryTheory.Functor.leftOp.{u1, u2, u3, u4} J _inst_1 C _inst_3 F) c)) (CategoryTheory.Functor.leftOp.{u1, u2, u3, u4} J _inst_1 C _inst_3 F) (CategoryTheory.Limits.Cone.π.{u1, u2, u3, u4} (Opposite.{succ u3} J) (CategoryTheory.Category.opposite.{u1, u3} J _inst_1) C _inst_3 (CategoryTheory.Functor.leftOp.{u1, u2, u3, u4} J _inst_1 C _inst_3 F) c) (Opposite.op.{succ u3} J j)))
but is expected to have type
forall {J : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} J] {C : Type.{u4}} [_inst_3 : CategoryTheory.Category.{u2, u4} C] {F : CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3)} (c : CategoryTheory.Limits.Cone.{u1, u2, u3, u4} (Opposite.{succ u3} J) (CategoryTheory.Category.opposite.{u1, u3} J _inst_1) C _inst_3 (CategoryTheory.Functor.leftOp.{u1, u2, u3, u4} J _inst_1 C _inst_3 F)) (j : J), Eq.{succ u2} (Quiver.Hom.{succ u2, u4} (Opposite.{succ u4} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} (Opposite.{succ u4} C) (CategoryTheory.Category.toCategoryStruct.{u2, u4} (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3))) (Prefunctor.obj.{succ u1, succ u2, u3, u4} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} J (CategoryTheory.Category.toCategoryStruct.{u1, u3} J _inst_1)) (Opposite.{succ u4} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} (Opposite.{succ u4} C) (CategoryTheory.Category.toCategoryStruct.{u2, u4} (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3))) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} J _inst_1 (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3) F) j) (Prefunctor.obj.{succ u1, succ u2, u3, u4} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} J (CategoryTheory.Category.toCategoryStruct.{u1, u3} J _inst_1)) (Opposite.{succ u4} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} (Opposite.{succ u4} C) (CategoryTheory.Category.toCategoryStruct.{u2, u4} (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3))) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} J _inst_1 (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3) (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u4, max (max (max u3 u1) u2) u4} (Opposite.{succ u4} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} (Opposite.{succ u4} C) (CategoryTheory.Category.toCategoryStruct.{u2, u4} (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3))) (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3)) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max (max (max u3 u1) u4) u2} (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3)) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max (max (max u3 u1) u4) u2} (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3)) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3)))) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u4, max (max (max u3 u1) u4) u2} (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3) (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3)) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3)) (CategoryTheory.Functor.const.{u1, u2, u3, u4} J _inst_1 (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3))) (CategoryTheory.Limits.Cocone.pt.{u1, u2, u3, u4} J _inst_1 (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3) F (CategoryTheory.Limits.coconeOfConeLeftOp.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c)))) j)) (CategoryTheory.NatTrans.app.{u1, u2, u3, u4} J _inst_1 (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3) F (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u4, max (max (max u3 u1) u2) u4} (Opposite.{succ u4} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} (Opposite.{succ u4} C) (CategoryTheory.Category.toCategoryStruct.{u2, u4} (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3))) (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3)) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max (max (max u3 u1) u4) u2} (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3)) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max (max (max u3 u1) u4) u2} (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3)) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3)))) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u4, max (max (max u3 u1) u4) u2} (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3) (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3)) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3)) (CategoryTheory.Functor.const.{u1, u2, u3, u4} J _inst_1 (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3))) (CategoryTheory.Limits.Cocone.pt.{u1, u2, u3, u4} J _inst_1 (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3) F (CategoryTheory.Limits.coconeOfConeLeftOp.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c))) (CategoryTheory.Limits.Cocone.ι.{u1, u2, u3, u4} J _inst_1 (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3) F (CategoryTheory.Limits.coconeOfConeLeftOp.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c)) j) (Quiver.Hom.op.{u4, succ u2} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) (Prefunctor.obj.{succ u1, succ u2, u3, u4} (Opposite.{succ u3} J) (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} (Opposite.{succ u3} J) (CategoryTheory.Category.toCategoryStruct.{u1, u3} (Opposite.{succ u3} J) (CategoryTheory.Category.opposite.{u1, u3} J _inst_1))) C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} (Opposite.{succ u3} J) (CategoryTheory.Category.opposite.{u1, u3} J _inst_1) C _inst_3 (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u4, max (max (max u3 u1) u2) u4} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) (CategoryTheory.Functor.{u1, u2, u3, u4} (Opposite.{succ u3} J) (CategoryTheory.Category.opposite.{u1, u3} J _inst_1) C _inst_3) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max (max (max u3 u1) u4) u2} (CategoryTheory.Functor.{u1, u2, u3, u4} (Opposite.{succ u3} J) (CategoryTheory.Category.opposite.{u1, u3} J _inst_1) C _inst_3) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max (max (max u3 u1) u4) u2} (CategoryTheory.Functor.{u1, u2, u3, u4} (Opposite.{succ u3} J) (CategoryTheory.Category.opposite.{u1, u3} J _inst_1) C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} (Opposite.{succ u3} J) (CategoryTheory.Category.opposite.{u1, u3} J _inst_1) C _inst_3))) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u4, max (max (max u3 u1) u4) u2} C _inst_3 (CategoryTheory.Functor.{u1, u2, u3, u4} (Opposite.{succ u3} J) (CategoryTheory.Category.opposite.{u1, u3} J _inst_1) C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} (Opposite.{succ u3} J) (CategoryTheory.Category.opposite.{u1, u3} J _inst_1) C _inst_3) (CategoryTheory.Functor.const.{u1, u2, u3, u4} (Opposite.{succ u3} J) (CategoryTheory.Category.opposite.{u1, u3} J _inst_1) C _inst_3)) (CategoryTheory.Limits.Cone.pt.{u1, u2, u3, u4} (Opposite.{succ u3} J) (CategoryTheory.Category.opposite.{u1, u3} J _inst_1) C _inst_3 (CategoryTheory.Functor.leftOp.{u1, u2, u3, u4} J _inst_1 C _inst_3 F) c))) (Opposite.op.{succ u3} J j)) (Prefunctor.obj.{succ u1, succ u2, u3, u4} (Opposite.{succ u3} J) (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} (Opposite.{succ u3} J) (CategoryTheory.Category.toCategoryStruct.{u1, u3} (Opposite.{succ u3} J) (CategoryTheory.Category.opposite.{u1, u3} J _inst_1))) C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} (Opposite.{succ u3} J) (CategoryTheory.Category.opposite.{u1, u3} J _inst_1) C _inst_3 (CategoryTheory.Functor.leftOp.{u1, u2, u3, u4} J _inst_1 C _inst_3 F)) (Opposite.op.{succ u3} J j)) (CategoryTheory.NatTrans.app.{u1, u2, u3, u4} (Opposite.{succ u3} J) (CategoryTheory.Category.opposite.{u1, u3} J _inst_1) C _inst_3 (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u4, max (max (max u3 u1) u2) u4} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) (CategoryTheory.Functor.{u1, u2, u3, u4} (Opposite.{succ u3} J) (CategoryTheory.Category.opposite.{u1, u3} J _inst_1) C _inst_3) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max (max (max u3 u1) u4) u2} (CategoryTheory.Functor.{u1, u2, u3, u4} (Opposite.{succ u3} J) (CategoryTheory.Category.opposite.{u1, u3} J _inst_1) C _inst_3) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max (max (max u3 u1) u4) u2} (CategoryTheory.Functor.{u1, u2, u3, u4} (Opposite.{succ u3} J) (CategoryTheory.Category.opposite.{u1, u3} J _inst_1) C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} (Opposite.{succ u3} J) (CategoryTheory.Category.opposite.{u1, u3} J _inst_1) C _inst_3))) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u4, max (max (max u3 u1) u4) u2} C _inst_3 (CategoryTheory.Functor.{u1, u2, u3, u4} (Opposite.{succ u3} J) (CategoryTheory.Category.opposite.{u1, u3} J _inst_1) C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} (Opposite.{succ u3} J) (CategoryTheory.Category.opposite.{u1, u3} J _inst_1) C _inst_3) (CategoryTheory.Functor.const.{u1, u2, u3, u4} (Opposite.{succ u3} J) (CategoryTheory.Category.opposite.{u1, u3} J _inst_1) C _inst_3)) (CategoryTheory.Limits.Cone.pt.{u1, u2, u3, u4} (Opposite.{succ u3} J) (CategoryTheory.Category.opposite.{u1, u3} J _inst_1) C _inst_3 (CategoryTheory.Functor.leftOp.{u1, u2, u3, u4} J _inst_1 C _inst_3 F) c)) (CategoryTheory.Functor.leftOp.{u1, u2, u3, u4} J _inst_1 C _inst_3 F) (CategoryTheory.Limits.Cone.π.{u1, u2, u3, u4} (Opposite.{succ u3} J) (CategoryTheory.Category.opposite.{u1, u3} J _inst_1) C _inst_3 (CategoryTheory.Functor.leftOp.{u1, u2, u3, u4} J _inst_1 C _inst_3 F) c) (Opposite.op.{succ u3} J j)))
Case conversion may be inaccurate. Consider using '#align category_theory.limits.cocone_of_cone_left_op_ι_app CategoryTheory.Limits.coconeOfConeLeftOp_ι_appₓ'. -/
@@ -1252,7 +1253,7 @@ theorem coconeOfConeLeftOp_ι_app (c : Cone F.leftOp) (j) :
simpRhs := true })]
def coneLeftOpOfCocone (c : Cocone F) : Cone F.leftOp
where
- x := unop c.x
+ pt := unop c.pt
π := NatTrans.leftOp c.ι
#align category_theory.limits.cone_left_op_of_cocone CategoryTheory.Limits.coneLeftOpOfCocone
-/
@@ -1268,7 +1269,7 @@ variable {F : Jᵒᵖ ⥤ C}
@[simps]
def coneOfCoconeRightOp (c : Cocone F.rightOp) : Cone F
where
- x := unop c.x
+ pt := unop c.pt
π := NatTrans.removeRightOp c.ι
#align category_theory.limits.cone_of_cocone_right_op CategoryTheory.Limits.coneOfCoconeRightOp
-/
@@ -1278,7 +1279,7 @@ def coneOfCoconeRightOp (c : Cocone F.rightOp) : Cone F
@[simps]
def coconeRightOpOfCone (c : Cone F) : Cocone F.rightOp
where
- x := op c.x
+ pt := op c.pt
ι := NatTrans.rightOp c.π
#align category_theory.limits.cocone_right_op_of_cone CategoryTheory.Limits.coconeRightOpOfCone
-/
@@ -1288,7 +1289,7 @@ def coconeRightOpOfCone (c : Cone F) : Cocone F.rightOp
@[simps]
def coconeOfConeRightOp (c : Cone F.rightOp) : Cocone F
where
- x := unop c.x
+ pt := unop c.pt
ι := NatTrans.removeRightOp c.π
#align category_theory.limits.cocone_of_cone_right_op CategoryTheory.Limits.coconeOfConeRightOp
-/
@@ -1298,7 +1299,7 @@ def coconeOfConeRightOp (c : Cone F.rightOp) : Cocone F
@[simps]
def coneRightOpOfCocone (c : Cocone F) : Cone F.rightOp
where
- x := op c.x
+ pt := op c.pt
π := NatTrans.rightOp c.ι
#align category_theory.limits.cone_right_op_of_cocone CategoryTheory.Limits.coneRightOpOfCocone
-/
@@ -1314,7 +1315,7 @@ variable {F : Jᵒᵖ ⥤ Cᵒᵖ}
@[simps]
def coneOfCoconeUnop (c : Cocone F.unop) : Cone F
where
- x := op c.x
+ pt := op c.pt
π := NatTrans.removeUnop c.ι
#align category_theory.limits.cone_of_cocone_unop CategoryTheory.Limits.coneOfCoconeUnop
-/
@@ -1324,7 +1325,7 @@ def coneOfCoconeUnop (c : Cocone F.unop) : Cone F
@[simps]
def coconeUnopOfCone (c : Cone F) : Cocone F.unop
where
- x := unop c.x
+ pt := unop c.pt
ι := NatTrans.unop c.π
#align category_theory.limits.cocone_unop_of_cone CategoryTheory.Limits.coconeUnopOfCone
-/
@@ -1334,7 +1335,7 @@ def coconeUnopOfCone (c : Cone F) : Cocone F.unop
@[simps]
def coconeOfConeUnop (c : Cone F.unop) : Cocone F
where
- x := op c.x
+ pt := op c.pt
ι := NatTrans.removeUnop c.π
#align category_theory.limits.cocone_of_cone_unop CategoryTheory.Limits.coconeOfConeUnop
-/
@@ -1344,7 +1345,7 @@ def coconeOfConeUnop (c : Cone F.unop) : Cocone F
@[simps]
def coneUnopOfCocone (c : Cocone F) : Cone F.unop
where
- x := unop c.x
+ pt := unop c.pt
π := NatTrans.unop c.ι
#align category_theory.limits.cone_unop_of_cocone CategoryTheory.Limits.coneUnopOfCocone
-/
mathlib commit https://github.com/leanprover-community/mathlib/commit/22131150f88a2d125713ffa0f4693e3355b1eb49
@@ -66,6 +66,7 @@ namespace Functor
variable {J C} (F : J ⥤ C)
+#print CategoryTheory.Functor.cones /-
/-- `F.cones` is the functor assigning to an object `X` the type of
natural transformations from the constant functor with value `X` to `F`.
An object representing this functor is a limit of `F`.
@@ -74,7 +75,9 @@ An object representing this functor is a limit of `F`.
def cones : Cᵒᵖ ⥤ Type max u₁ v₃ :=
(const J).op ⋙ yoneda.obj F
#align category_theory.functor.cones CategoryTheory.Functor.cones
+-/
+#print CategoryTheory.Functor.cocones /-
/-- `F.cocones` is the functor assigning to an object `X` the type of
natural transformations from `F` to the constant functor with value `X`.
An object corepresenting this functor is a colimit of `F`.
@@ -83,6 +86,7 @@ An object corepresenting this functor is a colimit of `F`.
def cocones : C ⥤ Type max u₁ v₃ :=
const J ⋙ coyoneda.obj (op F)
#align category_theory.functor.cocones CategoryTheory.Functor.cocones
+-/
end Functor
@@ -90,6 +94,7 @@ section
variable (J C)
+#print CategoryTheory.cones /-
/-- Functorially associated to each functor `J ⥤ C`, we have the `C`-presheaf consisting of
cones with a given cone point.
-/
@@ -99,7 +104,9 @@ def cones : (J ⥤ C) ⥤ Cᵒᵖ ⥤ Type max u₁ v₃
obj := Functor.cones
map F G f := whiskerLeft (const J).op (yoneda.map f)
#align category_theory.cones CategoryTheory.cones
+-/
+#print CategoryTheory.cocones /-
/-- Contravariantly associated to each functor `J ⥤ C`, we have the `C`-copresheaf consisting of
cocones with a given cocone point.
-/
@@ -109,6 +116,7 @@ def cocones : (J ⥤ C)ᵒᵖ ⥤ C ⥤ Type max u₁ v₃
obj F := Functor.cocones (unop F)
map F G f := whiskerLeft (const J) (coyoneda.map f)
#align category_theory.cocones CategoryTheory.cocones
+-/
end
@@ -118,6 +126,7 @@ section
attribute [local tidy] tactic.discrete_cases
+#print CategoryTheory.Limits.Cone /-
/-- A `c : cone F` is:
* an object `c.X` and
* a natural transformation `c.π : c.X ⟶ F` from the constant `c.X` functor to `F`.
@@ -128,12 +137,21 @@ structure Cone (F : J ⥤ C) where
x : C
π : (const J).obj X ⟶ F
#align category_theory.limits.cone CategoryTheory.Limits.Cone
+-/
+#print CategoryTheory.Limits.inhabitedCone /-
instance inhabitedCone (F : Discrete PUnit ⥤ C) : Inhabited (Cone F) :=
⟨{ x := F.obj ⟨⟨⟩⟩
π := { app := fun ⟨⟨⟩⟩ => 𝟙 _ } }⟩
#align category_theory.limits.inhabited_cone CategoryTheory.Limits.inhabitedCone
+-/
+/- warning: category_theory.limits.cone.w -> CategoryTheory.Limits.Cone.w is a dubious translation:
+lean 3 declaration is
+ forall {J : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} J] {C : Type.{u4}} [_inst_3 : CategoryTheory.Category.{u2, u4} C] {F : CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3} (c : CategoryTheory.Limits.Cone.{u1, u2, u3, u4} J _inst_1 C _inst_3 F) {j : J} {j' : J} (f : Quiver.Hom.{succ u1, u3} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} J (CategoryTheory.Category.toCategoryStruct.{u1, u3} J _inst_1)) j j'), Eq.{succ u2} (Quiver.Hom.{succ u2, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} J _inst_1 C _inst_3 (CategoryTheory.Functor.obj.{u2, max u3 u2, u4, max u1 u2 u3 u4} C _inst_3 (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.const.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Limits.Cone.x.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c)) j) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} J _inst_1 C _inst_3 F j')) (CategoryTheory.CategoryStruct.comp.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} J _inst_1 C _inst_3 (CategoryTheory.Functor.obj.{u2, max u3 u2, u4, max u1 u2 u3 u4} C _inst_3 (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.const.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Limits.Cone.x.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c)) j) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} J _inst_1 C _inst_3 F j) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} J _inst_1 C _inst_3 F j') (CategoryTheory.NatTrans.app.{u1, u2, u3, u4} J _inst_1 C _inst_3 (CategoryTheory.Functor.obj.{u2, max u3 u2, u4, max u1 u2 u3 u4} C _inst_3 (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.const.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Limits.Cone.x.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c)) F (CategoryTheory.Limits.Cone.π.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c) j) (CategoryTheory.Functor.map.{u1, u2, u3, u4} J _inst_1 C _inst_3 F j j' f)) (CategoryTheory.NatTrans.app.{u1, u2, u3, u4} J _inst_1 C _inst_3 (CategoryTheory.Functor.obj.{u2, max u3 u2, u4, max u1 u2 u3 u4} C _inst_3 (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.const.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Limits.Cone.x.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c)) F (CategoryTheory.Limits.Cone.π.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c) j')
+but is expected to have type
+ forall {J : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} J] {C : Type.{u4}} [_inst_3 : CategoryTheory.Category.{u2, u4} C] {F : CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3} (c : CategoryTheory.Limits.Cone.{u1, u2, u3, u4} J _inst_1 C _inst_3 F) {j : J} {j' : J} (f : Quiver.Hom.{succ u1, u3} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} J (CategoryTheory.Category.toCategoryStruct.{u1, u3} J _inst_1)) j j'), Eq.{succ u2} (Quiver.Hom.{succ u2, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) (Prefunctor.obj.{succ u1, succ u2, u3, u4} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} J (CategoryTheory.Category.toCategoryStruct.{u1, u3} J _inst_1)) C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} J _inst_1 C _inst_3 (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u4, max (max (max u3 u1) u2) u4} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max (max (max u3 u1) u4) u2} (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max (max (max u3 u1) u4) u2} (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 C _inst_3))) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u4, max (max (max u3 u1) u4) u2} C _inst_3 (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.const.{u1, u2, u3, u4} J _inst_1 C _inst_3)) (CategoryTheory.Limits.Cone.pt.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c))) j) (Prefunctor.obj.{succ u1, succ u2, u3, u4} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} J (CategoryTheory.Category.toCategoryStruct.{u1, u3} J _inst_1)) C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} J _inst_1 C _inst_3 F) j')) (CategoryTheory.CategoryStruct.comp.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3) (Prefunctor.obj.{succ u1, succ u2, u3, u4} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} J (CategoryTheory.Category.toCategoryStruct.{u1, u3} J _inst_1)) C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} J _inst_1 C _inst_3 (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u4, max (max (max u3 u1) u2) u4} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max (max (max u3 u1) u4) u2} (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max (max (max u3 u1) u4) u2} (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 C _inst_3))) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u4, max (max (max u3 u1) u4) u2} C _inst_3 (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.const.{u1, u2, u3, u4} J _inst_1 C _inst_3)) (CategoryTheory.Limits.Cone.pt.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c))) j) (Prefunctor.obj.{succ u1, succ u2, u3, u4} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} J (CategoryTheory.Category.toCategoryStruct.{u1, u3} J _inst_1)) C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} J _inst_1 C _inst_3 F) j) (Prefunctor.obj.{succ u1, succ u2, u3, u4} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} J (CategoryTheory.Category.toCategoryStruct.{u1, u3} J _inst_1)) C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} J _inst_1 C _inst_3 F) j') (CategoryTheory.NatTrans.app.{u1, u2, u3, u4} J _inst_1 C _inst_3 (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u4, max (max (max u3 u1) u2) u4} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max (max (max u3 u1) u4) u2} (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max (max (max u3 u1) u4) u2} (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 C _inst_3))) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u4, max (max (max u3 u1) u4) u2} C _inst_3 (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.const.{u1, u2, u3, u4} J _inst_1 C _inst_3)) (CategoryTheory.Limits.Cone.pt.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c)) F (CategoryTheory.Limits.Cone.π.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c) j) (Prefunctor.map.{succ u1, succ u2, u3, u4} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} J (CategoryTheory.Category.toCategoryStruct.{u1, u3} J _inst_1)) C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} J _inst_1 C _inst_3 F) j j' f)) (CategoryTheory.NatTrans.app.{u1, u2, u3, u4} J _inst_1 C _inst_3 (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u4, max (max (max u3 u1) u2) u4} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max (max (max u3 u1) u4) u2} (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max (max (max u3 u1) u4) u2} (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 C _inst_3))) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u4, max (max (max u3 u1) u4) u2} C _inst_3 (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.const.{u1, u2, u3, u4} J _inst_1 C _inst_3)) (CategoryTheory.Limits.Cone.pt.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c)) F (CategoryTheory.Limits.Cone.π.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c) j')
+Case conversion may be inaccurate. Consider using '#align category_theory.limits.cone.w CategoryTheory.Limits.Cone.wₓ'. -/
@[simp, reassoc.1]
theorem Cone.w {F : J ⥤ C} (c : Cone F) {j j' : J} (f : j ⟶ j') :
c.π.app j ≫ F.map f = c.π.app j' :=
@@ -142,6 +160,7 @@ theorem Cone.w {F : J ⥤ C} (c : Cone F) {j j' : J} (f : j ⟶ j') :
apply id_comp
#align category_theory.limits.cone.w CategoryTheory.Limits.Cone.w
+#print CategoryTheory.Limits.Cocone /-
/-- A `c : cocone F` is
* an object `c.X` and
* a natural transformation `c.ι : F ⟶ c.X` from `F` to the constant `c.X` functor.
@@ -152,12 +171,21 @@ structure Cocone (F : J ⥤ C) where
x : C
ι : F ⟶ (const J).obj X
#align category_theory.limits.cocone CategoryTheory.Limits.Cocone
+-/
+#print CategoryTheory.Limits.inhabitedCocone /-
instance inhabitedCocone (F : Discrete PUnit ⥤ C) : Inhabited (Cocone F) :=
⟨{ x := F.obj ⟨⟨⟩⟩
ι := { app := fun ⟨⟨⟩⟩ => 𝟙 _ } }⟩
#align category_theory.limits.inhabited_cocone CategoryTheory.Limits.inhabitedCocone
+-/
+/- warning: category_theory.limits.cocone.w -> CategoryTheory.Limits.Cocone.w is a dubious translation:
+lean 3 declaration is
+ forall {J : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} J] {C : Type.{u4}} [_inst_3 : CategoryTheory.Category.{u2, u4} C] {F : CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3} (c : CategoryTheory.Limits.Cocone.{u1, u2, u3, u4} J _inst_1 C _inst_3 F) {j : J} {j' : J} (f : Quiver.Hom.{succ u1, u3} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} J (CategoryTheory.Category.toCategoryStruct.{u1, u3} J _inst_1)) j j'), Eq.{succ u2} (Quiver.Hom.{succ u2, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} J _inst_1 C _inst_3 F j) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} J _inst_1 C _inst_3 (CategoryTheory.Functor.obj.{u2, max u3 u2, u4, max u1 u2 u3 u4} C _inst_3 (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.const.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Limits.Cocone.x.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c)) j')) (CategoryTheory.CategoryStruct.comp.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} J _inst_1 C _inst_3 F j) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} J _inst_1 C _inst_3 F j') (CategoryTheory.Functor.obj.{u1, u2, u3, u4} J _inst_1 C _inst_3 (CategoryTheory.Functor.obj.{u2, max u3 u2, u4, max u1 u2 u3 u4} C _inst_3 (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.const.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Limits.Cocone.x.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c)) j') (CategoryTheory.Functor.map.{u1, u2, u3, u4} J _inst_1 C _inst_3 F j j' f) (CategoryTheory.NatTrans.app.{u1, u2, u3, u4} J _inst_1 C _inst_3 F (CategoryTheory.Functor.obj.{u2, max u3 u2, u4, max u1 u2 u3 u4} C _inst_3 (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.const.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Limits.Cocone.x.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c)) (CategoryTheory.Limits.Cocone.ι.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c) j')) (CategoryTheory.NatTrans.app.{u1, u2, u3, u4} J _inst_1 C _inst_3 F (CategoryTheory.Functor.obj.{u2, max u3 u2, u4, max u1 u2 u3 u4} C _inst_3 (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.const.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Limits.Cocone.x.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c)) (CategoryTheory.Limits.Cocone.ι.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c) j)
+but is expected to have type
+ forall {J : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} J] {C : Type.{u4}} [_inst_3 : CategoryTheory.Category.{u2, u4} C] {F : CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3} (c : CategoryTheory.Limits.Cocone.{u1, u2, u3, u4} J _inst_1 C _inst_3 F) {j : J} {j' : J} (f : Quiver.Hom.{succ u1, u3} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} J (CategoryTheory.Category.toCategoryStruct.{u1, u3} J _inst_1)) j j'), Eq.{succ u2} (Quiver.Hom.{succ u2, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) (Prefunctor.obj.{succ u1, succ u2, u3, u4} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} J (CategoryTheory.Category.toCategoryStruct.{u1, u3} J _inst_1)) C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} J _inst_1 C _inst_3 F) j) (Prefunctor.obj.{succ u1, succ u2, u3, u4} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} J (CategoryTheory.Category.toCategoryStruct.{u1, u3} J _inst_1)) C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} J _inst_1 C _inst_3 (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u4, max (max (max u3 u1) u2) u4} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max (max (max u3 u1) u4) u2} (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max (max (max u3 u1) u4) u2} (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 C _inst_3))) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u4, max (max (max u3 u1) u4) u2} C _inst_3 (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.const.{u1, u2, u3, u4} J _inst_1 C _inst_3)) (CategoryTheory.Limits.Cocone.pt.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c))) j')) (CategoryTheory.CategoryStruct.comp.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3) (Prefunctor.obj.{succ u1, succ u2, u3, u4} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} J (CategoryTheory.Category.toCategoryStruct.{u1, u3} J _inst_1)) C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} J _inst_1 C _inst_3 F) j) (Prefunctor.obj.{succ u1, succ u2, u3, u4} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} J (CategoryTheory.Category.toCategoryStruct.{u1, u3} J _inst_1)) C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} J _inst_1 C _inst_3 F) j') (Prefunctor.obj.{succ u1, succ u2, u3, u4} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} J (CategoryTheory.Category.toCategoryStruct.{u1, u3} J _inst_1)) C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} J _inst_1 C _inst_3 (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u4, max (max (max u3 u1) u2) u4} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max (max (max u3 u1) u4) u2} (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max (max (max u3 u1) u4) u2} (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 C _inst_3))) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u4, max (max (max u3 u1) u4) u2} C _inst_3 (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.const.{u1, u2, u3, u4} J _inst_1 C _inst_3)) (CategoryTheory.Limits.Cocone.pt.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c))) j') (Prefunctor.map.{succ u1, succ u2, u3, u4} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} J (CategoryTheory.Category.toCategoryStruct.{u1, u3} J _inst_1)) C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} J _inst_1 C _inst_3 F) j j' f) (CategoryTheory.NatTrans.app.{u1, u2, u3, u4} J _inst_1 C _inst_3 F (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u4, max (max (max u3 u1) u2) u4} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max (max (max u3 u1) u4) u2} (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max (max (max u3 u1) u4) u2} (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 C _inst_3))) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u4, max (max (max u3 u1) u4) u2} C _inst_3 (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.const.{u1, u2, u3, u4} J _inst_1 C _inst_3)) (CategoryTheory.Limits.Cocone.pt.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c)) (CategoryTheory.Limits.Cocone.ι.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c) j')) (CategoryTheory.NatTrans.app.{u1, u2, u3, u4} J _inst_1 C _inst_3 F (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u4, max (max (max u3 u1) u2) u4} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max (max (max u3 u1) u4) u2} (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max (max (max u3 u1) u4) u2} (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 C _inst_3))) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u4, max (max (max u3 u1) u4) u2} C _inst_3 (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.const.{u1, u2, u3, u4} J _inst_1 C _inst_3)) (CategoryTheory.Limits.Cocone.pt.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c)) (CategoryTheory.Limits.Cocone.ι.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c) j)
+Case conversion may be inaccurate. Consider using '#align category_theory.limits.cocone.w CategoryTheory.Limits.Cocone.wₓ'. -/
@[simp, reassoc.1]
theorem Cocone.w {F : J ⥤ C} (c : Cocone F) {j j' : J} (f : j ⟶ j') :
F.map f ≫ c.ι.app j' = c.ι.app j :=
@@ -172,6 +200,12 @@ variable {F : J ⥤ C}
namespace Cone
+/- warning: category_theory.limits.cone.equiv -> CategoryTheory.Limits.Cone.equiv is a dubious translation:
+lean 3 declaration is
+ forall {J : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} J] {C : Type.{u4}} [_inst_3 : CategoryTheory.Category.{u2, u4} C] (F : CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3), CategoryTheory.Iso.{max u3 u4 u2, max (succ u3) (succ u4) (succ u2)} Sort.{max (succ u3) (succ u4) (succ u2)} CategoryTheory.types.{max u3 u4 u2} (CategoryTheory.Limits.Cone.{u1, u2, u3, u4} J _inst_1 C _inst_3 F) (Sigma.{u4, max u3 u2} (Opposite.{succ u4} C) (fun (X : Opposite.{succ u4} C) => CategoryTheory.Functor.obj.{u2, max u3 u2, u4, succ (max u3 u2)} (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3) Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.Functor.cones.{u1, u2, u3, u4} J _inst_1 C _inst_3 F) X))
+but is expected to have type
+ forall {J : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} J] {C : Type.{u4}} [_inst_3 : CategoryTheory.Category.{u2, u4} C] (F : CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3), CategoryTheory.Iso.{max (max u3 u4) u2, max (max (succ u4) (succ u3)) (succ u2)} Sort.{max (max (succ u3) (succ u4)) (succ u2)} CategoryTheory.types.{max (max u3 u4) u2} (CategoryTheory.Limits.Cone.{u1, u2, u3, u4} J _inst_1 C _inst_3 F) (Sigma.{u4, max u3 u2} (Opposite.{succ u4} C) (fun (X : Opposite.{succ u4} C) => Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u4, max (succ u3) (succ u2)} (Opposite.{succ u4} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} (Opposite.{succ u4} C) (CategoryTheory.Category.toCategoryStruct.{u2, u4} (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3))) Type.{max u3 u2} (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max (succ u3) (succ u2)} Type.{max u3 u2} (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max (succ u3) (succ u2)} Type.{max u3 u2} CategoryTheory.types.{max u3 u2})) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u4, max (succ u3) (succ u2)} (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3) Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.Functor.cones.{u1, u2, u3, u4} J _inst_1 C _inst_3 F)) X))
+Case conversion may be inaccurate. Consider using '#align category_theory.limits.cone.equiv CategoryTheory.Limits.Cone.equivₓ'. -/
/-- The isomorphism between a cone on `F` and an element of the functor `F.cones`. -/
@[simps]
def equiv (F : J ⥤ C) : Cone F ≅ ΣX, F.cones.obj X
@@ -190,19 +224,28 @@ def equiv (F : J ⥤ C) : Cone F ≅ ΣX, F.cones.obj X
rfl
#align category_theory.limits.cone.equiv CategoryTheory.Limits.Cone.equiv
+/- warning: category_theory.limits.cone.extensions -> CategoryTheory.Limits.Cone.extensions is a dubious translation:
+lean 3 declaration is
+ forall {J : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} J] {C : Type.{u4}} [_inst_3 : CategoryTheory.Category.{u2, u4} C] {F : CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3} (c : CategoryTheory.Limits.Cone.{u1, u2, u3, u4} J _inst_1 C _inst_3 F), Quiver.Hom.{succ (max u4 u2 u3), max u2 (max u2 u3) u4 (succ (max u2 u3))} (CategoryTheory.Functor.{u2, max u2 u3, u4, succ (max u2 u3)} (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3) Type.{max u2 u3} CategoryTheory.types.{max u2 u3}) (CategoryTheory.CategoryStruct.toQuiver.{max u4 u2 u3, max u2 (max u2 u3) u4 (succ (max u2 u3))} (CategoryTheory.Functor.{u2, max u2 u3, u4, succ (max u2 u3)} (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3) Type.{max u2 u3} CategoryTheory.types.{max u2 u3}) (CategoryTheory.Category.toCategoryStruct.{max u4 u2 u3, max u2 (max u2 u3) u4 (succ (max u2 u3))} (CategoryTheory.Functor.{u2, max u2 u3, u4, succ (max u2 u3)} (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3) Type.{max u2 u3} CategoryTheory.types.{max u2 u3}) (CategoryTheory.Functor.category.{u2, max u2 u3, u4, succ (max u2 u3)} (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3) Type.{max u2 u3} CategoryTheory.types.{max u2 u3}))) (CategoryTheory.Functor.comp.{u2, u2, max u2 u3, u4, succ u2, succ (max u2 u3)} (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3) Type.{u2} CategoryTheory.types.{u2} Type.{max u2 u3} CategoryTheory.types.{max u2 u3} (CategoryTheory.Functor.obj.{u2, max u4 u2, u4, max u2 u4 (succ u2)} C _inst_3 (CategoryTheory.Functor.{u2, u2, u4, succ u2} (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3) Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.Functor.category.{u2, u2, u4, succ u2} (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3) Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.yoneda.{u2, u4} C _inst_3) (CategoryTheory.Limits.Cone.x.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c)) CategoryTheory.uliftFunctor.{u3, u2}) (CategoryTheory.Functor.cones.{u1, u2, u3, u4} J _inst_1 C _inst_3 F)
+but is expected to have type
+ forall {J : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} J] {C : Type.{u4}} [_inst_3 : CategoryTheory.Category.{u2, u4} C] {F : CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3} (c : CategoryTheory.Limits.Cone.{u1, u2, u3, u4} J _inst_1 C _inst_3 F), Quiver.Hom.{max (max (succ u3) (succ u4)) (succ u2), max (max (max (max (succ u3) (succ u2)) u4) u3 u2) u2} (CategoryTheory.Functor.{u2, max u3 u2, u4, max (succ u3) (succ u2)} (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3) Type.{max u2 u3} CategoryTheory.types.{max u2 u3}) (CategoryTheory.CategoryStruct.toQuiver.{max (max u3 u4) u2, max (max (succ u3) u4) (succ u2)} (CategoryTheory.Functor.{u2, max u3 u2, u4, max (succ u3) (succ u2)} (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3) Type.{max u2 u3} CategoryTheory.types.{max u2 u3}) (CategoryTheory.Category.toCategoryStruct.{max (max u3 u4) u2, max (max (succ u3) u4) (succ u2)} (CategoryTheory.Functor.{u2, max u3 u2, u4, max (succ u3) (succ u2)} (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3) Type.{max u2 u3} CategoryTheory.types.{max u2 u3}) (CategoryTheory.Functor.category.{u2, max u3 u2, u4, max (succ u3) (succ u2)} (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3) Type.{max u2 u3} CategoryTheory.types.{max u2 u3}))) (CategoryTheory.Functor.comp.{u2, u2, max u3 u2, u4, succ u2, max (succ u3) (succ u2)} (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3) Type.{u2} CategoryTheory.types.{u2} Type.{max u2 u3} CategoryTheory.types.{max u2 u3} (Prefunctor.obj.{succ u2, max (succ u2) (succ u4), u4, max (succ u2) u4} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) (CategoryTheory.Functor.{u2, u2, u4, succ u2} (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3) Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.CategoryStruct.toQuiver.{max u4 u2, max u4 (succ u2)} (CategoryTheory.Functor.{u2, u2, u4, succ u2} (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3) Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.Category.toCategoryStruct.{max u4 u2, max u4 (succ u2)} (CategoryTheory.Functor.{u2, u2, u4, succ u2} (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3) Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.Functor.category.{u2, u2, u4, succ u2} (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3) Type.{u2} CategoryTheory.types.{u2}))) (CategoryTheory.Functor.toPrefunctor.{u2, max u4 u2, u4, max u4 (succ u2)} C _inst_3 (CategoryTheory.Functor.{u2, u2, u4, succ u2} (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3) Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.Functor.category.{u2, u2, u4, succ u2} (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3) Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.yoneda.{u2, u4} C _inst_3)) (CategoryTheory.Limits.Cone.pt.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c)) CategoryTheory.uliftFunctor.{u3, u2}) (CategoryTheory.Functor.cones.{u1, u2, u3, u4} J _inst_1 C _inst_3 F)
+Case conversion may be inaccurate. Consider using '#align category_theory.limits.cone.extensions CategoryTheory.Limits.Cone.extensionsₓ'. -/
/-- A map to the vertex of a cone naturally induces a cone by composition. -/
@[simps]
def extensions (c : Cone F) : yoneda.obj c.x ⋙ uliftFunctor.{u₁} ⟶ F.cones
where app X f := (const J).map f.down ≫ c.π
#align category_theory.limits.cone.extensions CategoryTheory.Limits.Cone.extensions
+#print CategoryTheory.Limits.Cone.extend /-
/-- A map to the vertex of a cone induces a cone by composition. -/
@[simps]
def extend (c : Cone F) {X : C} (f : X ⟶ c.x) : Cone F :=
{ x
π := c.extensions.app (op X) ⟨f⟩ }
#align category_theory.limits.cone.extend CategoryTheory.Limits.Cone.extend
+-/
+#print CategoryTheory.Limits.Cone.whisker /-
/-- Whisker a cone by precomposition of a functor. -/
@[simps]
def whisker (E : K ⥤ J) (c : Cone F) : Cone (E ⋙ F)
@@ -210,11 +253,18 @@ def whisker (E : K ⥤ J) (c : Cone F) : Cone (E ⋙ F)
x := c.x
π := whiskerLeft E c.π
#align category_theory.limits.cone.whisker CategoryTheory.Limits.Cone.whisker
+-/
end Cone
namespace Cocone
+/- warning: category_theory.limits.cocone.equiv -> CategoryTheory.Limits.Cocone.equiv is a dubious translation:
+lean 3 declaration is
+ forall {J : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} J] {C : Type.{u4}} [_inst_3 : CategoryTheory.Category.{u2, u4} C] (F : CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3), CategoryTheory.Iso.{max u3 u4 u2, max (succ u3) (succ u4) (succ u2)} Sort.{max (succ u3) (succ u4) (succ u2)} CategoryTheory.types.{max u3 u4 u2} (CategoryTheory.Limits.Cocone.{u1, u2, u3, u4} J _inst_1 C _inst_3 F) (Sigma.{u4, max u3 u2} C (fun (X : C) => CategoryTheory.Functor.obj.{u2, max u3 u2, u4, succ (max u3 u2)} C _inst_3 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.Functor.cocones.{u1, u2, u3, u4} J _inst_1 C _inst_3 F) X))
+but is expected to have type
+ forall {J : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} J] {C : Type.{u4}} [_inst_3 : CategoryTheory.Category.{u2, u4} C] (F : CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3), CategoryTheory.Iso.{max (max u3 u4) u2, max (max (succ u4) (succ u3)) (succ u2)} Sort.{max (max (succ u3) (succ u4)) (succ u2)} CategoryTheory.types.{max (max u3 u4) u2} (CategoryTheory.Limits.Cocone.{u1, u2, u3, u4} J _inst_1 C _inst_3 F) (Sigma.{u4, max u3 u2} C (fun (X : C) => Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u4, max (succ u3) (succ u2)} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) Type.{max u3 u2} (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max (succ u3) (succ u2)} Type.{max u3 u2} (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max (succ u3) (succ u2)} Type.{max u3 u2} CategoryTheory.types.{max u3 u2})) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u4, max (succ u3) (succ u2)} C _inst_3 Type.{max u3 u2} CategoryTheory.types.{max u3 u2} (CategoryTheory.Functor.cocones.{u1, u2, u3, u4} J _inst_1 C _inst_3 F)) X))
+Case conversion may be inaccurate. Consider using '#align category_theory.limits.cocone.equiv CategoryTheory.Limits.Cocone.equivₓ'. -/
/-- The isomorphism between a cocone on `F` and an element of the functor `F.cocones`. -/
def equiv (F : J ⥤ C) : Cocone F ≅ ΣX, F.cocones.obj X
where
@@ -232,19 +282,28 @@ def equiv (F : J ⥤ C) : Cocone F ≅ ΣX, F.cocones.obj X
rfl
#align category_theory.limits.cocone.equiv CategoryTheory.Limits.Cocone.equiv
+/- warning: category_theory.limits.cocone.extensions -> CategoryTheory.Limits.Cocone.extensions is a dubious translation:
+lean 3 declaration is
+ forall {J : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} J] {C : Type.{u4}} [_inst_3 : CategoryTheory.Category.{u2, u4} C] {F : CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3} (c : CategoryTheory.Limits.Cocone.{u1, u2, u3, u4} J _inst_1 C _inst_3 F), Quiver.Hom.{succ (max u4 u2 u3), max u2 (max u2 u3) u4 (succ (max u2 u3))} (CategoryTheory.Functor.{u2, max u2 u3, u4, succ (max u2 u3)} C _inst_3 Type.{max u2 u3} CategoryTheory.types.{max u2 u3}) (CategoryTheory.CategoryStruct.toQuiver.{max u4 u2 u3, max u2 (max u2 u3) u4 (succ (max u2 u3))} (CategoryTheory.Functor.{u2, max u2 u3, u4, succ (max u2 u3)} C _inst_3 Type.{max u2 u3} CategoryTheory.types.{max u2 u3}) (CategoryTheory.Category.toCategoryStruct.{max u4 u2 u3, max u2 (max u2 u3) u4 (succ (max u2 u3))} (CategoryTheory.Functor.{u2, max u2 u3, u4, succ (max u2 u3)} C _inst_3 Type.{max u2 u3} CategoryTheory.types.{max u2 u3}) (CategoryTheory.Functor.category.{u2, max u2 u3, u4, succ (max u2 u3)} C _inst_3 Type.{max u2 u3} CategoryTheory.types.{max u2 u3}))) (CategoryTheory.Functor.comp.{u2, u2, max u2 u3, u4, succ u2, succ (max u2 u3)} C _inst_3 Type.{u2} CategoryTheory.types.{u2} Type.{max u2 u3} CategoryTheory.types.{max u2 u3} (CategoryTheory.Functor.obj.{u2, max u4 u2, u4, max u2 u4 (succ u2)} (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3) (CategoryTheory.Functor.{u2, u2, u4, succ u2} C _inst_3 Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.Functor.category.{u2, u2, u4, succ u2} C _inst_3 Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.coyoneda.{u2, u4} C _inst_3) (Opposite.op.{succ u4} C (CategoryTheory.Limits.Cocone.x.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c))) CategoryTheory.uliftFunctor.{u3, u2}) (CategoryTheory.Functor.cocones.{u1, u2, u3, u4} J _inst_1 C _inst_3 F)
+but is expected to have type
+ forall {J : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} J] {C : Type.{u4}} [_inst_3 : CategoryTheory.Category.{u2, u4} C] {F : CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3} (c : CategoryTheory.Limits.Cocone.{u1, u2, u3, u4} J _inst_1 C _inst_3 F), Quiver.Hom.{max (max (succ u3) (succ u4)) (succ u2), max (max (max (max (succ u3) (succ u2)) u4) u3 u2) u2} (CategoryTheory.Functor.{u2, max u3 u2, u4, max (succ u3) (succ u2)} C _inst_3 Type.{max u2 u3} CategoryTheory.types.{max u2 u3}) (CategoryTheory.CategoryStruct.toQuiver.{max (max u3 u4) u2, max (max (succ u3) u4) (succ u2)} (CategoryTheory.Functor.{u2, max u3 u2, u4, max (succ u3) (succ u2)} C _inst_3 Type.{max u2 u3} CategoryTheory.types.{max u2 u3}) (CategoryTheory.Category.toCategoryStruct.{max (max u3 u4) u2, max (max (succ u3) u4) (succ u2)} (CategoryTheory.Functor.{u2, max u3 u2, u4, max (succ u3) (succ u2)} C _inst_3 Type.{max u2 u3} CategoryTheory.types.{max u2 u3}) (CategoryTheory.Functor.category.{u2, max u3 u2, u4, max (succ u3) (succ u2)} C _inst_3 Type.{max u2 u3} CategoryTheory.types.{max u2 u3}))) (CategoryTheory.Functor.comp.{u2, u2, max u3 u2, u4, succ u2, max (succ u3) (succ u2)} C _inst_3 Type.{u2} CategoryTheory.types.{u2} Type.{max u2 u3} CategoryTheory.types.{max u2 u3} (Prefunctor.obj.{succ u2, max (succ u4) (succ u2), u4, max u4 (succ u2)} (Opposite.{succ u4} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} (Opposite.{succ u4} C) (CategoryTheory.Category.toCategoryStruct.{u2, u4} (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3))) (CategoryTheory.Functor.{u2, u2, u4, succ u2} C _inst_3 Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.CategoryStruct.toQuiver.{max u4 u2, max u4 (succ u2)} (CategoryTheory.Functor.{u2, u2, u4, succ u2} C _inst_3 Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.Category.toCategoryStruct.{max u4 u2, max u4 (succ u2)} (CategoryTheory.Functor.{u2, u2, u4, succ u2} C _inst_3 Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.Functor.category.{u2, u2, u4, succ u2} C _inst_3 Type.{u2} CategoryTheory.types.{u2}))) (CategoryTheory.Functor.toPrefunctor.{u2, max u4 u2, u4, max u4 (succ u2)} (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3) (CategoryTheory.Functor.{u2, u2, u4, succ u2} C _inst_3 Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.Functor.category.{u2, u2, u4, succ u2} C _inst_3 Type.{u2} CategoryTheory.types.{u2}) (CategoryTheory.coyoneda.{u2, u4} C _inst_3)) (Opposite.op.{succ u4} C (CategoryTheory.Limits.Cocone.pt.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c))) CategoryTheory.uliftFunctor.{u3, u2}) (CategoryTheory.Functor.cocones.{u1, u2, u3, u4} J _inst_1 C _inst_3 F)
+Case conversion may be inaccurate. Consider using '#align category_theory.limits.cocone.extensions CategoryTheory.Limits.Cocone.extensionsₓ'. -/
/-- A map from the vertex of a cocone naturally induces a cocone by composition. -/
@[simps]
def extensions (c : Cocone F) : coyoneda.obj (op c.x) ⋙ uliftFunctor.{u₁} ⟶ F.cocones
where app X f := c.ι ≫ (const J).map f.down
#align category_theory.limits.cocone.extensions CategoryTheory.Limits.Cocone.extensions
+#print CategoryTheory.Limits.Cocone.extend /-
/-- A map from the vertex of a cocone induces a cocone by composition. -/
@[simps]
def extend (c : Cocone F) {X : C} (f : c.x ⟶ X) : Cocone F :=
{ x
ι := c.extensions.app X ⟨f⟩ }
#align category_theory.limits.cocone.extend CategoryTheory.Limits.Cocone.extend
+-/
+#print CategoryTheory.Limits.Cocone.whisker /-
/-- Whisker a cocone by precomposition of a functor. See `whiskering` for a functorial
version.
-/
@@ -254,9 +313,11 @@ def whisker (E : K ⥤ J) (c : Cocone F) : Cocone (E ⋙ F)
x := c.x
ι := whiskerLeft E c.ι
#align category_theory.limits.cocone.whisker CategoryTheory.Limits.Cocone.whisker
+-/
end Cocone
+#print CategoryTheory.Limits.ConeMorphism /-
/-- A cone morphism between two cones for the same diagram is a morphism of the cone points which
commutes with the cone legs. -/
@[ext]
@@ -264,15 +325,19 @@ structure ConeMorphism (A B : Cone F) where
Hom : A.x ⟶ B.x
w' : ∀ j : J, hom ≫ B.π.app j = A.π.app j := by obviously
#align category_theory.limits.cone_morphism CategoryTheory.Limits.ConeMorphism
+-/
restate_axiom cone_morphism.w'
attribute [simp, reassoc.1] cone_morphism.w
+#print CategoryTheory.Limits.inhabitedConeMorphism /-
instance inhabitedConeMorphism (A : Cone F) : Inhabited (ConeMorphism A A) :=
⟨{ Hom := 𝟙 _ }⟩
#align category_theory.limits.inhabited_cone_morphism CategoryTheory.Limits.inhabitedConeMorphism
+-/
+#print CategoryTheory.Limits.Cone.category /-
/-- The category of cones on a given diagram. -/
@[simps]
instance Cone.category : Category (Cone F)
@@ -281,9 +346,16 @@ instance Cone.category : Category (Cone F)
comp X Y Z f g := { Hom := f.Hom ≫ g.Hom }
id B := { Hom := 𝟙 B.x }
#align category_theory.limits.cone.category CategoryTheory.Limits.Cone.category
+-/
namespace Cones
+/- warning: category_theory.limits.cones.ext -> CategoryTheory.Limits.Cones.ext is a dubious translation:
+lean 3 declaration is
+ forall {J : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} J] {C : Type.{u4}} [_inst_3 : CategoryTheory.Category.{u2, u4} C] {F : CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3} {c : CategoryTheory.Limits.Cone.{u1, u2, u3, u4} J _inst_1 C _inst_3 F} {c' : CategoryTheory.Limits.Cone.{u1, u2, u3, u4} J _inst_1 C _inst_3 F} (φ : CategoryTheory.Iso.{u2, u4} C _inst_3 (CategoryTheory.Limits.Cone.x.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c) (CategoryTheory.Limits.Cone.x.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c')), (forall (j : J), Eq.{succ u2} (Quiver.Hom.{succ u2, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} J _inst_1 C _inst_3 (CategoryTheory.Functor.obj.{u2, max u3 u2, u4, max u1 u2 u3 u4} C _inst_3 (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.const.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Limits.Cone.x.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c)) j) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} J _inst_1 C _inst_3 F j)) (CategoryTheory.NatTrans.app.{u1, u2, u3, u4} J _inst_1 C _inst_3 (CategoryTheory.Functor.obj.{u2, max u3 u2, u4, max u1 u2 u3 u4} C _inst_3 (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.const.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Limits.Cone.x.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c)) F (CategoryTheory.Limits.Cone.π.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c) j) (CategoryTheory.CategoryStruct.comp.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} J _inst_1 C _inst_3 (CategoryTheory.Functor.obj.{u2, max u3 u2, u4, max u1 u2 u3 u4} C _inst_3 (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.const.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Limits.Cone.x.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c)) j) (CategoryTheory.Limits.Cone.x.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c') (CategoryTheory.Functor.obj.{u1, u2, u3, u4} J _inst_1 C _inst_3 F j) (CategoryTheory.Iso.hom.{u2, u4} C _inst_3 (CategoryTheory.Limits.Cone.x.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c) (CategoryTheory.Limits.Cone.x.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c') φ) (CategoryTheory.NatTrans.app.{u1, u2, u3, u4} J _inst_1 C _inst_3 (CategoryTheory.Functor.obj.{u2, max u3 u2, u4, max u1 u2 u3 u4} C _inst_3 (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.const.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Limits.Cone.x.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c')) F (CategoryTheory.Limits.Cone.π.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c') j))) -> (CategoryTheory.Iso.{u2, max u3 u4 u2} (CategoryTheory.Limits.Cone.{u1, u2, u3, u4} J _inst_1 C _inst_3 F) (CategoryTheory.Limits.Cone.category.{u1, u2, u3, u4} J _inst_1 C _inst_3 F) c c')
+but is expected to have type
+ forall {J : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} J] {C : Type.{u4}} [_inst_3 : CategoryTheory.Category.{u2, u4} C] {F : CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3} {c : CategoryTheory.Limits.Cone.{u1, u2, u3, u4} J _inst_1 C _inst_3 F} {c' : CategoryTheory.Limits.Cone.{u1, u2, u3, u4} J _inst_1 C _inst_3 F} (φ : CategoryTheory.Iso.{u2, u4} C _inst_3 (CategoryTheory.Limits.Cone.pt.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c) (CategoryTheory.Limits.Cone.pt.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c')), (forall (j : J), Eq.{succ u2} (Quiver.Hom.{succ u2, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) (Prefunctor.obj.{succ u1, succ u2, u3, u4} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} J (CategoryTheory.Category.toCategoryStruct.{u1, u3} J _inst_1)) C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} J _inst_1 C _inst_3 (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u4, max (max (max u3 u1) u2) u4} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max (max (max u3 u1) u4) u2} (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max (max (max u3 u1) u4) u2} (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 C _inst_3))) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u4, max (max (max u3 u1) u4) u2} C _inst_3 (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.const.{u1, u2, u3, u4} J _inst_1 C _inst_3)) (CategoryTheory.Limits.Cone.pt.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c))) j) (Prefunctor.obj.{succ u1, succ u2, u3, u4} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} J (CategoryTheory.Category.toCategoryStruct.{u1, u3} J _inst_1)) C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} J _inst_1 C _inst_3 F) j)) (CategoryTheory.NatTrans.app.{u1, u2, u3, u4} J _inst_1 C _inst_3 (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u4, max (max (max u3 u1) u2) u4} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max (max (max u3 u1) u4) u2} (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max (max (max u3 u1) u4) u2} (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 C _inst_3))) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u4, max (max (max u3 u1) u4) u2} C _inst_3 (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.const.{u1, u2, u3, u4} J _inst_1 C _inst_3)) (CategoryTheory.Limits.Cone.pt.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c)) F (CategoryTheory.Limits.Cone.π.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c) j) (CategoryTheory.CategoryStruct.comp.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3) (CategoryTheory.Limits.Cone.pt.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c) (CategoryTheory.Limits.Cone.pt.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c') (Prefunctor.obj.{succ u1, succ u2, u3, u4} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} J (CategoryTheory.Category.toCategoryStruct.{u1, u3} J _inst_1)) C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} J _inst_1 C _inst_3 F) j) (CategoryTheory.Iso.hom.{u2, u4} C _inst_3 (CategoryTheory.Limits.Cone.pt.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c) (CategoryTheory.Limits.Cone.pt.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c') φ) (CategoryTheory.NatTrans.app.{u1, u2, u3, u4} J _inst_1 C _inst_3 (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u4, max (max (max u3 u1) u2) u4} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max (max (max u3 u1) u4) u2} (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max (max (max u3 u1) u4) u2} (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 C _inst_3))) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u4, max (max (max u3 u1) u4) u2} C _inst_3 (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.const.{u1, u2, u3, u4} J _inst_1 C _inst_3)) (CategoryTheory.Limits.Cone.pt.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c')) F (CategoryTheory.Limits.Cone.π.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c') j))) -> (CategoryTheory.Iso.{u2, max (max u3 u4) u2} (CategoryTheory.Limits.Cone.{u1, u2, u3, u4} J _inst_1 C _inst_3 F) (CategoryTheory.Limits.Cone.category.{u1, u2, u3, u4} J _inst_1 C _inst_3 F) c c')
+Case conversion may be inaccurate. Consider using '#align category_theory.limits.cones.ext CategoryTheory.Limits.Cones.extₓ'. -/
/-- To give an isomorphism between cones, it suffices to give an
isomorphism between their vertices which commutes with the cone
maps. -/
@@ -296,12 +368,15 @@ def ext {c c' : Cone F} (φ : c.x ≅ c'.x) (w : ∀ j, c.π.app j = φ.Hom ≫
w' := fun j => φ.inv_comp_eq.mpr (w j) }
#align category_theory.limits.cones.ext CategoryTheory.Limits.Cones.ext
+#print CategoryTheory.Limits.Cones.eta /-
/-- Eta rule for cones. -/
@[simps]
def eta (c : Cone F) : c ≅ ⟨c.x, c.π⟩ :=
Cones.ext (Iso.refl _) (by tidy)
#align category_theory.limits.cones.eta CategoryTheory.Limits.Cones.eta
+-/
+#print CategoryTheory.Limits.Cones.cone_iso_of_hom_iso /-
/-- Given a cone morphism whose object part is an isomorphism, produce an
isomorphism of cones.
-/
@@ -309,7 +384,9 @@ theorem cone_iso_of_hom_iso {K : J ⥤ C} {c d : Cone K} (f : c ⟶ d) [i : IsIs
⟨⟨{ Hom := inv f.Hom
w' := fun j => (asIso f.Hom).inv_comp_eq.2 (f.w j).symm }, by tidy⟩⟩
#align category_theory.limits.cones.cone_iso_of_hom_iso CategoryTheory.Limits.Cones.cone_iso_of_hom_iso
+-/
+#print CategoryTheory.Limits.Cones.postcompose /-
/--
Functorially postcompose a cone for `F` by a natural transformation `F ⟶ G` to give a cone for `G`.
-/
@@ -321,7 +398,9 @@ def postcompose {G : J ⥤ C} (α : F ⟶ G) : Cone F ⥤ Cone G
π := c.π ≫ α }
map c₁ c₂ f := { Hom := f.Hom }
#align category_theory.limits.cones.postcompose CategoryTheory.Limits.Cones.postcompose
+-/
+#print CategoryTheory.Limits.Cones.postcomposeComp /-
/-- Postcomposing a cone by the composite natural transformation `α ≫ β` is the same as
postcomposing by `α` and then by `β`. -/
@[simps]
@@ -329,13 +408,22 @@ def postcomposeComp {G H : J ⥤ C} (α : F ⟶ G) (β : G ⟶ H) :
postcompose (α ≫ β) ≅ postcompose α ⋙ postcompose β :=
NatIso.ofComponents (fun s => Cones.ext (Iso.refl _) (by tidy)) (by tidy)
#align category_theory.limits.cones.postcompose_comp CategoryTheory.Limits.Cones.postcomposeComp
+-/
+#print CategoryTheory.Limits.Cones.postcomposeId /-
/-- Postcomposing by the identity does not change the cone up to isomorphism. -/
@[simps]
def postcomposeId : postcompose (𝟙 F) ≅ 𝟭 (Cone F) :=
NatIso.ofComponents (fun s => Cones.ext (Iso.refl _) (by tidy)) (by tidy)
#align category_theory.limits.cones.postcompose_id CategoryTheory.Limits.Cones.postcomposeId
+-/
+/- warning: category_theory.limits.cones.postcompose_equivalence -> CategoryTheory.Limits.Cones.postcomposeEquivalence is a dubious translation:
+lean 3 declaration is
+ forall {J : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} J] {C : Type.{u4}} [_inst_3 : CategoryTheory.Category.{u2, u4} C] {F : CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3} {G : CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3}, (CategoryTheory.Iso.{max u3 u2, max u1 u2 u3 u4} (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 C _inst_3) F G) -> (CategoryTheory.Equivalence.{u2, u2, max u3 u4 u2, max u3 u4 u2} (CategoryTheory.Limits.Cone.{u1, u2, u3, u4} J _inst_1 C _inst_3 F) (CategoryTheory.Limits.Cone.category.{u1, u2, u3, u4} J _inst_1 C _inst_3 F) (CategoryTheory.Limits.Cone.{u1, u2, u3, u4} J _inst_1 C _inst_3 G) (CategoryTheory.Limits.Cone.category.{u1, u2, u3, u4} J _inst_1 C _inst_3 G))
+but is expected to have type
+ forall {J : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} J] {C : Type.{u4}} [_inst_3 : CategoryTheory.Category.{u2, u4} C] {F : CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3} {G : CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3}, (CategoryTheory.Iso.{max u3 u2, max (max (max u3 u4) u1) u2} (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 C _inst_3) F G) -> (CategoryTheory.Equivalence.{u2, u2, max (max u4 u3) u2, max (max u4 u3) u2} (CategoryTheory.Limits.Cone.{u1, u2, u3, u4} J _inst_1 C _inst_3 F) (CategoryTheory.Limits.Cone.{u1, u2, u3, u4} J _inst_1 C _inst_3 G) (CategoryTheory.Limits.Cone.category.{u1, u2, u3, u4} J _inst_1 C _inst_3 F) (CategoryTheory.Limits.Cone.category.{u1, u2, u3, u4} J _inst_1 C _inst_3 G))
+Case conversion may be inaccurate. Consider using '#align category_theory.limits.cones.postcompose_equivalence CategoryTheory.Limits.Cones.postcomposeEquivalenceₓ'. -/
/-- If `F` and `G` are naturally isomorphic functors, then they have equivalent categories of
cones.
-/
@@ -348,6 +436,7 @@ def postcomposeEquivalence {G : J ⥤ C} (α : F ≅ G) : Cone F ≌ Cone G
counitIso := NatIso.ofComponents (fun s => Cones.ext (Iso.refl _) (by tidy)) (by tidy)
#align category_theory.limits.cones.postcompose_equivalence CategoryTheory.Limits.Cones.postcomposeEquivalence
+#print CategoryTheory.Limits.Cones.whiskering /-
/-- Whiskering on the left by `E : K ⥤ J` gives a functor from `cone F` to `cone (E ⋙ F)`.
-/
@[simps]
@@ -356,7 +445,14 @@ def whiskering (E : K ⥤ J) : Cone F ⥤ Cone (E ⋙ F)
obj c := c.whisker E
map c c' f := { Hom := f.Hom }
#align category_theory.limits.cones.whiskering CategoryTheory.Limits.Cones.whiskering
+-/
+/- warning: category_theory.limits.cones.whiskering_equivalence -> CategoryTheory.Limits.Cones.whiskeringEquivalence is a dubious translation:
+lean 3 declaration is
+ forall {J : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u1, u4} J] {K : Type.{u5}} [_inst_2 : CategoryTheory.Category.{u2, u5} K] {C : Type.{u6}} [_inst_3 : CategoryTheory.Category.{u3, u6} C] {F : CategoryTheory.Functor.{u1, u3, u4, u6} J _inst_1 C _inst_3} (e : CategoryTheory.Equivalence.{u2, u1, u5, u4} K _inst_2 J _inst_1), CategoryTheory.Equivalence.{u3, u3, max u4 u6 u3, max u5 u6 u3} (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 C _inst_3 F) (CategoryTheory.Limits.Cone.category.{u1, u3, u4, u6} J _inst_1 C _inst_3 F) (CategoryTheory.Limits.Cone.{u2, u3, u5, u6} K _inst_2 C _inst_3 (CategoryTheory.Functor.comp.{u2, u1, u3, u5, u4, u6} K _inst_2 J _inst_1 C _inst_3 (CategoryTheory.Equivalence.functor.{u2, u1, u5, u4} K _inst_2 J _inst_1 e) F)) (CategoryTheory.Limits.Cone.category.{u2, u3, u5, u6} K _inst_2 C _inst_3 (CategoryTheory.Functor.comp.{u2, u1, u3, u5, u4, u6} K _inst_2 J _inst_1 C _inst_3 (CategoryTheory.Equivalence.functor.{u2, u1, u5, u4} K _inst_2 J _inst_1 e) F))
+but is expected to have type
+ forall {J : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u1, u4} J] {K : Type.{u5}} [_inst_2 : CategoryTheory.Category.{u2, u5} K] {C : Type.{u6}} [_inst_3 : CategoryTheory.Category.{u3, u6} C] {F : CategoryTheory.Functor.{u1, u3, u4, u6} J _inst_1 C _inst_3} (e : CategoryTheory.Equivalence.{u2, u1, u5, u4} K J _inst_2 _inst_1), CategoryTheory.Equivalence.{u3, u3, max (max u6 u4) u3, max (max u6 u5) u3} (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 C _inst_3 F) (CategoryTheory.Limits.Cone.{u2, u3, u5, u6} K _inst_2 C _inst_3 (CategoryTheory.Functor.comp.{u2, u1, u3, u5, u4, u6} K _inst_2 J _inst_1 C _inst_3 (CategoryTheory.Equivalence.functor.{u2, u1, u5, u4} K J _inst_2 _inst_1 e) F)) (CategoryTheory.Limits.Cone.category.{u1, u3, u4, u6} J _inst_1 C _inst_3 F) (CategoryTheory.Limits.Cone.category.{u2, u3, u5, u6} K _inst_2 C _inst_3 (CategoryTheory.Functor.comp.{u2, u1, u3, u5, u4, u6} K _inst_2 J _inst_1 C _inst_3 (CategoryTheory.Equivalence.functor.{u2, u1, u5, u4} K J _inst_2 _inst_1 e) F))
+Case conversion may be inaccurate. Consider using '#align category_theory.limits.cones.whiskering_equivalence CategoryTheory.Limits.Cones.whiskeringEquivalenceₓ'. -/
/-- Whiskering by an equivalence gives an equivalence between categories of cones.
-/
@[simps]
@@ -377,6 +473,12 @@ def whiskeringEquivalence (e : K ≌ J) : Cone F ≌ Cone (e.Functor ⋙ F)
(by tidy)
#align category_theory.limits.cones.whiskering_equivalence CategoryTheory.Limits.Cones.whiskeringEquivalence
+/- warning: category_theory.limits.cones.equivalence_of_reindexing -> CategoryTheory.Limits.Cones.equivalenceOfReindexing is a dubious translation:
+lean 3 declaration is
+ forall {J : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u1, u4} J] {K : Type.{u5}} [_inst_2 : CategoryTheory.Category.{u2, u5} K] {C : Type.{u6}} [_inst_3 : CategoryTheory.Category.{u3, u6} C] {F : CategoryTheory.Functor.{u1, u3, u4, u6} J _inst_1 C _inst_3} {G : CategoryTheory.Functor.{u2, u3, u5, u6} K _inst_2 C _inst_3} (e : CategoryTheory.Equivalence.{u2, u1, u5, u4} K _inst_2 J _inst_1), (CategoryTheory.Iso.{max u5 u3, max u2 u3 u5 u6} (CategoryTheory.Functor.{u2, u3, u5, u6} K _inst_2 C _inst_3) (CategoryTheory.Functor.category.{u2, u3, u5, u6} K _inst_2 C _inst_3) (CategoryTheory.Functor.comp.{u2, u1, u3, u5, u4, u6} K _inst_2 J _inst_1 C _inst_3 (CategoryTheory.Equivalence.functor.{u2, u1, u5, u4} K _inst_2 J _inst_1 e) F) G) -> (CategoryTheory.Equivalence.{u3, u3, max u4 u6 u3, max u5 u6 u3} (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 C _inst_3 F) (CategoryTheory.Limits.Cone.category.{u1, u3, u4, u6} J _inst_1 C _inst_3 F) (CategoryTheory.Limits.Cone.{u2, u3, u5, u6} K _inst_2 C _inst_3 G) (CategoryTheory.Limits.Cone.category.{u2, u3, u5, u6} K _inst_2 C _inst_3 G))
+but is expected to have type
+ forall {J : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u1, u4} J] {K : Type.{u5}} [_inst_2 : CategoryTheory.Category.{u2, u5} K] {C : Type.{u6}} [_inst_3 : CategoryTheory.Category.{u3, u6} C] {F : CategoryTheory.Functor.{u1, u3, u4, u6} J _inst_1 C _inst_3} {G : CategoryTheory.Functor.{u2, u3, u5, u6} K _inst_2 C _inst_3} (e : CategoryTheory.Equivalence.{u2, u1, u5, u4} K J _inst_2 _inst_1), (CategoryTheory.Iso.{max u5 u3, max (max (max u6 u5) u3) u2} (CategoryTheory.Functor.{u2, u3, u5, u6} K _inst_2 C _inst_3) (CategoryTheory.Functor.category.{u2, u3, u5, u6} K _inst_2 C _inst_3) (CategoryTheory.Functor.comp.{u2, u1, u3, u5, u4, u6} K _inst_2 J _inst_1 C _inst_3 (CategoryTheory.Equivalence.functor.{u2, u1, u5, u4} K J _inst_2 _inst_1 e) F) G) -> (CategoryTheory.Equivalence.{u3, u3, max (max u6 u4) u3, max (max u6 u5) u3} (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 C _inst_3 F) (CategoryTheory.Limits.Cone.{u2, u3, u5, u6} K _inst_2 C _inst_3 G) (CategoryTheory.Limits.Cone.category.{u1, u3, u4, u6} J _inst_1 C _inst_3 F) (CategoryTheory.Limits.Cone.category.{u2, u3, u5, u6} K _inst_2 C _inst_3 G))
+Case conversion may be inaccurate. Consider using '#align category_theory.limits.cones.equivalence_of_reindexing CategoryTheory.Limits.Cones.equivalenceOfReindexingₓ'. -/
/-- The categories of cones over `F` and `G` are equivalent if `F` and `G` are naturally isomorphic
(possibly after changing the indexing category by an equivalence).
-/
@@ -389,15 +491,18 @@ section
variable (F)
+#print CategoryTheory.Limits.Cones.forget /-
/-- Forget the cone structure and obtain just the cone point. -/
@[simps]
def forget : Cone F ⥤ C where
obj t := t.x
map s t f := f.Hom
#align category_theory.limits.cones.forget CategoryTheory.Limits.Cones.forget
+-/
variable (G : C ⥤ D)
+#print CategoryTheory.Limits.Cones.functoriality /-
/-- A functor `G : C ⥤ D` sends cones over `F` to cones over `F ⋙ G` functorially. -/
@[simps]
def functoriality : Cone F ⥤ Cone (F ⋙ G)
@@ -411,20 +516,31 @@ def functoriality : Cone F ⥤ Cone (F ⋙ G)
{ Hom := G.map f.Hom
w' := fun j => by simp [-cone_morphism.w, ← f.w j] }
#align category_theory.limits.cones.functoriality CategoryTheory.Limits.Cones.functoriality
+-/
+#print CategoryTheory.Limits.Cones.functorialityFull /-
instance functorialityFull [Full G] [Faithful G] : Full (functoriality F G)
where preimage X Y t :=
{ Hom := G.preimage t.Hom
w' := fun j => G.map_injective (by simpa using t.w j) }
#align category_theory.limits.cones.functoriality_full CategoryTheory.Limits.Cones.functorialityFull
+-/
-instance functoriality_faithful [Faithful G] : Faithful (Cones.functoriality F G)
+#print CategoryTheory.Limits.Cones.functorialityFaithful /-
+instance functorialityFaithful [Faithful G] : Faithful (Cones.functoriality F G)
where map_injective' X Y f g e := by
ext1
injection e
apply G.map_injective h_1
-#align category_theory.limits.cones.functoriality_faithful CategoryTheory.Limits.Cones.functoriality_faithful
+#align category_theory.limits.cones.functoriality_faithful CategoryTheory.Limits.Cones.functorialityFaithful
+-/
+/- warning: category_theory.limits.cones.functoriality_equivalence -> CategoryTheory.Limits.Cones.functorialityEquivalence is a dubious translation:
+lean 3 declaration is
+ forall {J : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u1, u4} J] {C : Type.{u5}} [_inst_3 : CategoryTheory.Category.{u2, u5} C] {D : Type.{u6}} [_inst_4 : CategoryTheory.Category.{u3, u6} D] (F : CategoryTheory.Functor.{u1, u2, u4, u5} J _inst_1 C _inst_3) (e : CategoryTheory.Equivalence.{u2, u3, u5, u6} C _inst_3 D _inst_4), CategoryTheory.Equivalence.{u2, u3, max u4 u5 u2, max u4 u6 u3} (CategoryTheory.Limits.Cone.{u1, u2, u4, u5} J _inst_1 C _inst_3 F) (CategoryTheory.Limits.Cone.category.{u1, u2, u4, u5} J _inst_1 C _inst_3 F) (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F (CategoryTheory.Equivalence.functor.{u2, u3, u5, u6} C _inst_3 D _inst_4 e))) (CategoryTheory.Limits.Cone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F (CategoryTheory.Equivalence.functor.{u2, u3, u5, u6} C _inst_3 D _inst_4 e)))
+but is expected to have type
+ forall {J : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u1, u4} J] {C : Type.{u5}} [_inst_3 : CategoryTheory.Category.{u2, u5} C] {D : Type.{u6}} [_inst_4 : CategoryTheory.Category.{u3, u6} D] (F : CategoryTheory.Functor.{u1, u2, u4, u5} J _inst_1 C _inst_3) (e : CategoryTheory.Equivalence.{u2, u3, u5, u6} C D _inst_3 _inst_4), CategoryTheory.Equivalence.{u2, u3, max (max u5 u4) u2, max (max u6 u4) u3} (CategoryTheory.Limits.Cone.{u1, u2, u4, u5} J _inst_1 C _inst_3 F) (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F (CategoryTheory.Equivalence.functor.{u2, u3, u5, u6} C D _inst_3 _inst_4 e))) (CategoryTheory.Limits.Cone.category.{u1, u2, u4, u5} J _inst_1 C _inst_3 F) (CategoryTheory.Limits.Cone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F (CategoryTheory.Equivalence.functor.{u2, u3, u5, u6} C D _inst_3 _inst_4 e)))
+Case conversion may be inaccurate. Consider using '#align category_theory.limits.cones.functoriality_equivalence CategoryTheory.Limits.Cones.functorialityEquivalenceₓ'. -/
/-- If `e : C ≌ D` is an equivalence of categories, then `functoriality F e.functor` induces an
equivalence between cones over `F` and cones over `F ⋙ e.functor`.
-/
@@ -438,6 +554,7 @@ def functorialityEquivalence (e : C ≌ D) : Cone F ≌ Cone (F ⋙ e.Functor) :
counitIso := NatIso.ofComponents (fun c => Cones.ext (e.counitIso.app _) (by tidy)) (by tidy) }
#align category_theory.limits.cones.functoriality_equivalence CategoryTheory.Limits.Cones.functorialityEquivalence
+#print CategoryTheory.Limits.Cones.reflects_cone_isomorphism /-
/-- If `F` reflects isomorphisms, then `cones.functoriality F` reflects isomorphisms
as well.
-/
@@ -450,11 +567,13 @@ instance reflects_cone_isomorphism (F : C ⥤ D) [ReflectsIsomorphisms F] (K : J
haveI := reflects_isomorphisms.reflects F f.hom
apply cone_iso_of_hom_iso
#align category_theory.limits.cones.reflects_cone_isomorphism CategoryTheory.Limits.Cones.reflects_cone_isomorphism
+-/
end
end Cones
+#print CategoryTheory.Limits.CoconeMorphism /-
/-- A cocone morphism between two cocones for the same diagram is a morphism of the cocone points
which commutes with the cocone legs. -/
@[ext]
@@ -462,15 +581,19 @@ structure CoconeMorphism (A B : Cocone F) where
Hom : A.x ⟶ B.x
w' : ∀ j : J, A.ι.app j ≫ hom = B.ι.app j := by obviously
#align category_theory.limits.cocone_morphism CategoryTheory.Limits.CoconeMorphism
+-/
+#print CategoryTheory.Limits.inhabitedCoconeMorphism /-
instance inhabitedCoconeMorphism (A : Cocone F) : Inhabited (CoconeMorphism A A) :=
⟨{ Hom := 𝟙 _ }⟩
#align category_theory.limits.inhabited_cocone_morphism CategoryTheory.Limits.inhabitedCoconeMorphism
+-/
restate_axiom cocone_morphism.w'
attribute [simp, reassoc.1] cocone_morphism.w
+#print CategoryTheory.Limits.Cocone.category /-
@[simps]
instance Cocone.category : Category (Cocone F)
where
@@ -478,9 +601,16 @@ instance Cocone.category : Category (Cocone F)
comp _ _ _ f g := { Hom := f.Hom ≫ g.Hom }
id B := { Hom := 𝟙 B.x }
#align category_theory.limits.cocone.category CategoryTheory.Limits.Cocone.category
+-/
namespace Cocones
+/- warning: category_theory.limits.cocones.ext -> CategoryTheory.Limits.Cocones.ext is a dubious translation:
+lean 3 declaration is
+ forall {J : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} J] {C : Type.{u4}} [_inst_3 : CategoryTheory.Category.{u2, u4} C] {F : CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3} {c : CategoryTheory.Limits.Cocone.{u1, u2, u3, u4} J _inst_1 C _inst_3 F} {c' : CategoryTheory.Limits.Cocone.{u1, u2, u3, u4} J _inst_1 C _inst_3 F} (φ : CategoryTheory.Iso.{u2, u4} C _inst_3 (CategoryTheory.Limits.Cocone.x.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c) (CategoryTheory.Limits.Cocone.x.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c')), (forall (j : J), Eq.{succ u2} (Quiver.Hom.{succ u2, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} J _inst_1 C _inst_3 F j) (CategoryTheory.Limits.Cocone.x.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c')) (CategoryTheory.CategoryStruct.comp.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} J _inst_1 C _inst_3 F j) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} J _inst_1 C _inst_3 (CategoryTheory.Functor.obj.{u2, max u3 u2, u4, max u1 u2 u3 u4} C _inst_3 (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.const.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Limits.Cocone.x.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c)) j) (CategoryTheory.Limits.Cocone.x.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c') (CategoryTheory.NatTrans.app.{u1, u2, u3, u4} J _inst_1 C _inst_3 F (CategoryTheory.Functor.obj.{u2, max u3 u2, u4, max u1 u2 u3 u4} C _inst_3 (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.const.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Limits.Cocone.x.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c)) (CategoryTheory.Limits.Cocone.ι.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c) j) (CategoryTheory.Iso.hom.{u2, u4} C _inst_3 (CategoryTheory.Limits.Cocone.x.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c) (CategoryTheory.Limits.Cocone.x.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c') φ)) (CategoryTheory.NatTrans.app.{u1, u2, u3, u4} J _inst_1 C _inst_3 F (CategoryTheory.Functor.obj.{u2, max u3 u2, u4, max u1 u2 u3 u4} C _inst_3 (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.const.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Limits.Cocone.x.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c')) (CategoryTheory.Limits.Cocone.ι.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c') j)) -> (CategoryTheory.Iso.{u2, max u3 u4 u2} (CategoryTheory.Limits.Cocone.{u1, u2, u3, u4} J _inst_1 C _inst_3 F) (CategoryTheory.Limits.Cocone.category.{u1, u2, u3, u4} J _inst_1 C _inst_3 F) c c')
+but is expected to have type
+ forall {J : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} J] {C : Type.{u4}} [_inst_3 : CategoryTheory.Category.{u2, u4} C] {F : CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3} {c : CategoryTheory.Limits.Cocone.{u1, u2, u3, u4} J _inst_1 C _inst_3 F} {c' : CategoryTheory.Limits.Cocone.{u1, u2, u3, u4} J _inst_1 C _inst_3 F} (φ : CategoryTheory.Iso.{u2, u4} C _inst_3 (CategoryTheory.Limits.Cocone.pt.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c) (CategoryTheory.Limits.Cocone.pt.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c')), (forall (j : J), Eq.{succ u2} (Quiver.Hom.{succ u2, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) (Prefunctor.obj.{succ u1, succ u2, u3, u4} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} J (CategoryTheory.Category.toCategoryStruct.{u1, u3} J _inst_1)) C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} J _inst_1 C _inst_3 F) j) (CategoryTheory.Limits.Cocone.pt.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c')) (CategoryTheory.CategoryStruct.comp.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3) (Prefunctor.obj.{succ u1, succ u2, u3, u4} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} J (CategoryTheory.Category.toCategoryStruct.{u1, u3} J _inst_1)) C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} J _inst_1 C _inst_3 F) j) (Prefunctor.obj.{succ u1, succ u2, u3, u4} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} J (CategoryTheory.Category.toCategoryStruct.{u1, u3} J _inst_1)) C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} J _inst_1 C _inst_3 (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u4, max (max (max u3 u1) u2) u4} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max (max (max u3 u1) u4) u2} (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max (max (max u3 u1) u4) u2} (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 C _inst_3))) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u4, max (max (max u3 u1) u4) u2} C _inst_3 (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.const.{u1, u2, u3, u4} J _inst_1 C _inst_3)) (CategoryTheory.Limits.Cocone.pt.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c))) j) (CategoryTheory.Limits.Cocone.pt.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c') (CategoryTheory.NatTrans.app.{u1, u2, u3, u4} J _inst_1 C _inst_3 F (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u4, max (max (max u3 u1) u2) u4} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max (max (max u3 u1) u4) u2} (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max (max (max u3 u1) u4) u2} (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 C _inst_3))) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u4, max (max (max u3 u1) u4) u2} C _inst_3 (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.const.{u1, u2, u3, u4} J _inst_1 C _inst_3)) (CategoryTheory.Limits.Cocone.pt.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c)) (CategoryTheory.Limits.Cocone.ι.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c) j) (CategoryTheory.Iso.hom.{u2, u4} C _inst_3 (CategoryTheory.Limits.Cocone.pt.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c) (CategoryTheory.Limits.Cocone.pt.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c') φ)) (CategoryTheory.NatTrans.app.{u1, u2, u3, u4} J _inst_1 C _inst_3 F (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u4, max (max (max u3 u1) u2) u4} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max (max (max u3 u1) u4) u2} (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max (max (max u3 u1) u4) u2} (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 C _inst_3))) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u4, max (max (max u3 u1) u4) u2} C _inst_3 (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.const.{u1, u2, u3, u4} J _inst_1 C _inst_3)) (CategoryTheory.Limits.Cocone.pt.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c')) (CategoryTheory.Limits.Cocone.ι.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c') j)) -> (CategoryTheory.Iso.{u2, max (max u3 u4) u2} (CategoryTheory.Limits.Cocone.{u1, u2, u3, u4} J _inst_1 C _inst_3 F) (CategoryTheory.Limits.Cocone.category.{u1, u2, u3, u4} J _inst_1 C _inst_3 F) c c')
+Case conversion may be inaccurate. Consider using '#align category_theory.limits.cocones.ext CategoryTheory.Limits.Cocones.extₓ'. -/
/-- To give an isomorphism between cocones, it suffices to give an
isomorphism between their vertices which commutes with the cocone
maps. -/
@@ -493,12 +623,15 @@ def ext {c c' : Cocone F} (φ : c.x ≅ c'.x) (w : ∀ j, c.ι.app j ≫ φ.Hom
w' := fun j => φ.comp_inv_eq.mpr (w j).symm }
#align category_theory.limits.cocones.ext CategoryTheory.Limits.Cocones.ext
+#print CategoryTheory.Limits.Cocones.eta /-
/-- Eta rule for cocones. -/
@[simps]
def eta (c : Cocone F) : c ≅ ⟨c.x, c.ι⟩ :=
Cocones.ext (Iso.refl _) (by tidy)
#align category_theory.limits.cocones.eta CategoryTheory.Limits.Cocones.eta
+-/
+#print CategoryTheory.Limits.Cocones.cocone_iso_of_hom_iso /-
/-- Given a cocone morphism whose object part is an isomorphism, produce an
isomorphism of cocones.
-/
@@ -507,7 +640,9 @@ theorem cocone_iso_of_hom_iso {K : J ⥤ C} {c d : Cocone K} (f : c ⟶ d) [i :
⟨⟨{ Hom := inv f.Hom
w' := fun j => (asIso f.Hom).comp_inv_eq.2 (f.w j).symm }, by tidy⟩⟩
#align category_theory.limits.cocones.cocone_iso_of_hom_iso CategoryTheory.Limits.Cocones.cocone_iso_of_hom_iso
+-/
+#print CategoryTheory.Limits.Cocones.precompose /-
/-- Functorially precompose a cocone for `F` by a natural transformation `G ⟶ F` to give a cocone
for `G`. -/
@[simps]
@@ -518,19 +653,30 @@ def precompose {G : J ⥤ C} (α : G ⟶ F) : Cocone F ⥤ Cocone G
ι := α ≫ c.ι }
map c₁ c₂ f := { Hom := f.Hom }
#align category_theory.limits.cocones.precompose CategoryTheory.Limits.Cocones.precompose
+-/
+#print CategoryTheory.Limits.Cocones.precomposeComp /-
/-- Precomposing a cocone by the composite natural transformation `α ≫ β` is the same as
precomposing by `β` and then by `α`. -/
def precomposeComp {G H : J ⥤ C} (α : F ⟶ G) (β : G ⟶ H) :
precompose (α ≫ β) ≅ precompose β ⋙ precompose α :=
NatIso.ofComponents (fun s => Cocones.ext (Iso.refl _) (by tidy)) (by tidy)
#align category_theory.limits.cocones.precompose_comp CategoryTheory.Limits.Cocones.precomposeComp
+-/
+#print CategoryTheory.Limits.Cocones.precomposeId /-
/-- Precomposing by the identity does not change the cocone up to isomorphism. -/
def precomposeId : precompose (𝟙 F) ≅ 𝟭 (Cocone F) :=
NatIso.ofComponents (fun s => Cocones.ext (Iso.refl _) (by tidy)) (by tidy)
#align category_theory.limits.cocones.precompose_id CategoryTheory.Limits.Cocones.precomposeId
+-/
+/- warning: category_theory.limits.cocones.precompose_equivalence -> CategoryTheory.Limits.Cocones.precomposeEquivalence is a dubious translation:
+lean 3 declaration is
+ forall {J : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} J] {C : Type.{u4}} [_inst_3 : CategoryTheory.Category.{u2, u4} C] {F : CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3} {G : CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3}, (CategoryTheory.Iso.{max u3 u2, max u1 u2 u3 u4} (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 C _inst_3) G F) -> (CategoryTheory.Equivalence.{u2, u2, max u3 u4 u2, max u3 u4 u2} (CategoryTheory.Limits.Cocone.{u1, u2, u3, u4} J _inst_1 C _inst_3 F) (CategoryTheory.Limits.Cocone.category.{u1, u2, u3, u4} J _inst_1 C _inst_3 F) (CategoryTheory.Limits.Cocone.{u1, u2, u3, u4} J _inst_1 C _inst_3 G) (CategoryTheory.Limits.Cocone.category.{u1, u2, u3, u4} J _inst_1 C _inst_3 G))
+but is expected to have type
+ forall {J : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} J] {C : Type.{u4}} [_inst_3 : CategoryTheory.Category.{u2, u4} C] {F : CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3} {G : CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3}, (CategoryTheory.Iso.{max u3 u2, max (max (max u3 u4) u1) u2} (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 C _inst_3) G F) -> (CategoryTheory.Equivalence.{u2, u2, max (max u4 u3) u2, max (max u4 u3) u2} (CategoryTheory.Limits.Cocone.{u1, u2, u3, u4} J _inst_1 C _inst_3 F) (CategoryTheory.Limits.Cocone.{u1, u2, u3, u4} J _inst_1 C _inst_3 G) (CategoryTheory.Limits.Cocone.category.{u1, u2, u3, u4} J _inst_1 C _inst_3 F) (CategoryTheory.Limits.Cocone.category.{u1, u2, u3, u4} J _inst_1 C _inst_3 G))
+Case conversion may be inaccurate. Consider using '#align category_theory.limits.cocones.precompose_equivalence CategoryTheory.Limits.Cocones.precomposeEquivalenceₓ'. -/
/-- If `F` and `G` are naturally isomorphic functors, then they have equivalent categories of
cocones.
-/
@@ -543,6 +689,7 @@ def precomposeEquivalence {G : J ⥤ C} (α : G ≅ F) : Cocone F ≌ Cocone G
counitIso := NatIso.ofComponents (fun s => Cocones.ext (Iso.refl _) (by tidy)) (by tidy)
#align category_theory.limits.cocones.precompose_equivalence CategoryTheory.Limits.Cocones.precomposeEquivalence
+#print CategoryTheory.Limits.Cocones.whiskering /-
/-- Whiskering on the left by `E : K ⥤ J` gives a functor from `cocone F` to `cocone (E ⋙ F)`.
-/
@[simps]
@@ -551,7 +698,14 @@ def whiskering (E : K ⥤ J) : Cocone F ⥤ Cocone (E ⋙ F)
obj c := c.whisker E
map c c' f := { Hom := f.Hom }
#align category_theory.limits.cocones.whiskering CategoryTheory.Limits.Cocones.whiskering
+-/
+/- warning: category_theory.limits.cocones.whiskering_equivalence -> CategoryTheory.Limits.Cocones.whiskeringEquivalence is a dubious translation:
+lean 3 declaration is
+ forall {J : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u1, u4} J] {K : Type.{u5}} [_inst_2 : CategoryTheory.Category.{u2, u5} K] {C : Type.{u6}} [_inst_3 : CategoryTheory.Category.{u3, u6} C] {F : CategoryTheory.Functor.{u1, u3, u4, u6} J _inst_1 C _inst_3} (e : CategoryTheory.Equivalence.{u2, u1, u5, u4} K _inst_2 J _inst_1), CategoryTheory.Equivalence.{u3, u3, max u4 u6 u3, max u5 u6 u3} (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 C _inst_3 F) (CategoryTheory.Limits.Cocone.category.{u1, u3, u4, u6} J _inst_1 C _inst_3 F) (CategoryTheory.Limits.Cocone.{u2, u3, u5, u6} K _inst_2 C _inst_3 (CategoryTheory.Functor.comp.{u2, u1, u3, u5, u4, u6} K _inst_2 J _inst_1 C _inst_3 (CategoryTheory.Equivalence.functor.{u2, u1, u5, u4} K _inst_2 J _inst_1 e) F)) (CategoryTheory.Limits.Cocone.category.{u2, u3, u5, u6} K _inst_2 C _inst_3 (CategoryTheory.Functor.comp.{u2, u1, u3, u5, u4, u6} K _inst_2 J _inst_1 C _inst_3 (CategoryTheory.Equivalence.functor.{u2, u1, u5, u4} K _inst_2 J _inst_1 e) F))
+but is expected to have type
+ forall {J : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u1, u4} J] {K : Type.{u5}} [_inst_2 : CategoryTheory.Category.{u2, u5} K] {C : Type.{u6}} [_inst_3 : CategoryTheory.Category.{u3, u6} C] {F : CategoryTheory.Functor.{u1, u3, u4, u6} J _inst_1 C _inst_3} (e : CategoryTheory.Equivalence.{u2, u1, u5, u4} K J _inst_2 _inst_1), CategoryTheory.Equivalence.{u3, u3, max (max u6 u4) u3, max (max u6 u5) u3} (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 C _inst_3 F) (CategoryTheory.Limits.Cocone.{u2, u3, u5, u6} K _inst_2 C _inst_3 (CategoryTheory.Functor.comp.{u2, u1, u3, u5, u4, u6} K _inst_2 J _inst_1 C _inst_3 (CategoryTheory.Equivalence.functor.{u2, u1, u5, u4} K J _inst_2 _inst_1 e) F)) (CategoryTheory.Limits.Cocone.category.{u1, u3, u4, u6} J _inst_1 C _inst_3 F) (CategoryTheory.Limits.Cocone.category.{u2, u3, u5, u6} K _inst_2 C _inst_3 (CategoryTheory.Functor.comp.{u2, u1, u3, u5, u4, u6} K _inst_2 J _inst_1 C _inst_3 (CategoryTheory.Equivalence.functor.{u2, u1, u5, u4} K J _inst_2 _inst_1 e) F))
+Case conversion may be inaccurate. Consider using '#align category_theory.limits.cocones.whiskering_equivalence CategoryTheory.Limits.Cocones.whiskeringEquivalenceₓ'. -/
/-- Whiskering by an equivalence gives an equivalence between categories of cones.
-/
@[simps]
@@ -575,6 +729,12 @@ def whiskeringEquivalence (e : K ≌ J) : Cocone F ≌ Cocone (e.Functor ⋙ F)
(by tidy)
#align category_theory.limits.cocones.whiskering_equivalence CategoryTheory.Limits.Cocones.whiskeringEquivalence
+/- warning: category_theory.limits.cocones.equivalence_of_reindexing -> CategoryTheory.Limits.Cocones.equivalenceOfReindexing is a dubious translation:
+lean 3 declaration is
+ forall {J : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u1, u4} J] {K : Type.{u5}} [_inst_2 : CategoryTheory.Category.{u2, u5} K] {C : Type.{u6}} [_inst_3 : CategoryTheory.Category.{u3, u6} C] {F : CategoryTheory.Functor.{u1, u3, u4, u6} J _inst_1 C _inst_3} {G : CategoryTheory.Functor.{u2, u3, u5, u6} K _inst_2 C _inst_3} (e : CategoryTheory.Equivalence.{u2, u1, u5, u4} K _inst_2 J _inst_1), (CategoryTheory.Iso.{max u5 u3, max u2 u3 u5 u6} (CategoryTheory.Functor.{u2, u3, u5, u6} K _inst_2 C _inst_3) (CategoryTheory.Functor.category.{u2, u3, u5, u6} K _inst_2 C _inst_3) (CategoryTheory.Functor.comp.{u2, u1, u3, u5, u4, u6} K _inst_2 J _inst_1 C _inst_3 (CategoryTheory.Equivalence.functor.{u2, u1, u5, u4} K _inst_2 J _inst_1 e) F) G) -> (CategoryTheory.Equivalence.{u3, u3, max u4 u6 u3, max u5 u6 u3} (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 C _inst_3 F) (CategoryTheory.Limits.Cocone.category.{u1, u3, u4, u6} J _inst_1 C _inst_3 F) (CategoryTheory.Limits.Cocone.{u2, u3, u5, u6} K _inst_2 C _inst_3 G) (CategoryTheory.Limits.Cocone.category.{u2, u3, u5, u6} K _inst_2 C _inst_3 G))
+but is expected to have type
+ forall {J : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u1, u4} J] {K : Type.{u5}} [_inst_2 : CategoryTheory.Category.{u2, u5} K] {C : Type.{u6}} [_inst_3 : CategoryTheory.Category.{u3, u6} C] {F : CategoryTheory.Functor.{u1, u3, u4, u6} J _inst_1 C _inst_3} {G : CategoryTheory.Functor.{u2, u3, u5, u6} K _inst_2 C _inst_3} (e : CategoryTheory.Equivalence.{u2, u1, u5, u4} K J _inst_2 _inst_1), (CategoryTheory.Iso.{max u5 u3, max (max (max u6 u5) u3) u2} (CategoryTheory.Functor.{u2, u3, u5, u6} K _inst_2 C _inst_3) (CategoryTheory.Functor.category.{u2, u3, u5, u6} K _inst_2 C _inst_3) (CategoryTheory.Functor.comp.{u2, u1, u3, u5, u4, u6} K _inst_2 J _inst_1 C _inst_3 (CategoryTheory.Equivalence.functor.{u2, u1, u5, u4} K J _inst_2 _inst_1 e) F) G) -> (CategoryTheory.Equivalence.{u3, u3, max (max u6 u4) u3, max (max u6 u5) u3} (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 C _inst_3 F) (CategoryTheory.Limits.Cocone.{u2, u3, u5, u6} K _inst_2 C _inst_3 G) (CategoryTheory.Limits.Cocone.category.{u1, u3, u4, u6} J _inst_1 C _inst_3 F) (CategoryTheory.Limits.Cocone.category.{u2, u3, u5, u6} K _inst_2 C _inst_3 G))
+Case conversion may be inaccurate. Consider using '#align category_theory.limits.cocones.equivalence_of_reindexing CategoryTheory.Limits.Cocones.equivalenceOfReindexingₓ'. -/
/--
The categories of cocones over `F` and `G` are equivalent if `F` and `G` are naturally isomorphic
(possibly after changing the indexing category by an equivalence).
@@ -588,15 +748,18 @@ section
variable (F)
+#print CategoryTheory.Limits.Cocones.forget /-
/-- Forget the cocone structure and obtain just the cocone point. -/
@[simps]
def forget : Cocone F ⥤ C where
obj t := t.x
map s t f := f.Hom
#align category_theory.limits.cocones.forget CategoryTheory.Limits.Cocones.forget
+-/
variable (G : C ⥤ D)
+#print CategoryTheory.Limits.Cocones.functoriality /-
/-- A functor `G : C ⥤ D` sends cocones over `F` to cocones over `F ⋙ G` functorially. -/
@[simps]
def functoriality : Cocone F ⥤ Cocone (F ⋙ G)
@@ -610,20 +773,31 @@ def functoriality : Cocone F ⥤ Cocone (F ⋙ G)
{ Hom := G.map f.Hom
w' := by intros <;> rw [← functor.map_comp, cocone_morphism.w] }
#align category_theory.limits.cocones.functoriality CategoryTheory.Limits.Cocones.functoriality
+-/
+#print CategoryTheory.Limits.Cocones.functorialityFull /-
instance functorialityFull [Full G] [Faithful G] : Full (functoriality F G)
where preimage X Y t :=
{ Hom := G.preimage t.Hom
w' := fun j => G.map_injective (by simpa using t.w j) }
#align category_theory.limits.cocones.functoriality_full CategoryTheory.Limits.Cocones.functorialityFull
+-/
+#print CategoryTheory.Limits.Cocones.functoriality_faithful /-
instance functoriality_faithful [Faithful G] : Faithful (functoriality F G)
where map_injective' X Y f g e := by
ext1
injection e
apply G.map_injective h_1
#align category_theory.limits.cocones.functoriality_faithful CategoryTheory.Limits.Cocones.functoriality_faithful
+-/
+/- warning: category_theory.limits.cocones.functoriality_equivalence -> CategoryTheory.Limits.Cocones.functorialityEquivalence is a dubious translation:
+lean 3 declaration is
+ forall {J : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u1, u4} J] {C : Type.{u5}} [_inst_3 : CategoryTheory.Category.{u2, u5} C] {D : Type.{u6}} [_inst_4 : CategoryTheory.Category.{u3, u6} D] (F : CategoryTheory.Functor.{u1, u2, u4, u5} J _inst_1 C _inst_3) (e : CategoryTheory.Equivalence.{u2, u3, u5, u6} C _inst_3 D _inst_4), CategoryTheory.Equivalence.{u2, u3, max u4 u5 u2, max u4 u6 u3} (CategoryTheory.Limits.Cocone.{u1, u2, u4, u5} J _inst_1 C _inst_3 F) (CategoryTheory.Limits.Cocone.category.{u1, u2, u4, u5} J _inst_1 C _inst_3 F) (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F (CategoryTheory.Equivalence.functor.{u2, u3, u5, u6} C _inst_3 D _inst_4 e))) (CategoryTheory.Limits.Cocone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F (CategoryTheory.Equivalence.functor.{u2, u3, u5, u6} C _inst_3 D _inst_4 e)))
+but is expected to have type
+ forall {J : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u1, u4} J] {C : Type.{u5}} [_inst_3 : CategoryTheory.Category.{u2, u5} C] {D : Type.{u6}} [_inst_4 : CategoryTheory.Category.{u3, u6} D] (F : CategoryTheory.Functor.{u1, u2, u4, u5} J _inst_1 C _inst_3) (e : CategoryTheory.Equivalence.{u2, u3, u5, u6} C D _inst_3 _inst_4), CategoryTheory.Equivalence.{u2, u3, max (max u5 u4) u2, max (max u6 u4) u3} (CategoryTheory.Limits.Cocone.{u1, u2, u4, u5} J _inst_1 C _inst_3 F) (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F (CategoryTheory.Equivalence.functor.{u2, u3, u5, u6} C D _inst_3 _inst_4 e))) (CategoryTheory.Limits.Cocone.category.{u1, u2, u4, u5} J _inst_1 C _inst_3 F) (CategoryTheory.Limits.Cocone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F (CategoryTheory.Equivalence.functor.{u2, u3, u5, u6} C D _inst_3 _inst_4 e)))
+Case conversion may be inaccurate. Consider using '#align category_theory.limits.cocones.functoriality_equivalence CategoryTheory.Limits.Cocones.functorialityEquivalenceₓ'. -/
/-- If `e : C ≌ D` is an equivalence of categories, then `functoriality F e.functor` induces an
equivalence between cocones over `F` and cocones over `F ⋙ e.functor`.
-/
@@ -654,6 +828,7 @@ def functorialityEquivalence (e : C ≌ D) : Cocone F ≌ Cocone (F ⋙ e.Functo
simp }
#align category_theory.limits.cocones.functoriality_equivalence CategoryTheory.Limits.Cocones.functorialityEquivalence
+#print CategoryTheory.Limits.Cocones.reflects_cocone_isomorphism /-
/-- If `F` reflects isomorphisms, then `cocones.functoriality F` reflects isomorphisms
as well.
-/
@@ -667,6 +842,7 @@ instance reflects_cocone_isomorphism (F : C ⥤ D) [ReflectsIsomorphisms F] (K :
haveI := reflects_isomorphisms.reflects F f.hom
apply cocone_iso_of_hom_iso
#align category_theory.limits.cocones.reflects_cocone_isomorphism CategoryTheory.Limits.Cocones.reflects_cocone_isomorphism
+-/
end
@@ -680,72 +856,100 @@ variable {F : J ⥤ C} {G : J ⥤ C} (H : C ⥤ D)
open CategoryTheory.Limits
+#print CategoryTheory.Functor.mapCone /-
/-- The image of a cone in C under a functor G : C ⥤ D is a cone in D. -/
@[simps]
def mapCone (c : Cone F) : Cone (F ⋙ H) :=
(Cones.functoriality F H).obj c
#align category_theory.functor.map_cone CategoryTheory.Functor.mapCone
+-/
+#print CategoryTheory.Functor.mapCocone /-
/-- The image of a cocone in C under a functor G : C ⥤ D is a cocone in D. -/
@[simps]
def mapCocone (c : Cocone F) : Cocone (F ⋙ H) :=
(Cocones.functoriality F H).obj c
#align category_theory.functor.map_cocone CategoryTheory.Functor.mapCocone
+-/
+#print CategoryTheory.Functor.mapConeMorphism /-
/-- Given a cone morphism `c ⟶ c'`, construct a cone morphism on the mapped cones functorially. -/
def mapConeMorphism {c c' : Cone F} (f : c ⟶ c') : H.mapCone c ⟶ H.mapCone c' :=
(Cones.functoriality F H).map f
#align category_theory.functor.map_cone_morphism CategoryTheory.Functor.mapConeMorphism
+-/
+#print CategoryTheory.Functor.mapCoconeMorphism /-
/-- Given a cocone morphism `c ⟶ c'`, construct a cocone morphism on the mapped cocones
functorially. -/
def mapCoconeMorphism {c c' : Cocone F} (f : c ⟶ c') : H.mapCocone c ⟶ H.mapCocone c' :=
(Cocones.functoriality F H).map f
#align category_theory.functor.map_cocone_morphism CategoryTheory.Functor.mapCoconeMorphism
+-/
+#print CategoryTheory.Functor.mapConeInv /-
/-- If `H` is an equivalence, we invert `H.map_cone` and get a cone for `F` from a cone
for `F ⋙ H`.-/
def mapConeInv [IsEquivalence H] (c : Cone (F ⋙ H)) : Cone F :=
(Limits.Cones.functorialityEquivalence F (asEquivalence H)).inverse.obj c
#align category_theory.functor.map_cone_inv CategoryTheory.Functor.mapConeInv
+-/
+#print CategoryTheory.Functor.mapConeMapConeInv /-
/-- `map_cone` is the left inverse to `map_cone_inv`. -/
def mapConeMapConeInv {F : J ⥤ D} (H : D ⥤ C) [IsEquivalence H] (c : Cone (F ⋙ H)) :
mapCone H (mapConeInv H c) ≅ c :=
(Limits.Cones.functorialityEquivalence F (asEquivalence H)).counitIso.app c
#align category_theory.functor.map_cone_map_cone_inv CategoryTheory.Functor.mapConeMapConeInv
+-/
+#print CategoryTheory.Functor.mapConeInvMapCone /-
/-- `map_cone` is the right inverse to `map_cone_inv`. -/
def mapConeInvMapCone {F : J ⥤ D} (H : D ⥤ C) [IsEquivalence H] (c : Cone F) :
mapConeInv H (mapCone H c) ≅ c :=
(Limits.Cones.functorialityEquivalence F (asEquivalence H)).unitIso.symm.app c
#align category_theory.functor.map_cone_inv_map_cone CategoryTheory.Functor.mapConeInvMapCone
+-/
+#print CategoryTheory.Functor.mapCoconeInv /-
/-- If `H` is an equivalence, we invert `H.map_cone` and get a cone for `F` from a cone
for `F ⋙ H`.-/
def mapCoconeInv [IsEquivalence H] (c : Cocone (F ⋙ H)) : Cocone F :=
(Limits.Cocones.functorialityEquivalence F (asEquivalence H)).inverse.obj c
#align category_theory.functor.map_cocone_inv CategoryTheory.Functor.mapCoconeInv
+-/
+#print CategoryTheory.Functor.mapCoconeMapCoconeInv /-
/-- `map_cocone` is the left inverse to `map_cocone_inv`. -/
def mapCoconeMapCoconeInv {F : J ⥤ D} (H : D ⥤ C) [IsEquivalence H] (c : Cocone (F ⋙ H)) :
mapCocone H (mapCoconeInv H c) ≅ c :=
(Limits.Cocones.functorialityEquivalence F (asEquivalence H)).counitIso.app c
#align category_theory.functor.map_cocone_map_cocone_inv CategoryTheory.Functor.mapCoconeMapCoconeInv
+-/
+#print CategoryTheory.Functor.mapCoconeInvMapCocone /-
/-- `map_cocone` is the right inverse to `map_cocone_inv`. -/
def mapCoconeInvMapCocone {F : J ⥤ D} (H : D ⥤ C) [IsEquivalence H] (c : Cocone F) :
mapCoconeInv H (mapCocone H c) ≅ c :=
(Limits.Cocones.functorialityEquivalence F (asEquivalence H)).unitIso.symm.app c
#align category_theory.functor.map_cocone_inv_map_cocone CategoryTheory.Functor.mapCoconeInvMapCocone
+-/
+#print CategoryTheory.Functor.functorialityCompPostcompose /-
/-- `functoriality F _ ⋙ postcompose (whisker_left F _)` simplifies to `functoriality F _`. -/
@[simps]
def functorialityCompPostcompose {H H' : C ⥤ D} (α : H ≅ H') :
Cones.functoriality F H ⋙ Cones.postcompose (whiskerLeft F α.Hom) ≅ Cones.functoriality F H' :=
NatIso.ofComponents (fun c => Cones.ext (α.app _) (by tidy)) (by tidy)
#align category_theory.functor.functoriality_comp_postcompose CategoryTheory.Functor.functorialityCompPostcompose
+-/
+/- warning: category_theory.functor.postcompose_whisker_left_map_cone -> CategoryTheory.Functor.postcomposeWhiskerLeftMapCone is a dubious translation:
+lean 3 declaration is
+ forall {J : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u1, u4} J] {C : Type.{u5}} [_inst_3 : CategoryTheory.Category.{u2, u5} C] {D : Type.{u6}} [_inst_4 : CategoryTheory.Category.{u3, u6} D] {F : CategoryTheory.Functor.{u1, u2, u4, u5} J _inst_1 C _inst_3} {H : CategoryTheory.Functor.{u2, u3, u5, u6} C _inst_3 D _inst_4} {H' : CategoryTheory.Functor.{u2, u3, u5, u6} C _inst_3 D _inst_4} (α : CategoryTheory.Iso.{max u5 u3, max u2 u3 u5 u6} (CategoryTheory.Functor.{u2, u3, u5, u6} C _inst_3 D _inst_4) (CategoryTheory.Functor.category.{u2, u3, u5, u6} C _inst_3 D _inst_4) H H') (c : CategoryTheory.Limits.Cone.{u1, u2, u4, u5} J _inst_1 C _inst_3 F), CategoryTheory.Iso.{u3, max u4 u6 u3} (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H')) (CategoryTheory.Limits.Cone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H')) (CategoryTheory.Functor.obj.{u3, u3, max u4 u6 u3, max u4 u6 u3} (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) (CategoryTheory.Limits.Cone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H')) (CategoryTheory.Limits.Cone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H')) (CategoryTheory.Limits.Cones.postcompose.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H) (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H') (CategoryTheory.whiskerLeft.{u4, u1, u5, u2, u6, u3} J _inst_1 C _inst_3 D _inst_4 F H H' (CategoryTheory.Iso.hom.{max u5 u3, max u2 u3 u5 u6} (CategoryTheory.Functor.{u2, u3, u5, u6} C _inst_3 D _inst_4) (CategoryTheory.Functor.category.{u2, u3, u5, u6} C _inst_3 D _inst_4) H H' α))) (CategoryTheory.Functor.mapCone.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H c)) (CategoryTheory.Functor.mapCone.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H' c)
+but is expected to have type
+ forall {J : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u1, u4} J] {C : Type.{u5}} [_inst_3 : CategoryTheory.Category.{u2, u5} C] {D : Type.{u6}} [_inst_4 : CategoryTheory.Category.{u3, u6} D] {F : CategoryTheory.Functor.{u1, u2, u4, u5} J _inst_1 C _inst_3} {H : CategoryTheory.Functor.{u2, u3, u5, u6} C _inst_3 D _inst_4} {H' : CategoryTheory.Functor.{u2, u3, u5, u6} C _inst_3 D _inst_4} (α : CategoryTheory.Iso.{max u5 u3, max (max (max u5 u6) u2) u3} (CategoryTheory.Functor.{u2, u3, u5, u6} C _inst_3 D _inst_4) (CategoryTheory.Functor.category.{u2, u3, u5, u6} C _inst_3 D _inst_4) H H') (c : CategoryTheory.Limits.Cone.{u1, u2, u4, u5} J _inst_1 C _inst_3 F), CategoryTheory.Iso.{u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H')) (CategoryTheory.Limits.Cone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H')) (Prefunctor.obj.{succ u3, succ u3, max (max u4 u6) u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) (CategoryTheory.CategoryStruct.toQuiver.{u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) (CategoryTheory.Category.toCategoryStruct.{u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) (CategoryTheory.Limits.Cone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)))) (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H')) (CategoryTheory.CategoryStruct.toQuiver.{u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H')) (CategoryTheory.Category.toCategoryStruct.{u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H')) (CategoryTheory.Limits.Cone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H')))) (CategoryTheory.Functor.toPrefunctor.{u3, u3, max (max u4 u6) u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) (CategoryTheory.Limits.Cone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H')) (CategoryTheory.Limits.Cone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H')) (CategoryTheory.Limits.Cones.postcompose.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H) (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H') (CategoryTheory.whiskerLeft.{u4, u1, u5, u2, u6, u3} J _inst_1 C _inst_3 D _inst_4 F H H' (CategoryTheory.Iso.hom.{max u5 u3, max (max (max u5 u6) u2) u3} (CategoryTheory.Functor.{u2, u3, u5, u6} C _inst_3 D _inst_4) (CategoryTheory.Functor.category.{u2, u3, u5, u6} C _inst_3 D _inst_4) H H' α)))) (CategoryTheory.Functor.mapCone.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H c)) (CategoryTheory.Functor.mapCone.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H' c)
+Case conversion may be inaccurate. Consider using '#align category_theory.functor.postcompose_whisker_left_map_cone CategoryTheory.Functor.postcomposeWhiskerLeftMapConeₓ'. -/
/-- For `F : J ⥤ C`, given a cone `c : cone F`, and a natural isomorphism `α : H ≅ H'` for functors
`H H' : C ⥤ D`, the postcomposition of the cone `H.map_cone` using the isomorphism `α` is
isomorphic to the cone `H'.map_cone`.
@@ -756,6 +960,12 @@ def postcomposeWhiskerLeftMapCone {H H' : C ⥤ D} (α : H ≅ H') (c : Cone F)
(functorialityCompPostcompose α).app c
#align category_theory.functor.postcompose_whisker_left_map_cone CategoryTheory.Functor.postcomposeWhiskerLeftMapCone
+/- warning: category_theory.functor.map_cone_postcompose -> CategoryTheory.Functor.mapConePostcompose is a dubious translation:
+lean 3 declaration is
+ forall {J : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u1, u4} J] {C : Type.{u5}} [_inst_3 : CategoryTheory.Category.{u2, u5} C] {D : Type.{u6}} [_inst_4 : CategoryTheory.Category.{u3, u6} D] {F : CategoryTheory.Functor.{u1, u2, u4, u5} J _inst_1 C _inst_3} {G : CategoryTheory.Functor.{u1, u2, u4, u5} J _inst_1 C _inst_3} (H : CategoryTheory.Functor.{u2, u3, u5, u6} C _inst_3 D _inst_4) {α : Quiver.Hom.{succ (max u4 u2), max u1 u2 u4 u5} (CategoryTheory.Functor.{u1, u2, u4, u5} J _inst_1 C _inst_3) (CategoryTheory.CategoryStruct.toQuiver.{max u4 u2, max u1 u2 u4 u5} (CategoryTheory.Functor.{u1, u2, u4, u5} J _inst_1 C _inst_3) (CategoryTheory.Category.toCategoryStruct.{max u4 u2, max u1 u2 u4 u5} (CategoryTheory.Functor.{u1, u2, u4, u5} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u4, u5} J _inst_1 C _inst_3))) F G} {c : CategoryTheory.Limits.Cone.{u1, u2, u4, u5} J _inst_1 C _inst_3 F}, CategoryTheory.Iso.{u3, max u4 u6 u3} (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G H)) (CategoryTheory.Limits.Cone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G H)) (CategoryTheory.Functor.mapCone.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G H (CategoryTheory.Functor.obj.{u2, u2, max u4 u5 u2, max u4 u5 u2} (CategoryTheory.Limits.Cone.{u1, u2, u4, u5} J _inst_1 C _inst_3 F) (CategoryTheory.Limits.Cone.category.{u1, u2, u4, u5} J _inst_1 C _inst_3 F) (CategoryTheory.Limits.Cone.{u1, u2, u4, u5} J _inst_1 C _inst_3 G) (CategoryTheory.Limits.Cone.category.{u1, u2, u4, u5} J _inst_1 C _inst_3 G) (CategoryTheory.Limits.Cones.postcompose.{u1, u2, u4, u5} J _inst_1 C _inst_3 F G α) c)) (CategoryTheory.Functor.obj.{u3, u3, max u4 u6 u3, max u4 u6 u3} (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) (CategoryTheory.Limits.Cone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G H)) (CategoryTheory.Limits.Cone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G H)) (CategoryTheory.Limits.Cones.postcompose.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H) (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G H) (CategoryTheory.whiskerRight.{u4, u1, u5, u2, u6, u3} J _inst_1 C _inst_3 D _inst_4 F G α H)) (CategoryTheory.Functor.mapCone.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H c))
+but is expected to have type
+ forall {J : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u1, u4} J] {C : Type.{u5}} [_inst_3 : CategoryTheory.Category.{u2, u5} C] {D : Type.{u6}} [_inst_4 : CategoryTheory.Category.{u3, u6} D] {F : CategoryTheory.Functor.{u1, u2, u4, u5} J _inst_1 C _inst_3} {G : CategoryTheory.Functor.{u1, u2, u4, u5} J _inst_1 C _inst_3} (H : CategoryTheory.Functor.{u2, u3, u5, u6} C _inst_3 D _inst_4) {α : Quiver.Hom.{max (succ u4) (succ u2), max (max (max u4 u5) u1) u2} (CategoryTheory.Functor.{u1, u2, u4, u5} J _inst_1 C _inst_3) (CategoryTheory.CategoryStruct.toQuiver.{max u4 u2, max (max (max u4 u5) u1) u2} (CategoryTheory.Functor.{u1, u2, u4, u5} J _inst_1 C _inst_3) (CategoryTheory.Category.toCategoryStruct.{max u4 u2, max (max (max u4 u5) u1) u2} (CategoryTheory.Functor.{u1, u2, u4, u5} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u4, u5} J _inst_1 C _inst_3))) F G} {c : CategoryTheory.Limits.Cone.{u1, u2, u4, u5} J _inst_1 C _inst_3 F}, CategoryTheory.Iso.{u3, max (max u6 u3) u4} (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G H)) (CategoryTheory.Limits.Cone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G H)) (CategoryTheory.Functor.mapCone.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G H (Prefunctor.obj.{succ u2, succ u2, max (max u4 u5) u2, max (max u4 u5) u2} (CategoryTheory.Limits.Cone.{u1, u2, u4, u5} J _inst_1 C _inst_3 F) (CategoryTheory.CategoryStruct.toQuiver.{u2, max (max u4 u5) u2} (CategoryTheory.Limits.Cone.{u1, u2, u4, u5} J _inst_1 C _inst_3 F) (CategoryTheory.Category.toCategoryStruct.{u2, max (max u4 u5) u2} (CategoryTheory.Limits.Cone.{u1, u2, u4, u5} J _inst_1 C _inst_3 F) (CategoryTheory.Limits.Cone.category.{u1, u2, u4, u5} J _inst_1 C _inst_3 F))) (CategoryTheory.Limits.Cone.{u1, u2, u4, u5} J _inst_1 C _inst_3 G) (CategoryTheory.CategoryStruct.toQuiver.{u2, max (max u4 u5) u2} (CategoryTheory.Limits.Cone.{u1, u2, u4, u5} J _inst_1 C _inst_3 G) (CategoryTheory.Category.toCategoryStruct.{u2, max (max u4 u5) u2} (CategoryTheory.Limits.Cone.{u1, u2, u4, u5} J _inst_1 C _inst_3 G) (CategoryTheory.Limits.Cone.category.{u1, u2, u4, u5} J _inst_1 C _inst_3 G))) (CategoryTheory.Functor.toPrefunctor.{u2, u2, max (max u4 u5) u2, max (max u4 u5) u2} (CategoryTheory.Limits.Cone.{u1, u2, u4, u5} J _inst_1 C _inst_3 F) (CategoryTheory.Limits.Cone.category.{u1, u2, u4, u5} J _inst_1 C _inst_3 F) (CategoryTheory.Limits.Cone.{u1, u2, u4, u5} J _inst_1 C _inst_3 G) (CategoryTheory.Limits.Cone.category.{u1, u2, u4, u5} J _inst_1 C _inst_3 G) (CategoryTheory.Limits.Cones.postcompose.{u1, u2, u4, u5} J _inst_1 C _inst_3 F G α)) c)) (Prefunctor.obj.{succ u3, succ u3, max (max u4 u6) u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) (CategoryTheory.CategoryStruct.toQuiver.{u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) (CategoryTheory.Category.toCategoryStruct.{u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) (CategoryTheory.Limits.Cone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)))) (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G H)) (CategoryTheory.CategoryStruct.toQuiver.{u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G H)) (CategoryTheory.Category.toCategoryStruct.{u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G H)) (CategoryTheory.Limits.Cone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G H)))) (CategoryTheory.Functor.toPrefunctor.{u3, u3, max (max u4 u6) u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) (CategoryTheory.Limits.Cone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G H)) (CategoryTheory.Limits.Cone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G H)) (CategoryTheory.Limits.Cones.postcompose.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H) (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G H) (CategoryTheory.whiskerRight.{u4, u1, u5, u2, u6, u3} J _inst_1 C _inst_3 D _inst_4 F G α H))) (CategoryTheory.Functor.mapCone.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H c))
+Case conversion may be inaccurate. Consider using '#align category_theory.functor.map_cone_postcompose CategoryTheory.Functor.mapConePostcomposeₓ'. -/
/--
`map_cone` commutes with `postcompose`. In particular, for `F : J ⥤ C`, given a cone `c : cone F`, a
natural transformation `α : F ⟶ G` and a functor `H : C ⥤ D`, we have two obvious ways of producing
@@ -768,6 +978,12 @@ def mapConePostcompose {α : F ⟶ G} {c} :
Cones.ext (Iso.refl _) (by tidy)
#align category_theory.functor.map_cone_postcompose CategoryTheory.Functor.mapConePostcompose
+/- warning: category_theory.functor.map_cone_postcompose_equivalence_functor -> CategoryTheory.Functor.mapConePostcomposeEquivalenceFunctor is a dubious translation:
+lean 3 declaration is
+ forall {J : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u1, u4} J] {C : Type.{u5}} [_inst_3 : CategoryTheory.Category.{u2, u5} C] {D : Type.{u6}} [_inst_4 : CategoryTheory.Category.{u3, u6} D] {F : CategoryTheory.Functor.{u1, u2, u4, u5} J _inst_1 C _inst_3} {G : CategoryTheory.Functor.{u1, u2, u4, u5} J _inst_1 C _inst_3} (H : CategoryTheory.Functor.{u2, u3, u5, u6} C _inst_3 D _inst_4) {α : CategoryTheory.Iso.{max u4 u2, max u1 u2 u4 u5} (CategoryTheory.Functor.{u1, u2, u4, u5} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u4, u5} J _inst_1 C _inst_3) F G} {c : CategoryTheory.Limits.Cone.{u1, u2, u4, u5} J _inst_1 C _inst_3 F}, CategoryTheory.Iso.{u3, max u4 u6 u3} (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G H)) (CategoryTheory.Limits.Cone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G H)) (CategoryTheory.Functor.mapCone.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G H (CategoryTheory.Functor.obj.{u2, u2, max u4 u5 u2, max u4 u5 u2} (CategoryTheory.Limits.Cone.{u1, u2, u4, u5} J _inst_1 C _inst_3 F) (CategoryTheory.Limits.Cone.category.{u1, u2, u4, u5} J _inst_1 C _inst_3 F) (CategoryTheory.Limits.Cone.{u1, u2, u4, u5} J _inst_1 C _inst_3 G) (CategoryTheory.Limits.Cone.category.{u1, u2, u4, u5} J _inst_1 C _inst_3 G) (CategoryTheory.Equivalence.functor.{u2, u2, max u4 u5 u2, max u4 u5 u2} (CategoryTheory.Limits.Cone.{u1, u2, u4, u5} J _inst_1 C _inst_3 F) (CategoryTheory.Limits.Cone.category.{u1, u2, u4, u5} J _inst_1 C _inst_3 F) (CategoryTheory.Limits.Cone.{u1, u2, u4, u5} J _inst_1 C _inst_3 G) (CategoryTheory.Limits.Cone.category.{u1, u2, u4, u5} J _inst_1 C _inst_3 G) (CategoryTheory.Limits.Cones.postcomposeEquivalence.{u1, u2, u4, u5} J _inst_1 C _inst_3 F G α)) c)) (CategoryTheory.Functor.obj.{u3, u3, max u4 u6 u3, max u4 u6 u3} (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) (CategoryTheory.Limits.Cone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G H)) (CategoryTheory.Limits.Cone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G H)) (CategoryTheory.Equivalence.functor.{u3, u3, max u4 u6 u3, max u4 u6 u3} (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) (CategoryTheory.Limits.Cone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G H)) (CategoryTheory.Limits.Cone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G H)) (CategoryTheory.Limits.Cones.postcomposeEquivalence.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H) (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G H) (CategoryTheory.isoWhiskerRight.{u4, u1, u5, u2, u6, u3} J _inst_1 C _inst_3 D _inst_4 F G α H))) (CategoryTheory.Functor.mapCone.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H c))
+but is expected to have type
+ forall {J : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u1, u4} J] {C : Type.{u5}} [_inst_3 : CategoryTheory.Category.{u2, u5} C] {D : Type.{u6}} [_inst_4 : CategoryTheory.Category.{u3, u6} D] {F : CategoryTheory.Functor.{u1, u2, u4, u5} J _inst_1 C _inst_3} {G : CategoryTheory.Functor.{u1, u2, u4, u5} J _inst_1 C _inst_3} (H : CategoryTheory.Functor.{u2, u3, u5, u6} C _inst_3 D _inst_4) {α : CategoryTheory.Iso.{max u4 u2, max (max (max u4 u5) u1) u2} (CategoryTheory.Functor.{u1, u2, u4, u5} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u4, u5} J _inst_1 C _inst_3) F G} {c : CategoryTheory.Limits.Cone.{u1, u2, u4, u5} J _inst_1 C _inst_3 F}, CategoryTheory.Iso.{u3, max (max u6 u3) u4} (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G H)) (CategoryTheory.Limits.Cone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G H)) (CategoryTheory.Functor.mapCone.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G H (Prefunctor.obj.{succ u2, succ u2, max (max u4 u5) u2, max (max u4 u5) u2} (CategoryTheory.Limits.Cone.{u1, u2, u4, u5} J _inst_1 C _inst_3 F) (CategoryTheory.CategoryStruct.toQuiver.{u2, max (max u4 u5) u2} (CategoryTheory.Limits.Cone.{u1, u2, u4, u5} J _inst_1 C _inst_3 F) (CategoryTheory.Category.toCategoryStruct.{u2, max (max u4 u5) u2} (CategoryTheory.Limits.Cone.{u1, u2, u4, u5} J _inst_1 C _inst_3 F) (CategoryTheory.Limits.Cone.category.{u1, u2, u4, u5} J _inst_1 C _inst_3 F))) (CategoryTheory.Limits.Cone.{u1, u2, u4, u5} J _inst_1 C _inst_3 G) (CategoryTheory.CategoryStruct.toQuiver.{u2, max (max u4 u5) u2} (CategoryTheory.Limits.Cone.{u1, u2, u4, u5} J _inst_1 C _inst_3 G) (CategoryTheory.Category.toCategoryStruct.{u2, max (max u4 u5) u2} (CategoryTheory.Limits.Cone.{u1, u2, u4, u5} J _inst_1 C _inst_3 G) (CategoryTheory.Limits.Cone.category.{u1, u2, u4, u5} J _inst_1 C _inst_3 G))) (CategoryTheory.Functor.toPrefunctor.{u2, u2, max (max u4 u5) u2, max (max u4 u5) u2} (CategoryTheory.Limits.Cone.{u1, u2, u4, u5} J _inst_1 C _inst_3 F) (CategoryTheory.Limits.Cone.category.{u1, u2, u4, u5} J _inst_1 C _inst_3 F) (CategoryTheory.Limits.Cone.{u1, u2, u4, u5} J _inst_1 C _inst_3 G) (CategoryTheory.Limits.Cone.category.{u1, u2, u4, u5} J _inst_1 C _inst_3 G) (CategoryTheory.Equivalence.functor.{u2, u2, max (max u4 u5) u2, max (max u4 u5) u2} (CategoryTheory.Limits.Cone.{u1, u2, u4, u5} J _inst_1 C _inst_3 F) (CategoryTheory.Limits.Cone.{u1, u2, u4, u5} J _inst_1 C _inst_3 G) (CategoryTheory.Limits.Cone.category.{u1, u2, u4, u5} J _inst_1 C _inst_3 F) (CategoryTheory.Limits.Cone.category.{u1, u2, u4, u5} J _inst_1 C _inst_3 G) (CategoryTheory.Limits.Cones.postcomposeEquivalence.{u1, u2, u4, u5} J _inst_1 C _inst_3 F G α))) c)) (Prefunctor.obj.{succ u3, succ u3, max (max u4 u6) u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) (CategoryTheory.CategoryStruct.toQuiver.{u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) (CategoryTheory.Category.toCategoryStruct.{u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) (CategoryTheory.Limits.Cone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)))) (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G H)) (CategoryTheory.CategoryStruct.toQuiver.{u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G H)) (CategoryTheory.Category.toCategoryStruct.{u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G H)) (CategoryTheory.Limits.Cone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G H)))) (CategoryTheory.Functor.toPrefunctor.{u3, u3, max (max u4 u6) u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) (CategoryTheory.Limits.Cone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G H)) (CategoryTheory.Limits.Cone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G H)) (CategoryTheory.Equivalence.functor.{u3, u3, max (max u4 u6) u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) (CategoryTheory.Limits.Cone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G H)) (CategoryTheory.Limits.Cone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) (CategoryTheory.Limits.Cone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G H)) (CategoryTheory.Limits.Cones.postcomposeEquivalence.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H) (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G H) (CategoryTheory.isoWhiskerRight.{u4, u1, u5, u2, u6, u3} J _inst_1 C _inst_3 D _inst_4 F G α H)))) (CategoryTheory.Functor.mapCone.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H c))
+Case conversion may be inaccurate. Consider using '#align category_theory.functor.map_cone_postcompose_equivalence_functor CategoryTheory.Functor.mapConePostcomposeEquivalenceFunctorₓ'. -/
/-- `map_cone` commutes with `postcompose_equivalence`
-/
@[simps]
@@ -777,6 +993,7 @@ def mapConePostcomposeEquivalenceFunctor {α : F ≅ G} {c} :
Cones.ext (Iso.refl _) (by tidy)
#align category_theory.functor.map_cone_postcompose_equivalence_functor CategoryTheory.Functor.mapConePostcomposeEquivalenceFunctor
+#print CategoryTheory.Functor.functorialityCompPrecompose /-
/-- `functoriality F _ ⋙ precompose (whisker_left F _)` simplifies to `functoriality F _`. -/
@[simps]
def functorialityCompPrecompose {H H' : C ⥤ D} (α : H ≅ H') :
@@ -784,7 +1001,14 @@ def functorialityCompPrecompose {H H' : C ⥤ D} (α : H ≅ H') :
Cocones.functoriality F H' :=
NatIso.ofComponents (fun c => Cocones.ext (α.app _) (by tidy)) (by tidy)
#align category_theory.functor.functoriality_comp_precompose CategoryTheory.Functor.functorialityCompPrecompose
+-/
+/- warning: category_theory.functor.precompose_whisker_left_map_cocone -> CategoryTheory.Functor.precomposeWhiskerLeftMapCocone is a dubious translation:
+lean 3 declaration is
+ forall {J : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u1, u4} J] {C : Type.{u5}} [_inst_3 : CategoryTheory.Category.{u2, u5} C] {D : Type.{u6}} [_inst_4 : CategoryTheory.Category.{u3, u6} D] {F : CategoryTheory.Functor.{u1, u2, u4, u5} J _inst_1 C _inst_3} {H : CategoryTheory.Functor.{u2, u3, u5, u6} C _inst_3 D _inst_4} {H' : CategoryTheory.Functor.{u2, u3, u5, u6} C _inst_3 D _inst_4} (α : CategoryTheory.Iso.{max u5 u3, max u2 u3 u5 u6} (CategoryTheory.Functor.{u2, u3, u5, u6} C _inst_3 D _inst_4) (CategoryTheory.Functor.category.{u2, u3, u5, u6} C _inst_3 D _inst_4) H H') (c : CategoryTheory.Limits.Cocone.{u1, u2, u4, u5} J _inst_1 C _inst_3 F), CategoryTheory.Iso.{u3, max u4 u6 u3} (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H')) (CategoryTheory.Limits.Cocone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H')) (CategoryTheory.Functor.obj.{u3, u3, max u4 u6 u3, max u4 u6 u3} (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) (CategoryTheory.Limits.Cocone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H')) (CategoryTheory.Limits.Cocone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H')) (CategoryTheory.Limits.Cocones.precompose.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H) (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H') (CategoryTheory.whiskerLeft.{u4, u1, u5, u2, u6, u3} J _inst_1 C _inst_3 D _inst_4 F H' H (CategoryTheory.Iso.inv.{max u5 u3, max u2 u3 u5 u6} (CategoryTheory.Functor.{u2, u3, u5, u6} C _inst_3 D _inst_4) (CategoryTheory.Functor.category.{u2, u3, u5, u6} C _inst_3 D _inst_4) H H' α))) (CategoryTheory.Functor.mapCocone.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H c)) (CategoryTheory.Functor.mapCocone.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H' c)
+but is expected to have type
+ forall {J : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u1, u4} J] {C : Type.{u5}} [_inst_3 : CategoryTheory.Category.{u2, u5} C] {D : Type.{u6}} [_inst_4 : CategoryTheory.Category.{u3, u6} D] {F : CategoryTheory.Functor.{u1, u2, u4, u5} J _inst_1 C _inst_3} {H : CategoryTheory.Functor.{u2, u3, u5, u6} C _inst_3 D _inst_4} {H' : CategoryTheory.Functor.{u2, u3, u5, u6} C _inst_3 D _inst_4} (α : CategoryTheory.Iso.{max u5 u3, max (max (max u5 u6) u2) u3} (CategoryTheory.Functor.{u2, u3, u5, u6} C _inst_3 D _inst_4) (CategoryTheory.Functor.category.{u2, u3, u5, u6} C _inst_3 D _inst_4) H H') (c : CategoryTheory.Limits.Cocone.{u1, u2, u4, u5} J _inst_1 C _inst_3 F), CategoryTheory.Iso.{u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H')) (CategoryTheory.Limits.Cocone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H')) (Prefunctor.obj.{succ u3, succ u3, max (max u4 u6) u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) (CategoryTheory.CategoryStruct.toQuiver.{u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) (CategoryTheory.Category.toCategoryStruct.{u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) (CategoryTheory.Limits.Cocone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)))) (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H')) (CategoryTheory.CategoryStruct.toQuiver.{u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H')) (CategoryTheory.Category.toCategoryStruct.{u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H')) (CategoryTheory.Limits.Cocone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H')))) (CategoryTheory.Functor.toPrefunctor.{u3, u3, max (max u4 u6) u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) (CategoryTheory.Limits.Cocone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H')) (CategoryTheory.Limits.Cocone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H')) (CategoryTheory.Limits.Cocones.precompose.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H) (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H') (CategoryTheory.whiskerLeft.{u4, u1, u5, u2, u6, u3} J _inst_1 C _inst_3 D _inst_4 F H' H (CategoryTheory.Iso.inv.{max u5 u3, max (max (max u5 u6) u2) u3} (CategoryTheory.Functor.{u2, u3, u5, u6} C _inst_3 D _inst_4) (CategoryTheory.Functor.category.{u2, u3, u5, u6} C _inst_3 D _inst_4) H H' α)))) (CategoryTheory.Functor.mapCocone.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H c)) (CategoryTheory.Functor.mapCocone.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H' c)
+Case conversion may be inaccurate. Consider using '#align category_theory.functor.precompose_whisker_left_map_cocone CategoryTheory.Functor.precomposeWhiskerLeftMapCoconeₓ'. -/
/--
For `F : J ⥤ C`, given a cocone `c : cocone F`, and a natural isomorphism `α : H ≅ H'` for functors
`H H' : C ⥤ D`, the precomposition of the cocone `H.map_cocone` using the isomorphism `α` is
@@ -796,6 +1020,12 @@ def precomposeWhiskerLeftMapCocone {H H' : C ⥤ D} (α : H ≅ H') (c : Cocone
(functorialityCompPrecompose α).app c
#align category_theory.functor.precompose_whisker_left_map_cocone CategoryTheory.Functor.precomposeWhiskerLeftMapCocone
+/- warning: category_theory.functor.map_cocone_precompose -> CategoryTheory.Functor.mapCoconePrecompose is a dubious translation:
+lean 3 declaration is
+ forall {J : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u1, u4} J] {C : Type.{u5}} [_inst_3 : CategoryTheory.Category.{u2, u5} C] {D : Type.{u6}} [_inst_4 : CategoryTheory.Category.{u3, u6} D] {F : CategoryTheory.Functor.{u1, u2, u4, u5} J _inst_1 C _inst_3} {G : CategoryTheory.Functor.{u1, u2, u4, u5} J _inst_1 C _inst_3} (H : CategoryTheory.Functor.{u2, u3, u5, u6} C _inst_3 D _inst_4) {α : Quiver.Hom.{succ (max u4 u2), max u1 u2 u4 u5} (CategoryTheory.Functor.{u1, u2, u4, u5} J _inst_1 C _inst_3) (CategoryTheory.CategoryStruct.toQuiver.{max u4 u2, max u1 u2 u4 u5} (CategoryTheory.Functor.{u1, u2, u4, u5} J _inst_1 C _inst_3) (CategoryTheory.Category.toCategoryStruct.{max u4 u2, max u1 u2 u4 u5} (CategoryTheory.Functor.{u1, u2, u4, u5} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u4, u5} J _inst_1 C _inst_3))) F G} {c : CategoryTheory.Limits.Cocone.{u1, u2, u4, u5} J _inst_1 C _inst_3 G}, CategoryTheory.Iso.{u3, max u4 u6 u3} (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) (CategoryTheory.Limits.Cocone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) (CategoryTheory.Functor.mapCocone.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H (CategoryTheory.Functor.obj.{u2, u2, max u4 u5 u2, max u4 u5 u2} (CategoryTheory.Limits.Cocone.{u1, u2, u4, u5} J _inst_1 C _inst_3 G) (CategoryTheory.Limits.Cocone.category.{u1, u2, u4, u5} J _inst_1 C _inst_3 G) (CategoryTheory.Limits.Cocone.{u1, u2, u4, u5} J _inst_1 C _inst_3 F) (CategoryTheory.Limits.Cocone.category.{u1, u2, u4, u5} J _inst_1 C _inst_3 F) (CategoryTheory.Limits.Cocones.precompose.{u1, u2, u4, u5} J _inst_1 C _inst_3 G F α) c)) (CategoryTheory.Functor.obj.{u3, u3, max u4 u6 u3, max u4 u6 u3} (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G H)) (CategoryTheory.Limits.Cocone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G H)) (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) (CategoryTheory.Limits.Cocone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) (CategoryTheory.Limits.Cocones.precompose.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G H) (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H) (CategoryTheory.whiskerRight.{u4, u1, u5, u2, u6, u3} J _inst_1 C _inst_3 D _inst_4 F G α H)) (CategoryTheory.Functor.mapCocone.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G H c))
+but is expected to have type
+ forall {J : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u1, u4} J] {C : Type.{u5}} [_inst_3 : CategoryTheory.Category.{u2, u5} C] {D : Type.{u6}} [_inst_4 : CategoryTheory.Category.{u3, u6} D] {F : CategoryTheory.Functor.{u1, u2, u4, u5} J _inst_1 C _inst_3} {G : CategoryTheory.Functor.{u1, u2, u4, u5} J _inst_1 C _inst_3} (H : CategoryTheory.Functor.{u2, u3, u5, u6} C _inst_3 D _inst_4) {α : Quiver.Hom.{max (succ u4) (succ u2), max (max (max u4 u5) u1) u2} (CategoryTheory.Functor.{u1, u2, u4, u5} J _inst_1 C _inst_3) (CategoryTheory.CategoryStruct.toQuiver.{max u4 u2, max (max (max u4 u5) u1) u2} (CategoryTheory.Functor.{u1, u2, u4, u5} J _inst_1 C _inst_3) (CategoryTheory.Category.toCategoryStruct.{max u4 u2, max (max (max u4 u5) u1) u2} (CategoryTheory.Functor.{u1, u2, u4, u5} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u4, u5} J _inst_1 C _inst_3))) F G} {c : CategoryTheory.Limits.Cocone.{u1, u2, u4, u5} J _inst_1 C _inst_3 G}, CategoryTheory.Iso.{u3, max (max u6 u3) u4} (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) (CategoryTheory.Limits.Cocone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) (CategoryTheory.Functor.mapCocone.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H (Prefunctor.obj.{succ u2, succ u2, max (max u4 u5) u2, max (max u4 u5) u2} (CategoryTheory.Limits.Cocone.{u1, u2, u4, u5} J _inst_1 C _inst_3 G) (CategoryTheory.CategoryStruct.toQuiver.{u2, max (max u4 u5) u2} (CategoryTheory.Limits.Cocone.{u1, u2, u4, u5} J _inst_1 C _inst_3 G) (CategoryTheory.Category.toCategoryStruct.{u2, max (max u4 u5) u2} (CategoryTheory.Limits.Cocone.{u1, u2, u4, u5} J _inst_1 C _inst_3 G) (CategoryTheory.Limits.Cocone.category.{u1, u2, u4, u5} J _inst_1 C _inst_3 G))) (CategoryTheory.Limits.Cocone.{u1, u2, u4, u5} J _inst_1 C _inst_3 F) (CategoryTheory.CategoryStruct.toQuiver.{u2, max (max u4 u5) u2} (CategoryTheory.Limits.Cocone.{u1, u2, u4, u5} J _inst_1 C _inst_3 F) (CategoryTheory.Category.toCategoryStruct.{u2, max (max u4 u5) u2} (CategoryTheory.Limits.Cocone.{u1, u2, u4, u5} J _inst_1 C _inst_3 F) (CategoryTheory.Limits.Cocone.category.{u1, u2, u4, u5} J _inst_1 C _inst_3 F))) (CategoryTheory.Functor.toPrefunctor.{u2, u2, max (max u4 u5) u2, max (max u4 u5) u2} (CategoryTheory.Limits.Cocone.{u1, u2, u4, u5} J _inst_1 C _inst_3 G) (CategoryTheory.Limits.Cocone.category.{u1, u2, u4, u5} J _inst_1 C _inst_3 G) (CategoryTheory.Limits.Cocone.{u1, u2, u4, u5} J _inst_1 C _inst_3 F) (CategoryTheory.Limits.Cocone.category.{u1, u2, u4, u5} J _inst_1 C _inst_3 F) (CategoryTheory.Limits.Cocones.precompose.{u1, u2, u4, u5} J _inst_1 C _inst_3 G F α)) c)) (Prefunctor.obj.{succ u3, succ u3, max (max u4 u6) u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G H)) (CategoryTheory.CategoryStruct.toQuiver.{u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G H)) (CategoryTheory.Category.toCategoryStruct.{u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G H)) (CategoryTheory.Limits.Cocone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G H)))) (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) (CategoryTheory.CategoryStruct.toQuiver.{u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) (CategoryTheory.Category.toCategoryStruct.{u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) (CategoryTheory.Limits.Cocone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)))) (CategoryTheory.Functor.toPrefunctor.{u3, u3, max (max u4 u6) u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G H)) (CategoryTheory.Limits.Cocone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G H)) (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) (CategoryTheory.Limits.Cocone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) (CategoryTheory.Limits.Cocones.precompose.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G H) (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H) (CategoryTheory.whiskerRight.{u4, u1, u5, u2, u6, u3} J _inst_1 C _inst_3 D _inst_4 F G α H))) (CategoryTheory.Functor.mapCocone.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G H c))
+Case conversion may be inaccurate. Consider using '#align category_theory.functor.map_cocone_precompose CategoryTheory.Functor.mapCoconePrecomposeₓ'. -/
/-- `map_cocone` commutes with `precompose`. In particular, for `F : J ⥤ C`, given a cocone
`c : cocone F`, a natural transformation `α : F ⟶ G` and a functor `H : C ⥤ D`, we have two obvious
ways of producing a cocone over `G ⋙ H`, and they are both isomorphic.
@@ -807,6 +1037,12 @@ def mapCoconePrecompose {α : F ⟶ G} {c} :
Cocones.ext (Iso.refl _) (by tidy)
#align category_theory.functor.map_cocone_precompose CategoryTheory.Functor.mapCoconePrecompose
+/- warning: category_theory.functor.map_cocone_precompose_equivalence_functor -> CategoryTheory.Functor.mapCoconePrecomposeEquivalenceFunctor is a dubious translation:
+lean 3 declaration is
+ forall {J : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u1, u4} J] {C : Type.{u5}} [_inst_3 : CategoryTheory.Category.{u2, u5} C] {D : Type.{u6}} [_inst_4 : CategoryTheory.Category.{u3, u6} D] {F : CategoryTheory.Functor.{u1, u2, u4, u5} J _inst_1 C _inst_3} {G : CategoryTheory.Functor.{u1, u2, u4, u5} J _inst_1 C _inst_3} (H : CategoryTheory.Functor.{u2, u3, u5, u6} C _inst_3 D _inst_4) {α : CategoryTheory.Iso.{max u4 u2, max u1 u2 u4 u5} (CategoryTheory.Functor.{u1, u2, u4, u5} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u4, u5} J _inst_1 C _inst_3) F G} {c : CategoryTheory.Limits.Cocone.{u1, u2, u4, u5} J _inst_1 C _inst_3 G}, CategoryTheory.Iso.{u3, max u4 u6 u3} (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) (CategoryTheory.Limits.Cocone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) (CategoryTheory.Functor.mapCocone.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H (CategoryTheory.Functor.obj.{u2, u2, max u4 u5 u2, max u4 u5 u2} (CategoryTheory.Limits.Cocone.{u1, u2, u4, u5} J _inst_1 C _inst_3 G) (CategoryTheory.Limits.Cocone.category.{u1, u2, u4, u5} J _inst_1 C _inst_3 G) (CategoryTheory.Limits.Cocone.{u1, u2, u4, u5} J _inst_1 C _inst_3 F) (CategoryTheory.Limits.Cocone.category.{u1, u2, u4, u5} J _inst_1 C _inst_3 F) (CategoryTheory.Equivalence.functor.{u2, u2, max u4 u5 u2, max u4 u5 u2} (CategoryTheory.Limits.Cocone.{u1, u2, u4, u5} J _inst_1 C _inst_3 G) (CategoryTheory.Limits.Cocone.category.{u1, u2, u4, u5} J _inst_1 C _inst_3 G) (CategoryTheory.Limits.Cocone.{u1, u2, u4, u5} J _inst_1 C _inst_3 F) (CategoryTheory.Limits.Cocone.category.{u1, u2, u4, u5} J _inst_1 C _inst_3 F) (CategoryTheory.Limits.Cocones.precomposeEquivalence.{u1, u2, u4, u5} J _inst_1 C _inst_3 G F α)) c)) (CategoryTheory.Functor.obj.{u3, u3, max u4 u6 u3, max u4 u6 u3} (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G H)) (CategoryTheory.Limits.Cocone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G H)) (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) (CategoryTheory.Limits.Cocone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) (CategoryTheory.Equivalence.functor.{u3, u3, max u4 u6 u3, max u4 u6 u3} (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G H)) (CategoryTheory.Limits.Cocone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G H)) (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) (CategoryTheory.Limits.Cocone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) (CategoryTheory.Limits.Cocones.precomposeEquivalence.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G H) (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H) (CategoryTheory.isoWhiskerRight.{u4, u1, u5, u2, u6, u3} J _inst_1 C _inst_3 D _inst_4 F G α H))) (CategoryTheory.Functor.mapCocone.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G H c))
+but is expected to have type
+ forall {J : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u1, u4} J] {C : Type.{u5}} [_inst_3 : CategoryTheory.Category.{u2, u5} C] {D : Type.{u6}} [_inst_4 : CategoryTheory.Category.{u3, u6} D] {F : CategoryTheory.Functor.{u1, u2, u4, u5} J _inst_1 C _inst_3} {G : CategoryTheory.Functor.{u1, u2, u4, u5} J _inst_1 C _inst_3} (H : CategoryTheory.Functor.{u2, u3, u5, u6} C _inst_3 D _inst_4) {α : CategoryTheory.Iso.{max u4 u2, max (max (max u4 u5) u1) u2} (CategoryTheory.Functor.{u1, u2, u4, u5} J _inst_1 C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u4, u5} J _inst_1 C _inst_3) F G} {c : CategoryTheory.Limits.Cocone.{u1, u2, u4, u5} J _inst_1 C _inst_3 G}, CategoryTheory.Iso.{u3, max (max u6 u3) u4} (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) (CategoryTheory.Limits.Cocone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) (CategoryTheory.Functor.mapCocone.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H (Prefunctor.obj.{succ u2, succ u2, max (max u4 u5) u2, max (max u4 u5) u2} (CategoryTheory.Limits.Cocone.{u1, u2, u4, u5} J _inst_1 C _inst_3 G) (CategoryTheory.CategoryStruct.toQuiver.{u2, max (max u4 u5) u2} (CategoryTheory.Limits.Cocone.{u1, u2, u4, u5} J _inst_1 C _inst_3 G) (CategoryTheory.Category.toCategoryStruct.{u2, max (max u4 u5) u2} (CategoryTheory.Limits.Cocone.{u1, u2, u4, u5} J _inst_1 C _inst_3 G) (CategoryTheory.Limits.Cocone.category.{u1, u2, u4, u5} J _inst_1 C _inst_3 G))) (CategoryTheory.Limits.Cocone.{u1, u2, u4, u5} J _inst_1 C _inst_3 F) (CategoryTheory.CategoryStruct.toQuiver.{u2, max (max u4 u5) u2} (CategoryTheory.Limits.Cocone.{u1, u2, u4, u5} J _inst_1 C _inst_3 F) (CategoryTheory.Category.toCategoryStruct.{u2, max (max u4 u5) u2} (CategoryTheory.Limits.Cocone.{u1, u2, u4, u5} J _inst_1 C _inst_3 F) (CategoryTheory.Limits.Cocone.category.{u1, u2, u4, u5} J _inst_1 C _inst_3 F))) (CategoryTheory.Functor.toPrefunctor.{u2, u2, max (max u4 u5) u2, max (max u4 u5) u2} (CategoryTheory.Limits.Cocone.{u1, u2, u4, u5} J _inst_1 C _inst_3 G) (CategoryTheory.Limits.Cocone.category.{u1, u2, u4, u5} J _inst_1 C _inst_3 G) (CategoryTheory.Limits.Cocone.{u1, u2, u4, u5} J _inst_1 C _inst_3 F) (CategoryTheory.Limits.Cocone.category.{u1, u2, u4, u5} J _inst_1 C _inst_3 F) (CategoryTheory.Equivalence.functor.{u2, u2, max (max u4 u5) u2, max (max u4 u5) u2} (CategoryTheory.Limits.Cocone.{u1, u2, u4, u5} J _inst_1 C _inst_3 G) (CategoryTheory.Limits.Cocone.{u1, u2, u4, u5} J _inst_1 C _inst_3 F) (CategoryTheory.Limits.Cocone.category.{u1, u2, u4, u5} J _inst_1 C _inst_3 G) (CategoryTheory.Limits.Cocone.category.{u1, u2, u4, u5} J _inst_1 C _inst_3 F) (CategoryTheory.Limits.Cocones.precomposeEquivalence.{u1, u2, u4, u5} J _inst_1 C _inst_3 G F α))) c)) (Prefunctor.obj.{succ u3, succ u3, max (max u4 u6) u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G H)) (CategoryTheory.CategoryStruct.toQuiver.{u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G H)) (CategoryTheory.Category.toCategoryStruct.{u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G H)) (CategoryTheory.Limits.Cocone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G H)))) (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) (CategoryTheory.CategoryStruct.toQuiver.{u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) (CategoryTheory.Category.toCategoryStruct.{u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) (CategoryTheory.Limits.Cocone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)))) (CategoryTheory.Functor.toPrefunctor.{u3, u3, max (max u4 u6) u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G H)) (CategoryTheory.Limits.Cocone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G H)) (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) (CategoryTheory.Limits.Cocone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) (CategoryTheory.Equivalence.functor.{u3, u3, max (max u4 u6) u3, max (max u4 u6) u3} (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G H)) (CategoryTheory.Limits.Cocone.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) (CategoryTheory.Limits.Cocone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G H)) (CategoryTheory.Limits.Cocone.category.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H)) (CategoryTheory.Limits.Cocones.precomposeEquivalence.{u1, u3, u4, u6} J _inst_1 D _inst_4 (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G H) (CategoryTheory.Functor.comp.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 F H) (CategoryTheory.isoWhiskerRight.{u4, u1, u5, u2, u6, u3} J _inst_1 C _inst_3 D _inst_4 F G α H)))) (CategoryTheory.Functor.mapCocone.{u1, u2, u3, u4, u5, u6} J _inst_1 C _inst_3 D _inst_4 G H c))
+Case conversion may be inaccurate. Consider using '#align category_theory.functor.map_cocone_precompose_equivalence_functor CategoryTheory.Functor.mapCoconePrecomposeEquivalenceFunctorₓ'. -/
/-- `map_cocone` commutes with `precompose_equivalence`
-/
@[simps]
@@ -816,13 +1052,16 @@ def mapCoconePrecomposeEquivalenceFunctor {α : F ≅ G} {c} :
Cocones.ext (Iso.refl _) (by tidy)
#align category_theory.functor.map_cocone_precompose_equivalence_functor CategoryTheory.Functor.mapCoconePrecomposeEquivalenceFunctor
+#print CategoryTheory.Functor.mapConeWhisker /-
/-- `map_cone` commutes with `whisker`
-/
@[simps]
def mapConeWhisker {E : K ⥤ J} {c : Cone F} : H.mapCone (c.whisker E) ≅ (H.mapCone c).whisker E :=
Cones.ext (Iso.refl _) (by tidy)
#align category_theory.functor.map_cone_whisker CategoryTheory.Functor.mapConeWhisker
+-/
+#print CategoryTheory.Functor.mapCoconeWhisker /-
/-- `map_cocone` commutes with `whisker`
-/
@[simps]
@@ -830,6 +1069,7 @@ def mapCoconeWhisker {E : K ⥤ J} {c : Cocone F} :
H.mapCocone (c.whisker E) ≅ (H.mapCocone c).whisker E :=
Cocones.ext (Iso.refl _) (by tidy)
#align category_theory.functor.map_cocone_whisker CategoryTheory.Functor.mapCoconeWhisker
+-/
end Functor
@@ -841,20 +1081,25 @@ section
variable {F : J ⥤ C}
+#print CategoryTheory.Limits.Cocone.op /-
/-- Change a `cocone F` into a `cone F.op`. -/
@[simps]
def Cocone.op (c : Cocone F) : Cone F.op where
x := op c.x
π := NatTrans.op c.ι
#align category_theory.limits.cocone.op CategoryTheory.Limits.Cocone.op
+-/
+#print CategoryTheory.Limits.Cone.op /-
/-- Change a `cone F` into a `cocone F.op`. -/
@[simps]
def Cone.op (c : Cone F) : Cocone F.op where
x := op c.x
ι := NatTrans.op c.π
#align category_theory.limits.cone.op CategoryTheory.Limits.Cone.op
+-/
+#print CategoryTheory.Limits.Cocone.unop /-
/-- Change a `cocone F.op` into a `cone F`. -/
@[simps]
def Cocone.unop (c : Cocone F.op) : Cone F
@@ -862,7 +1107,9 @@ def Cocone.unop (c : Cocone F.op) : Cone F
x := unop c.x
π := NatTrans.removeOp c.ι
#align category_theory.limits.cocone.unop CategoryTheory.Limits.Cocone.unop
+-/
+#print CategoryTheory.Limits.Cone.unop /-
/-- Change a `cone F.op` into a `cocone F`. -/
@[simps]
def Cone.unop (c : Cone F.op) : Cocone F
@@ -870,9 +1117,16 @@ def Cone.unop (c : Cone F.op) : Cocone F
x := unop c.x
ι := NatTrans.removeOp c.π
#align category_theory.limits.cone.unop CategoryTheory.Limits.Cone.unop
+-/
variable (F)
+/- warning: category_theory.limits.cocone_equivalence_op_cone_op -> CategoryTheory.Limits.coconeEquivalenceOpConeOp is a dubious translation:
+lean 3 declaration is
+ forall {J : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} J] {C : Type.{u4}} [_inst_3 : CategoryTheory.Category.{u2, u4} C] (F : CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3), CategoryTheory.Equivalence.{u2, u2, max u3 u4 u2, max u3 u4 u2} (CategoryTheory.Limits.Cocone.{u1, u2, u3, u4} J _inst_1 C _inst_3 F) (CategoryTheory.Limits.Cocone.category.{u1, u2, u3, u4} J _inst_1 C _inst_3 F) (Opposite.{succ (max u3 u4 u2)} (CategoryTheory.Limits.Cone.{u1, u2, u3, u4} (Opposite.{succ u3} J) (CategoryTheory.Category.opposite.{u1, u3} J _inst_1) (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3) (CategoryTheory.Functor.op.{u1, u2, u3, u4} J _inst_1 C _inst_3 F))) (CategoryTheory.Category.opposite.{u2, max u3 u4 u2} (CategoryTheory.Limits.Cone.{u1, u2, u3, u4} (Opposite.{succ u3} J) (CategoryTheory.Category.opposite.{u1, u3} J _inst_1) (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3) (CategoryTheory.Functor.op.{u1, u2, u3, u4} J _inst_1 C _inst_3 F)) (CategoryTheory.Limits.Cone.category.{u1, u2, u3, u4} (Opposite.{succ u3} J) (CategoryTheory.Category.opposite.{u1, u3} J _inst_1) (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3) (CategoryTheory.Functor.op.{u1, u2, u3, u4} J _inst_1 C _inst_3 F)))
+but is expected to have type
+ forall {J : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} J] {C : Type.{u4}} [_inst_3 : CategoryTheory.Category.{u2, u4} C] (F : CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 C _inst_3), CategoryTheory.Equivalence.{u2, u2, max (max u4 u3) u2, max (max u4 u3) u2} (CategoryTheory.Limits.Cocone.{u1, u2, u3, u4} J _inst_1 C _inst_3 F) (Opposite.{succ (max (max u4 u3) u2)} (CategoryTheory.Limits.Cone.{u1, u2, u3, u4} (Opposite.{succ u3} J) (CategoryTheory.Category.opposite.{u1, u3} J _inst_1) (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3) (CategoryTheory.Functor.op.{u1, u2, u3, u4} J _inst_1 C _inst_3 F))) (CategoryTheory.Limits.Cocone.category.{u1, u2, u3, u4} J _inst_1 C _inst_3 F) (CategoryTheory.Category.opposite.{u2, max (max u3 u4) u2} (CategoryTheory.Limits.Cone.{u1, u2, u3, u4} (Opposite.{succ u3} J) (CategoryTheory.Category.opposite.{u1, u3} J _inst_1) (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3) (CategoryTheory.Functor.op.{u1, u2, u3, u4} J _inst_1 C _inst_3 F)) (CategoryTheory.Limits.Cone.category.{u1, u2, u3, u4} (Opposite.{succ u3} J) (CategoryTheory.Category.opposite.{u1, u3} J _inst_1) (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3) (CategoryTheory.Functor.op.{u1, u2, u3, u4} J _inst_1 C _inst_3 F)))
+Case conversion may be inaccurate. Consider using '#align category_theory.limits.cocone_equivalence_op_cone_op CategoryTheory.Limits.coconeEquivalenceOpConeOpₓ'. -/
/-- The category of cocones on `F`
is equivalent to the opposite category of
the category of cones on the opposite of `F`.
@@ -938,6 +1192,7 @@ section
variable {F : J ⥤ Cᵒᵖ}
+#print CategoryTheory.Limits.coneOfCoconeLeftOp /-
-- Here and below we only automatically generate the `@[simp]` lemma for the `X` field,
-- as we can write a simpler `rfl` lemma for the components of the natural transformation by hand.
/-- Change a cocone on `F.left_op : Jᵒᵖ ⥤ C` to a cocone on `F : J ⥤ Cᵒᵖ`. -/
@@ -949,7 +1204,9 @@ def coneOfCoconeLeftOp (c : Cocone F.leftOp) : Cone F
x := op c.x
π := NatTrans.removeLeftOp c.ι
#align category_theory.limits.cone_of_cocone_left_op CategoryTheory.Limits.coneOfCoconeLeftOp
+-/
+#print CategoryTheory.Limits.coconeLeftOpOfCone /-
/-- Change a cone on `F : J ⥤ Cᵒᵖ` to a cocone on `F.left_op : Jᵒᵖ ⥤ C`. -/
@[simps (config :=
{ rhsMd := semireducible
@@ -959,7 +1216,9 @@ def coconeLeftOpOfCone (c : Cone F) : Cocone F.leftOp
x := unop c.x
ι := NatTrans.leftOp c.π
#align category_theory.limits.cocone_left_op_of_cone CategoryTheory.Limits.coconeLeftOpOfCone
+-/
+#print CategoryTheory.Limits.coconeOfConeLeftOp /-
/- When trying use `@[simps]` to generate the `ι_app` field of this definition, `@[simps]` tries to
reduce the RHS using `expr.dsimp` and `expr.simp`, but for some reason the expression is not
being simplified properly. -/
@@ -970,7 +1229,14 @@ def coconeOfConeLeftOp (c : Cone F.leftOp) : Cocone F
x := op c.x
ι := NatTrans.removeLeftOp c.π
#align category_theory.limits.cocone_of_cone_left_op CategoryTheory.Limits.coconeOfConeLeftOp
+-/
+/- warning: category_theory.limits.cocone_of_cone_left_op_ι_app -> CategoryTheory.Limits.coconeOfConeLeftOp_ι_app is a dubious translation:
+lean 3 declaration is
+ forall {J : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} J] {C : Type.{u4}} [_inst_3 : CategoryTheory.Category.{u2, u4} C] {F : CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3)} (c : CategoryTheory.Limits.Cone.{u1, u2, u3, u4} (Opposite.{succ u3} J) (CategoryTheory.Category.opposite.{u1, u3} J _inst_1) C _inst_3 (CategoryTheory.Functor.leftOp.{u1, u2, u3, u4} J _inst_1 C _inst_3 F)) (j : J), Eq.{succ u2} (Quiver.Hom.{succ u2, u4} (Opposite.{succ u4} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} (Opposite.{succ u4} C) (CategoryTheory.Category.toCategoryStruct.{u2, u4} (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3))) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} J _inst_1 (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3) F j) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} J _inst_1 (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3) (CategoryTheory.Functor.obj.{u2, max u3 u2, u4, max u1 u2 u3 u4} (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3) (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3)) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3)) (CategoryTheory.Functor.const.{u1, u2, u3, u4} J _inst_1 (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3)) (CategoryTheory.Limits.Cocone.x.{u1, u2, u3, u4} J _inst_1 (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3) F (CategoryTheory.Limits.coconeOfConeLeftOp.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c))) j)) (CategoryTheory.NatTrans.app.{u1, u2, u3, u4} J _inst_1 (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3) F (CategoryTheory.Functor.obj.{u2, max u3 u2, u4, max u1 u2 u3 u4} (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3) (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3)) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3)) (CategoryTheory.Functor.const.{u1, u2, u3, u4} J _inst_1 (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3)) (CategoryTheory.Limits.Cocone.x.{u1, u2, u3, u4} J _inst_1 (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3) F (CategoryTheory.Limits.coconeOfConeLeftOp.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c))) (CategoryTheory.Limits.Cocone.ι.{u1, u2, u3, u4} J _inst_1 (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3) F (CategoryTheory.Limits.coconeOfConeLeftOp.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c)) j) (Quiver.Hom.op.{u4, succ u2} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} (Opposite.{succ u3} J) (CategoryTheory.Category.opposite.{u1, u3} J _inst_1) C _inst_3 (CategoryTheory.Functor.obj.{u2, max u3 u2, u4, max u1 u2 u3 u4} C _inst_3 (CategoryTheory.Functor.{u1, u2, u3, u4} (Opposite.{succ u3} J) (CategoryTheory.Category.opposite.{u1, u3} J _inst_1) C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} (Opposite.{succ u3} J) (CategoryTheory.Category.opposite.{u1, u3} J _inst_1) C _inst_3) (CategoryTheory.Functor.const.{u1, u2, u3, u4} (Opposite.{succ u3} J) (CategoryTheory.Category.opposite.{u1, u3} J _inst_1) C _inst_3) (CategoryTheory.Limits.Cone.x.{u1, u2, u3, u4} (Opposite.{succ u3} J) (CategoryTheory.Category.opposite.{u1, u3} J _inst_1) C _inst_3 (CategoryTheory.Functor.leftOp.{u1, u2, u3, u4} J _inst_1 C _inst_3 F) c)) (Opposite.op.{succ u3} J j)) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} (Opposite.{succ u3} J) (CategoryTheory.Category.opposite.{u1, u3} J _inst_1) C _inst_3 (CategoryTheory.Functor.leftOp.{u1, u2, u3, u4} J _inst_1 C _inst_3 F) (Opposite.op.{succ u3} J j)) (CategoryTheory.NatTrans.app.{u1, u2, u3, u4} (Opposite.{succ u3} J) (CategoryTheory.Category.opposite.{u1, u3} J _inst_1) C _inst_3 (CategoryTheory.Functor.obj.{u2, max u3 u2, u4, max u1 u2 u3 u4} C _inst_3 (CategoryTheory.Functor.{u1, u2, u3, u4} (Opposite.{succ u3} J) (CategoryTheory.Category.opposite.{u1, u3} J _inst_1) C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} (Opposite.{succ u3} J) (CategoryTheory.Category.opposite.{u1, u3} J _inst_1) C _inst_3) (CategoryTheory.Functor.const.{u1, u2, u3, u4} (Opposite.{succ u3} J) (CategoryTheory.Category.opposite.{u1, u3} J _inst_1) C _inst_3) (CategoryTheory.Limits.Cone.x.{u1, u2, u3, u4} (Opposite.{succ u3} J) (CategoryTheory.Category.opposite.{u1, u3} J _inst_1) C _inst_3 (CategoryTheory.Functor.leftOp.{u1, u2, u3, u4} J _inst_1 C _inst_3 F) c)) (CategoryTheory.Functor.leftOp.{u1, u2, u3, u4} J _inst_1 C _inst_3 F) (CategoryTheory.Limits.Cone.π.{u1, u2, u3, u4} (Opposite.{succ u3} J) (CategoryTheory.Category.opposite.{u1, u3} J _inst_1) C _inst_3 (CategoryTheory.Functor.leftOp.{u1, u2, u3, u4} J _inst_1 C _inst_3 F) c) (Opposite.op.{succ u3} J j)))
+but is expected to have type
+ forall {J : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} J] {C : Type.{u4}} [_inst_3 : CategoryTheory.Category.{u2, u4} C] {F : CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3)} (c : CategoryTheory.Limits.Cone.{u1, u2, u3, u4} (Opposite.{succ u3} J) (CategoryTheory.Category.opposite.{u1, u3} J _inst_1) C _inst_3 (CategoryTheory.Functor.leftOp.{u1, u2, u3, u4} J _inst_1 C _inst_3 F)) (j : J), Eq.{succ u2} (Quiver.Hom.{succ u2, u4} (Opposite.{succ u4} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} (Opposite.{succ u4} C) (CategoryTheory.Category.toCategoryStruct.{u2, u4} (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3))) (Prefunctor.obj.{succ u1, succ u2, u3, u4} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} J (CategoryTheory.Category.toCategoryStruct.{u1, u3} J _inst_1)) (Opposite.{succ u4} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} (Opposite.{succ u4} C) (CategoryTheory.Category.toCategoryStruct.{u2, u4} (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3))) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} J _inst_1 (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3) F) j) (Prefunctor.obj.{succ u1, succ u2, u3, u4} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} J (CategoryTheory.Category.toCategoryStruct.{u1, u3} J _inst_1)) (Opposite.{succ u4} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} (Opposite.{succ u4} C) (CategoryTheory.Category.toCategoryStruct.{u2, u4} (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3))) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} J _inst_1 (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3) (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u4, max (max (max u3 u1) u2) u4} (Opposite.{succ u4} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} (Opposite.{succ u4} C) (CategoryTheory.Category.toCategoryStruct.{u2, u4} (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3))) (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3)) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max (max (max u3 u1) u4) u2} (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3)) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max (max (max u3 u1) u4) u2} (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3)) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3)))) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u4, max (max (max u3 u1) u4) u2} (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3) (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3)) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3)) (CategoryTheory.Functor.const.{u1, u2, u3, u4} J _inst_1 (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3))) (CategoryTheory.Limits.Cocone.pt.{u1, u2, u3, u4} J _inst_1 (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3) F (CategoryTheory.Limits.coconeOfConeLeftOp.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c)))) j)) (CategoryTheory.NatTrans.app.{u1, u2, u3, u4} J _inst_1 (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3) F (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u4, max (max (max u3 u1) u2) u4} (Opposite.{succ u4} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} (Opposite.{succ u4} C) (CategoryTheory.Category.toCategoryStruct.{u2, u4} (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3))) (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3)) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max (max (max u3 u1) u4) u2} (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3)) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max (max (max u3 u1) u4) u2} (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3)) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3)))) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u4, max (max (max u3 u1) u4) u2} (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3) (CategoryTheory.Functor.{u1, u2, u3, u4} J _inst_1 (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3)) (CategoryTheory.Functor.category.{u1, u2, u3, u4} J _inst_1 (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3)) (CategoryTheory.Functor.const.{u1, u2, u3, u4} J _inst_1 (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3))) (CategoryTheory.Limits.Cocone.pt.{u1, u2, u3, u4} J _inst_1 (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3) F (CategoryTheory.Limits.coconeOfConeLeftOp.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c))) (CategoryTheory.Limits.Cocone.ι.{u1, u2, u3, u4} J _inst_1 (Opposite.{succ u4} C) (CategoryTheory.Category.opposite.{u2, u4} C _inst_3) F (CategoryTheory.Limits.coconeOfConeLeftOp.{u1, u2, u3, u4} J _inst_1 C _inst_3 F c)) j) (Quiver.Hom.op.{u4, succ u2} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) (Prefunctor.obj.{succ u1, succ u2, u3, u4} (Opposite.{succ u3} J) (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} (Opposite.{succ u3} J) (CategoryTheory.Category.toCategoryStruct.{u1, u3} (Opposite.{succ u3} J) (CategoryTheory.Category.opposite.{u1, u3} J _inst_1))) C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} (Opposite.{succ u3} J) (CategoryTheory.Category.opposite.{u1, u3} J _inst_1) C _inst_3 (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u4, max (max (max u3 u1) u2) u4} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) (CategoryTheory.Functor.{u1, u2, u3, u4} (Opposite.{succ u3} J) (CategoryTheory.Category.opposite.{u1, u3} J _inst_1) C _inst_3) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max (max (max u3 u1) u4) u2} (CategoryTheory.Functor.{u1, u2, u3, u4} (Opposite.{succ u3} J) (CategoryTheory.Category.opposite.{u1, u3} J _inst_1) C _inst_3) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max (max (max u3 u1) u4) u2} (CategoryTheory.Functor.{u1, u2, u3, u4} (Opposite.{succ u3} J) (CategoryTheory.Category.opposite.{u1, u3} J _inst_1) C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} (Opposite.{succ u3} J) (CategoryTheory.Category.opposite.{u1, u3} J _inst_1) C _inst_3))) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u4, max (max (max u3 u1) u4) u2} C _inst_3 (CategoryTheory.Functor.{u1, u2, u3, u4} (Opposite.{succ u3} J) (CategoryTheory.Category.opposite.{u1, u3} J _inst_1) C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} (Opposite.{succ u3} J) (CategoryTheory.Category.opposite.{u1, u3} J _inst_1) C _inst_3) (CategoryTheory.Functor.const.{u1, u2, u3, u4} (Opposite.{succ u3} J) (CategoryTheory.Category.opposite.{u1, u3} J _inst_1) C _inst_3)) (CategoryTheory.Limits.Cone.pt.{u1, u2, u3, u4} (Opposite.{succ u3} J) (CategoryTheory.Category.opposite.{u1, u3} J _inst_1) C _inst_3 (CategoryTheory.Functor.leftOp.{u1, u2, u3, u4} J _inst_1 C _inst_3 F) c))) (Opposite.op.{succ u3} J j)) (Prefunctor.obj.{succ u1, succ u2, u3, u4} (Opposite.{succ u3} J) (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} (Opposite.{succ u3} J) (CategoryTheory.Category.toCategoryStruct.{u1, u3} (Opposite.{succ u3} J) (CategoryTheory.Category.opposite.{u1, u3} J _inst_1))) C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} (Opposite.{succ u3} J) (CategoryTheory.Category.opposite.{u1, u3} J _inst_1) C _inst_3 (CategoryTheory.Functor.leftOp.{u1, u2, u3, u4} J _inst_1 C _inst_3 F)) (Opposite.op.{succ u3} J j)) (CategoryTheory.NatTrans.app.{u1, u2, u3, u4} (Opposite.{succ u3} J) (CategoryTheory.Category.opposite.{u1, u3} J _inst_1) C _inst_3 (Prefunctor.obj.{succ u2, max (succ u3) (succ u2), u4, max (max (max u3 u1) u2) u4} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} C (CategoryTheory.Category.toCategoryStruct.{u2, u4} C _inst_3)) (CategoryTheory.Functor.{u1, u2, u3, u4} (Opposite.{succ u3} J) (CategoryTheory.Category.opposite.{u1, u3} J _inst_1) C _inst_3) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u2, max (max (max u3 u1) u4) u2} (CategoryTheory.Functor.{u1, u2, u3, u4} (Opposite.{succ u3} J) (CategoryTheory.Category.opposite.{u1, u3} J _inst_1) C _inst_3) (CategoryTheory.Category.toCategoryStruct.{max u3 u2, max (max (max u3 u1) u4) u2} (CategoryTheory.Functor.{u1, u2, u3, u4} (Opposite.{succ u3} J) (CategoryTheory.Category.opposite.{u1, u3} J _inst_1) C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} (Opposite.{succ u3} J) (CategoryTheory.Category.opposite.{u1, u3} J _inst_1) C _inst_3))) (CategoryTheory.Functor.toPrefunctor.{u2, max u3 u2, u4, max (max (max u3 u1) u4) u2} C _inst_3 (CategoryTheory.Functor.{u1, u2, u3, u4} (Opposite.{succ u3} J) (CategoryTheory.Category.opposite.{u1, u3} J _inst_1) C _inst_3) (CategoryTheory.Functor.category.{u1, u2, u3, u4} (Opposite.{succ u3} J) (CategoryTheory.Category.opposite.{u1, u3} J _inst_1) C _inst_3) (CategoryTheory.Functor.const.{u1, u2, u3, u4} (Opposite.{succ u3} J) (CategoryTheory.Category.opposite.{u1, u3} J _inst_1) C _inst_3)) (CategoryTheory.Limits.Cone.pt.{u1, u2, u3, u4} (Opposite.{succ u3} J) (CategoryTheory.Category.opposite.{u1, u3} J _inst_1) C _inst_3 (CategoryTheory.Functor.leftOp.{u1, u2, u3, u4} J _inst_1 C _inst_3 F) c)) (CategoryTheory.Functor.leftOp.{u1, u2, u3, u4} J _inst_1 C _inst_3 F) (CategoryTheory.Limits.Cone.π.{u1, u2, u3, u4} (Opposite.{succ u3} J) (CategoryTheory.Category.opposite.{u1, u3} J _inst_1) C _inst_3 (CategoryTheory.Functor.leftOp.{u1, u2, u3, u4} J _inst_1 C _inst_3 F) c) (Opposite.op.{succ u3} J j)))
+Case conversion may be inaccurate. Consider using '#align category_theory.limits.cocone_of_cone_left_op_ι_app CategoryTheory.Limits.coconeOfConeLeftOp_ι_appₓ'. -/
@[simp]
theorem coconeOfConeLeftOp_ι_app (c : Cone F.leftOp) (j) :
(coconeOfConeLeftOp c).ι.app j = (c.π.app (op j)).op :=
@@ -979,6 +1245,7 @@ theorem coconeOfConeLeftOp_ι_app (c : Cone F.leftOp) (j) :
simp
#align category_theory.limits.cocone_of_cone_left_op_ι_app CategoryTheory.Limits.coconeOfConeLeftOp_ι_app
+#print CategoryTheory.Limits.coneLeftOpOfCocone /-
/-- Change a cocone on `F : J ⥤ Cᵒᵖ` to a cone on `F.left_op : Jᵒᵖ ⥤ C`. -/
@[simps (config :=
{ rhsMd := semireducible
@@ -988,6 +1255,7 @@ def coneLeftOpOfCocone (c : Cocone F) : Cone F.leftOp
x := unop c.x
π := NatTrans.leftOp c.ι
#align category_theory.limits.cone_left_op_of_cocone CategoryTheory.Limits.coneLeftOpOfCocone
+-/
end
@@ -995,6 +1263,7 @@ section
variable {F : Jᵒᵖ ⥤ C}
+#print CategoryTheory.Limits.coneOfCoconeRightOp /-
/-- Change a cocone on `F.right_op : J ⥤ Cᵒᵖ` to a cone on `F : Jᵒᵖ ⥤ C`. -/
@[simps]
def coneOfCoconeRightOp (c : Cocone F.rightOp) : Cone F
@@ -1002,7 +1271,9 @@ def coneOfCoconeRightOp (c : Cocone F.rightOp) : Cone F
x := unop c.x
π := NatTrans.removeRightOp c.ι
#align category_theory.limits.cone_of_cocone_right_op CategoryTheory.Limits.coneOfCoconeRightOp
+-/
+#print CategoryTheory.Limits.coconeRightOpOfCone /-
/-- Change a cone on `F : Jᵒᵖ ⥤ C` to a cocone on `F.right_op : Jᵒᵖ ⥤ C`. -/
@[simps]
def coconeRightOpOfCone (c : Cone F) : Cocone F.rightOp
@@ -1010,7 +1281,9 @@ def coconeRightOpOfCone (c : Cone F) : Cocone F.rightOp
x := op c.x
ι := NatTrans.rightOp c.π
#align category_theory.limits.cocone_right_op_of_cone CategoryTheory.Limits.coconeRightOpOfCone
+-/
+#print CategoryTheory.Limits.coconeOfConeRightOp /-
/-- Change a cone on `F.right_op : J ⥤ Cᵒᵖ` to a cocone on `F : Jᵒᵖ ⥤ C`. -/
@[simps]
def coconeOfConeRightOp (c : Cone F.rightOp) : Cocone F
@@ -1018,7 +1291,9 @@ def coconeOfConeRightOp (c : Cone F.rightOp) : Cocone F
x := unop c.x
ι := NatTrans.removeRightOp c.π
#align category_theory.limits.cocone_of_cone_right_op CategoryTheory.Limits.coconeOfConeRightOp
+-/
+#print CategoryTheory.Limits.coneRightOpOfCocone /-
/-- Change a cocone on `F : Jᵒᵖ ⥤ C` to a cone on `F.right_op : J ⥤ Cᵒᵖ`. -/
@[simps]
def coneRightOpOfCocone (c : Cocone F) : Cone F.rightOp
@@ -1026,6 +1301,7 @@ def coneRightOpOfCocone (c : Cocone F) : Cone F.rightOp
x := op c.x
π := NatTrans.rightOp c.ι
#align category_theory.limits.cone_right_op_of_cocone CategoryTheory.Limits.coneRightOpOfCocone
+-/
end
@@ -1033,6 +1309,7 @@ section
variable {F : Jᵒᵖ ⥤ Cᵒᵖ}
+#print CategoryTheory.Limits.coneOfCoconeUnop /-
/-- Change a cocone on `F.unop : J ⥤ C` into a cone on `F : Jᵒᵖ ⥤ Cᵒᵖ`. -/
@[simps]
def coneOfCoconeUnop (c : Cocone F.unop) : Cone F
@@ -1040,7 +1317,9 @@ def coneOfCoconeUnop (c : Cocone F.unop) : Cone F
x := op c.x
π := NatTrans.removeUnop c.ι
#align category_theory.limits.cone_of_cocone_unop CategoryTheory.Limits.coneOfCoconeUnop
+-/
+#print CategoryTheory.Limits.coconeUnopOfCone /-
/-- Change a cone on `F : Jᵒᵖ ⥤ Cᵒᵖ` into a cocone on `F.unop : J ⥤ C`. -/
@[simps]
def coconeUnopOfCone (c : Cone F) : Cocone F.unop
@@ -1048,7 +1327,9 @@ def coconeUnopOfCone (c : Cone F) : Cocone F.unop
x := unop c.x
ι := NatTrans.unop c.π
#align category_theory.limits.cocone_unop_of_cone CategoryTheory.Limits.coconeUnopOfCone
+-/
+#print CategoryTheory.Limits.coconeOfConeUnop /-
/-- Change a cone on `F.unop : J ⥤ C` into a cocone on `F : Jᵒᵖ ⥤ Cᵒᵖ`. -/
@[simps]
def coconeOfConeUnop (c : Cone F.unop) : Cocone F
@@ -1056,7 +1337,9 @@ def coconeOfConeUnop (c : Cone F.unop) : Cocone F
x := op c.x
ι := NatTrans.removeUnop c.π
#align category_theory.limits.cocone_of_cone_unop CategoryTheory.Limits.coconeOfConeUnop
+-/
+#print CategoryTheory.Limits.coneUnopOfCocone /-
/-- Change a cocone on `F : Jᵒᵖ ⥤ Cᵒᵖ` into a cone on `F.unop : J ⥤ C`. -/
@[simps]
def coneUnopOfCocone (c : Cocone F) : Cone F.unop
@@ -1064,6 +1347,7 @@ def coneUnopOfCocone (c : Cocone F) : Cone F.unop
x := unop c.x
π := NatTrans.unop c.ι
#align category_theory.limits.cone_unop_of_cocone CategoryTheory.Limits.coneUnopOfCocone
+-/
end
@@ -1079,17 +1363,21 @@ section
variable (G : C ⥤ D)
+#print CategoryTheory.Functor.mapConeOp /-
/-- The opposite cocone of the image of a cone is the image of the opposite cocone. -/
@[simps (config := { rhsMd := semireducible })]
def mapConeOp (t : Cone F) : (G.mapCone t).op ≅ G.op.mapCocone t.op :=
Cocones.ext (Iso.refl _) (by tidy)
#align category_theory.functor.map_cone_op CategoryTheory.Functor.mapConeOp
+-/
+#print CategoryTheory.Functor.mapCoconeOp /-
/-- The opposite cone of the image of a cocone is the image of the opposite cone. -/
@[simps (config := { rhsMd := semireducible })]
def mapCoconeOp {t : Cocone F} : (G.mapCocone t).op ≅ G.op.mapCone t.op :=
Cones.ext (Iso.refl _) (by tidy)
#align category_theory.functor.map_cocone_op CategoryTheory.Functor.mapCoconeOp
+-/
end
mathlib commit https://github.com/leanprover-community/mathlib/commit/bd9851ca476957ea4549eb19b40e7b5ade9428cc
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>
@@ -454,11 +454,11 @@ def functoriality : Cone F ⥤ Cone (F ⋙ G) where
w := fun j => by simp [-ConeMorphism.w, ← f.w j] }
#align category_theory.limits.cones.functoriality CategoryTheory.Limits.Cones.functoriality
-instance functorialityFull [G.Full] [G.Faithful] : (functoriality F G).Full where
- preimage t :=
- { hom := G.preimage t.hom
- w := fun j => G.map_injective (by simpa using t.w j) }
-#align category_theory.limits.cones.functoriality_full CategoryTheory.Limits.Cones.functorialityFull
+instance functoriality_full [G.Full] [G.Faithful] : (functoriality F G).Full where
+ map_surjective t :=
+ ⟨{ hom := G.preimage t.hom
+ w := fun j => G.map_injective (by simpa using t.w j) }, by aesop_cat⟩
+#align category_theory.limits.cones.functoriality_full CategoryTheory.Limits.Cones.functoriality_full
instance functoriality_faithful [G.Faithful] : (Cones.functoriality F G).Faithful where
map_injective {_X} {_Y} f g h :=
@@ -673,11 +673,11 @@ def functoriality : Cocone F ⥤ Cocone (F ⋙ G) where
w := by intros; rw [← Functor.map_comp, CoconeMorphism.w] }
#align category_theory.limits.cocones.functoriality CategoryTheory.Limits.Cocones.functoriality
-instance functorialityFull [G.Full] [G.Faithful] : (functoriality F G).Full where
- preimage t :=
- { hom := G.preimage t.hom
- w := fun j => G.map_injective (by simpa using t.w j) }
-#align category_theory.limits.cocones.functoriality_full CategoryTheory.Limits.Cocones.functorialityFull
+instance functoriality_full [G.Full] [G.Faithful] : (functoriality F G).Full where
+ map_surjective t :=
+ ⟨{ hom := G.preimage t.hom
+ w := fun j => G.map_injective (by simpa using t.w j) }, by aesop_cat⟩
+#align category_theory.limits.cocones.functoriality_full CategoryTheory.Limits.Cocones.functoriality_full
instance functoriality_faithful [G.Faithful] : (functoriality F G).Faithful where
map_injective {_X} {_Y} f g h :=
These notions on functors are now Functor.Full
, Functor.Faithful
, Functor.EssSurj
, Functor.IsEquivalence
, Functor.ReflectsIsomorphisms
. Deprecated aliases are introduced for the previous names.
@@ -454,13 +454,13 @@ def functoriality : Cone F ⥤ Cone (F ⋙ G) where
w := fun j => by simp [-ConeMorphism.w, ← f.w j] }
#align category_theory.limits.cones.functoriality CategoryTheory.Limits.Cones.functoriality
-instance functorialityFull [Full G] [Faithful G] : Full (functoriality F G) where
+instance functorialityFull [G.Full] [G.Faithful] : (functoriality F G).Full where
preimage t :=
{ hom := G.preimage t.hom
w := fun j => G.map_injective (by simpa using t.w j) }
#align category_theory.limits.cones.functoriality_full CategoryTheory.Limits.Cones.functorialityFull
-instance functoriality_faithful [Faithful G] : Faithful (Cones.functoriality F G) where
+instance functoriality_faithful [G.Faithful] : (Cones.functoriality F G).Faithful where
map_injective {_X} {_Y} f g h :=
ConeMorphism.ext f g <| G.map_injective <| congr_arg ConeMorphism.hom h
#align category_theory.limits.cones.functoriality_faithful CategoryTheory.Limits.Cones.functoriality_faithful
@@ -481,8 +481,8 @@ def functorialityEquivalence (e : C ≌ D) : Cone F ≌ Cone (F ⋙ e.functor) :
/-- If `F` reflects isomorphisms, then `Cones.functoriality F` reflects isomorphisms
as well.
-/
-instance reflects_cone_isomorphism (F : C ⥤ D) [ReflectsIsomorphisms F] (K : J ⥤ C) :
- ReflectsIsomorphisms (Cones.functoriality K F) := by
+instance reflects_cone_isomorphism (F : C ⥤ D) [F.ReflectsIsomorphisms] (K : J ⥤ C) :
+ (Cones.functoriality K F).ReflectsIsomorphisms := by
constructor
intro A B f _
haveI : IsIso (F.map f.hom) :=
@@ -673,13 +673,13 @@ def functoriality : Cocone F ⥤ Cocone (F ⋙ G) where
w := by intros; rw [← Functor.map_comp, CoconeMorphism.w] }
#align category_theory.limits.cocones.functoriality CategoryTheory.Limits.Cocones.functoriality
-instance functorialityFull [Full G] [Faithful G] : Full (functoriality F G) where
+instance functorialityFull [G.Full] [G.Faithful] : (functoriality F G).Full where
preimage t :=
{ hom := G.preimage t.hom
w := fun j => G.map_injective (by simpa using t.w j) }
#align category_theory.limits.cocones.functoriality_full CategoryTheory.Limits.Cocones.functorialityFull
-instance functoriality_faithful [Faithful G] : Faithful (functoriality F G) where
+instance functoriality_faithful [G.Faithful] : (functoriality F G).Faithful where
map_injective {_X} {_Y} f g h :=
CoconeMorphism.ext f g <| G.map_injective <| congr_arg CoconeMorphism.hom h
#align category_theory.limits.cocones.functoriality_faithful CategoryTheory.Limits.Cocones.functoriality_faithful
@@ -700,8 +700,8 @@ def functorialityEquivalence (e : C ≌ D) : Cocone F ≌ Cocone (F ⋙ e.functo
/-- If `F` reflects isomorphisms, then `Cocones.functoriality F` reflects isomorphisms
as well.
-/
-instance reflects_cocone_isomorphism (F : C ⥤ D) [ReflectsIsomorphisms F] (K : J ⥤ C) :
- ReflectsIsomorphisms (Cocones.functoriality K F) := by
+instance reflects_cocone_isomorphism (F : C ⥤ D) [F.ReflectsIsomorphisms] (K : J ⥤ C) :
+ (Cocones.functoriality K F).ReflectsIsomorphisms := by
constructor
intro A B f _
haveI : IsIso (F.map f.hom) :=
Purely automatic replacement. If this is in any way controversial; I'm happy to just close this PR.
@@ -746,7 +746,7 @@ def mapCoconeMorphism {c c' : Cocone F} (f : c ⟶ c') : H.mapCocone c ⟶ H.map
#align category_theory.functor.map_cocone_morphism CategoryTheory.Functor.mapCoconeMorphism
/-- If `H` is an equivalence, we invert `H.mapCone` and get a cone for `F` from a cone
-for `F ⋙ H`.-/
+for `F ⋙ H`. -/
def mapConeInv [IsEquivalence H] (c : Cone (F ⋙ H)) : Cone F :=
(Limits.Cones.functorialityEquivalence F (asEquivalence H)).inverse.obj c
#align category_theory.functor.map_cone_inv CategoryTheory.Functor.mapConeInv
@@ -764,7 +764,7 @@ def mapConeInvMapCone {F : J ⥤ D} (H : D ⥤ C) [IsEquivalence H] (c : Cone F)
#align category_theory.functor.map_cone_inv_map_cone CategoryTheory.Functor.mapConeInvMapCone
/-- If `H` is an equivalence, we invert `H.mapCone` and get a cone for `F` from a cone
-for `F ⋙ H`.-/
+for `F ⋙ H`. -/
def mapCoconeInv [IsEquivalence H] (c : Cocone (F ⋙ H)) : Cocone F :=
(Limits.Cocones.functorialityEquivalence F (asEquivalence H)).inverse.obj c
#align category_theory.functor.map_cocone_inv CategoryTheory.Functor.mapCoconeInv
@@ -335,6 +335,31 @@ theorem cone_iso_of_hom_iso {K : J ⥤ C} {c d : Cone K} (f : c ⟶ d) [i : IsIs
w := fun j => (asIso f.hom).inv_comp_eq.2 (f.w j).symm }, by aesop_cat⟩⟩
#align category_theory.limits.cones.cone_iso_of_hom_iso CategoryTheory.Limits.Cones.cone_iso_of_hom_iso
+/-- There is a morphism from an extended cone to the original cone. -/
+@[simps]
+def extend (s : Cone F) {X : C} (f : X ⟶ s.pt) : s.extend f ⟶ s where
+ hom := f
+
+/-- Extending a cone by the identity does nothing. -/
+@[simps!]
+def extendId (s : Cone F) : s.extend (𝟙 s.pt) ≅ s :=
+ Cones.ext (Iso.refl _)
+
+/-- Extending a cone by a composition is the same as extending the cone twice. -/
+@[simps!]
+def extendComp (s : Cone F) {X Y : C} (f : X ⟶ Y) (g : Y ⟶ s.pt) :
+ s.extend (f ≫ g) ≅ (s.extend g).extend f :=
+ Cones.ext (Iso.refl _)
+
+/-- A cone extended by an isomorphism is isomorphic to the original cone. -/
+@[simps]
+def extendIso (s : Cone F) {X : C} (f : X ≅ s.pt) : s.extend f.hom ≅ s where
+ hom := { hom := f.hom }
+ inv := { hom := f.inv }
+
+instance {s : Cone F} {X : C} (f : X ⟶ s.pt) [IsIso f] : IsIso (Cones.extend s f) :=
+ ⟨(extendIso s (asIso f)).inv, by aesop_cat⟩
+
/--
Functorially postcompose a cone for `F` by a natural transformation `F ⟶ G` to give a cone for `G`.
-/
@@ -532,6 +557,31 @@ theorem cocone_iso_of_hom_iso {K : J ⥤ C} {c d : Cocone K} (f : c ⟶ d) [i :
w := fun j => (asIso f.hom).comp_inv_eq.2 (f.w j).symm }, by aesop_cat⟩⟩
#align category_theory.limits.cocones.cocone_iso_of_hom_iso CategoryTheory.Limits.Cocones.cocone_iso_of_hom_iso
+/-- There is a morphism from a cocone to its extension. -/
+@[simps]
+def extend (s : Cocone F) {X : C} (f : s.pt ⟶ X) : s ⟶ s.extend f where
+ hom := f
+
+/-- Extending a cocone by the identity does nothing. -/
+@[simps!]
+def extendId (s : Cocone F) : s ≅ s.extend (𝟙 s.pt) :=
+ Cocones.ext (Iso.refl _)
+
+/-- Extending a cocone by a composition is the same as extending the cone twice. -/
+@[simps!]
+def extendComp (s : Cocone F) {X Y : C} (f : s.pt ⟶ X) (g : X ⟶ Y) :
+ s.extend (f ≫ g) ≅ (s.extend f).extend g :=
+ Cocones.ext (Iso.refl _)
+
+/-- A cocone extended by an isomorphism is isomorphic to the original cone. -/
+@[simps]
+def extendIso (s : Cocone F) {X : C} (f : s.pt ≅ X) : s ≅ s.extend f.hom where
+ hom := { hom := f.hom }
+ inv := { hom := f.inv }
+
+instance {s : Cocone F} {X : C} (f : s.pt ⟶ X) [IsIso f] : IsIso (Cocones.extend s f) :=
+ ⟨(extendIso s (asIso f)).inv, by aesop_cat⟩
+
/-- Functorially precompose a cocone for `F` by a natural transformation `G ⟶ F` to give a cocone
for `G`. -/
@[simps]
Empty lines were removed by executing the following Python script twice
import os
import re
# Loop through each file in the repository
for dir_path, dirs, files in os.walk('.'):
for filename in files:
if filename.endswith('.lean'):
file_path = os.path.join(dir_path, filename)
# Open the file and read its contents
with open(file_path, 'r') as file:
content = file.read()
# Use a regular expression to replace sequences of "variable" lines separated by empty lines
# with sequences without empty lines
modified_content = re.sub(r'(variable.*\n)\n(variable(?! .* in))', r'\1\2', content)
# Write the modified content back to the file
with open(file_path, 'w') as file:
file.write(modified_content)
@@ -42,11 +42,8 @@ universe v₁ v₂ v₃ v₄ u₁ u₂ u₃ u₄
open CategoryTheory
variable {J : Type u₁} [Category.{v₁} J]
-
variable {K : Type u₂} [Category.{v₂} K]
-
variable {C : Type u₃} [Category.{v₃} C]
-
variable {D : Type u₄} [Category.{v₄} D]
open CategoryTheory
This follows the API pattern set by Cone
and Cocone
.
This also renames CategoryTheory.Limits.Cones.functorialityFaithful
to CategoryTheory.Limits.Cones.functoriality_faithful
to match the corresponding Cocone
instance.
@@ -438,12 +438,10 @@ instance functorialityFull [Full G] [Faithful G] : Full (functoriality F G) wher
w := fun j => G.map_injective (by simpa using t.w j) }
#align category_theory.limits.cones.functoriality_full CategoryTheory.Limits.Cones.functorialityFull
-instance functorialityFaithful [Faithful G] : Faithful (Cones.functoriality F G) where
- map_injective {c} {c'} f g e := by
- apply ConeMorphism.ext f g
- let f := ConeMorphism.mk.inj e
- apply G.map_injective f
-#align category_theory.limits.cones.functoriality_faithful CategoryTheory.Limits.Cones.functorialityFaithful
+instance functoriality_faithful [Faithful G] : Faithful (Cones.functoriality F G) where
+ map_injective {_X} {_Y} f g h :=
+ ConeMorphism.ext f g <| G.map_injective <| congr_arg ConeMorphism.hom h
+#align category_theory.limits.cones.functoriality_faithful CategoryTheory.Limits.Cones.functoriality_faithful
/-- If `e : C ≌ D` is an equivalence of categories, then `functoriality F e.functor` induces an
equivalence between cones over `F` and cones over `F ⋙ e.functor`.
@@ -635,10 +633,8 @@ instance functorialityFull [Full G] [Faithful G] : Full (functoriality F G) wher
#align category_theory.limits.cocones.functoriality_full CategoryTheory.Limits.Cocones.functorialityFull
instance functoriality_faithful [Faithful G] : Faithful (functoriality F G) where
- map_injective {X} {Y} f g e := by
- apply CoconeMorphism.ext
- let h := CoconeMorphism.mk.inj e
- apply G.map_injective h
+ map_injective {_X} {_Y} f g h :=
+ CoconeMorphism.ext f g <| G.map_injective <| congr_arg CoconeMorphism.hom h
#align category_theory.limits.cocones.functoriality_faithful CategoryTheory.Limits.Cocones.functoriality_faithful
/-- If `e : C ≌ D` is an equivalence of categories, then `functoriality F e.functor` induces an
@@ -455,8 +455,7 @@ def functorialityEquivalence (e : C ≌ D) : Cone F ≌ Cone (F ⋙ e.functor) :
{ functor := functoriality F e.functor
inverse := functoriality (F ⋙ e.functor) e.inverse ⋙ (postcomposeEquivalence f).functor
unitIso := NatIso.ofComponents fun c => Cones.ext (e.unitIso.app _)
- counitIso := NatIso.ofComponents fun c => Cones.ext (e.counitIso.app _)
- }
+ counitIso := NatIso.ofComponents fun c => Cones.ext (e.counitIso.app _) }
#align category_theory.limits.cones.functoriality_equivalence CategoryTheory.Limits.Cones.functorialityEquivalence
/-- If `F` reflects isomorphisms, then `Cones.functoriality F` reflects isomorphisms
@@ -652,8 +651,7 @@ def functorialityEquivalence (e : C ≌ D) : Cocone F ≌ Cocone (F ⋙ e.functo
{ functor := functoriality F e.functor
inverse := functoriality (F ⋙ e.functor) e.inverse ⋙ (precomposeEquivalence f.symm).functor
unitIso := NatIso.ofComponents fun c => Cocones.ext (e.unitIso.app _)
- counitIso :=
- NatIso.ofComponents fun c => Cocones.ext (e.counitIso.app _) }
+ counitIso := NatIso.ofComponents fun c => Cocones.ext (e.counitIso.app _) }
#align category_theory.limits.cocones.functoriality_equivalence CategoryTheory.Limits.Cocones.functorialityEquivalence
/-- If `F` reflects isomorphisms, then `Cocones.functoriality F` reflects isomorphisms
@@ -315,7 +315,7 @@ namespace Cones
isomorphism between their vertices which commutes with the cone
maps. -/
-- Porting note: `@[ext]` used to accept lemmas like this. Now we add an aesop rule
-@[aesop apply safe (rule_sets [CategoryTheory]), simps]
+@[aesop apply safe (rule_sets := [CategoryTheory]), simps]
def ext {c c' : Cone F} (φ : c.pt ≅ c'.pt)
(w : ∀ j, c.π.app j = φ.hom ≫ c'.π.app j := by aesop_cat) : c ≅ c' where
hom := { hom := φ.hom }
@@ -514,7 +514,7 @@ namespace Cocones
isomorphism between their vertices which commutes with the cocone
maps. -/
-- Porting note: `@[ext]` used to accept lemmas like this. Now we add an aesop rule
-@[aesop apply safe (rule_sets [CategoryTheory]), simps]
+@[aesop apply safe (rule_sets := [CategoryTheory]), simps]
def ext {c c' : Cocone F} (φ : c.pt ≅ c'.pt)
(w : ∀ j, c.ι.app j ≫ φ.hom = c'.ι.app j := by aesop_cat) : c ≅ c' where
hom := { hom := φ.hom }
@@ -653,11 +653,7 @@ def functorialityEquivalence (e : C ≌ D) : Cocone F ≌ Cocone (F ⋙ e.functo
inverse := functoriality (F ⋙ e.functor) e.inverse ⋙ (precomposeEquivalence f.symm).functor
unitIso := NatIso.ofComponents fun c => Cocones.ext (e.unitIso.app _)
counitIso :=
- NatIso.ofComponents fun c => Cocones.ext (e.counitIso.app _)
- (fun j =>
- -- Unfortunately this doesn't work by `aesop_cat`.
- -- In this configuration `simp` reaches a dead-end and needs help.
- by simp [← Equivalence.counitInv_app_functor]) }
+ NatIso.ofComponents fun c => Cocones.ext (e.counitIso.app _) }
#align category_theory.limits.cocones.functoriality_equivalence CategoryTheory.Limits.Cocones.functorialityEquivalence
/-- If `F` reflects isomorphisms, then `Cocones.functoriality F` reflects isomorphisms
@@ -180,7 +180,7 @@ instance inhabitedCocone (F : Discrete PUnit ⥤ C) : Inhabited (Cocone F) :=
}⟩
#align category_theory.limits.inhabited_cocone CategoryTheory.Limits.inhabitedCocone
-@[reassoc] -- @[simp] -- Porting note: simp can prove this
+@[reassoc] -- @[simp] -- Porting note (#10618): simp can prove this
theorem Cocone.w {F : J ⥤ C} (c : Cocone F) {j j' : J} (f : j ⟶ j') :
F.map f ≫ c.ι.app j' = c.ι.app j := by
rw [c.ι.naturality f]
And fix some names in comments where this revealed issues
@@ -660,7 +660,7 @@ def functorialityEquivalence (e : C ≌ D) : Cocone F ≌ Cocone (F ⋙ e.functo
by simp [← Equivalence.counitInv_app_functor]) }
#align category_theory.limits.cocones.functoriality_equivalence CategoryTheory.Limits.Cocones.functorialityEquivalence
-/-- If `F` reflects isomorphisms, then `cocones.functoriality F` reflects isomorphisms
+/-- If `F` reflects isomorphisms, then `Cocones.functoriality F` reflects isomorphisms
as well.
-/
instance reflects_cocone_isomorphism (F : C ⥤ D) [ReflectsIsomorphisms F] (K : J ⥤ C) :
@@ -280,31 +280,31 @@ end Cocone
commutes with the cone legs. -/
structure ConeMorphism (A B : Cone F) where
/-- A morphism between the two vertex objects of the cones -/
- Hom : A.pt ⟶ B.pt
- /-- The triangle consisting of the two natural transformations and `Hom` commutes -/
- w : ∀ j : J, Hom ≫ B.π.app j = A.π.app j := by aesop_cat
+ hom : A.pt ⟶ B.pt
+ /-- The triangle consisting of the two natural transformations and `hom` commutes -/
+ w : ∀ j : J, hom ≫ B.π.app j = A.π.app j := by aesop_cat
#align category_theory.limits.cone_morphism CategoryTheory.Limits.ConeMorphism
#align category_theory.limits.cone_morphism.w' CategoryTheory.Limits.ConeMorphism.w
attribute [reassoc (attr := simp)] ConeMorphism.w
instance inhabitedConeMorphism (A : Cone F) : Inhabited (ConeMorphism A A) :=
- ⟨{ Hom := 𝟙 _ }⟩
+ ⟨{ hom := 𝟙 _ }⟩
#align category_theory.limits.inhabited_cone_morphism CategoryTheory.Limits.inhabitedConeMorphism
/-- The category of cones on a given diagram. -/
@[simps]
instance Cone.category : Category (Cone F) where
Hom A B := ConeMorphism A B
- comp f g := { Hom := f.Hom ≫ g.Hom }
- id B := { Hom := 𝟙 B.pt }
+ comp f g := { hom := f.hom ≫ g.hom }
+ id B := { hom := 𝟙 B.pt }
#align category_theory.limits.cone.category CategoryTheory.Limits.Cone.category
-- Porting note: if we do not have `simps` automatically generate the lemma for simplifying
--- the Hom field of a category, we need to write the `ext` lemma in terms of the categorical
+-- the hom field of a category, we need to write the `ext` lemma in terms of the categorical
-- morphism, rather than the underlying structure.
@[ext]
-theorem ConeMorphism.ext {c c' : Cone F} (f g : c ⟶ c') (w : f.Hom = g.Hom) : f = g := by
+theorem ConeMorphism.ext {c c' : Cone F} (f g : c ⟶ c') (w : f.hom = g.hom) : f = g := by
cases f
cases g
congr
@@ -318,9 +318,9 @@ namespace Cones
@[aesop apply safe (rule_sets [CategoryTheory]), simps]
def ext {c c' : Cone F} (φ : c.pt ≅ c'.pt)
(w : ∀ j, c.π.app j = φ.hom ≫ c'.π.app j := by aesop_cat) : c ≅ c' where
- hom := { Hom := φ.hom }
+ hom := { hom := φ.hom }
inv :=
- { Hom := φ.inv
+ { hom := φ.inv
w := fun j => φ.inv_comp_eq.mpr (w j) }
#align category_theory.limits.cones.ext CategoryTheory.Limits.Cones.ext
@@ -333,9 +333,9 @@ def eta (c : Cone F) : c ≅ ⟨c.pt, c.π⟩ :=
/-- Given a cone morphism whose object part is an isomorphism, produce an
isomorphism of cones.
-/
-theorem cone_iso_of_hom_iso {K : J ⥤ C} {c d : Cone K} (f : c ⟶ d) [i : IsIso f.Hom] : IsIso f :=
- ⟨⟨{ Hom := inv f.Hom
- w := fun j => (asIso f.Hom).inv_comp_eq.2 (f.w j).symm }, by aesop_cat⟩⟩
+theorem cone_iso_of_hom_iso {K : J ⥤ C} {c d : Cone K} (f : c ⟶ d) [i : IsIso f.hom] : IsIso f :=
+ ⟨⟨{ hom := inv f.hom
+ w := fun j => (asIso f.hom).inv_comp_eq.2 (f.w j).symm }, by aesop_cat⟩⟩
#align category_theory.limits.cones.cone_iso_of_hom_iso CategoryTheory.Limits.Cones.cone_iso_of_hom_iso
/--
@@ -346,7 +346,7 @@ def postcompose {G : J ⥤ C} (α : F ⟶ G) : Cone F ⥤ Cone G where
obj c :=
{ pt := c.pt
π := c.π ≫ α }
- map f := { Hom := f.Hom }
+ map f := { hom := f.hom }
#align category_theory.limits.cones.postcompose CategoryTheory.Limits.Cones.postcompose
/-- Postcomposing a cone by the composite natural transformation `α ≫ β` is the same as
@@ -379,7 +379,7 @@ def postcomposeEquivalence {G : J ⥤ C} (α : F ≅ G) : Cone F ≌ Cone G wher
@[simps]
def whiskering (E : K ⥤ J) : Cone F ⥤ Cone (E ⋙ F) where
obj c := c.whisker E
- map f := { Hom := f.Hom }
+ map f := { hom := f.hom }
#align category_theory.limits.cones.whiskering CategoryTheory.Limits.Cones.whiskering
/-- Whiskering by an equivalence gives an equivalence between categories of cones.
@@ -414,7 +414,7 @@ variable (F)
@[simps]
def forget : Cone F ⥤ C where
obj t := t.pt
- map f := f.Hom
+ map f := f.hom
#align category_theory.limits.cones.forget CategoryTheory.Limits.Cones.forget
variable (G : C ⥤ D)
@@ -428,13 +428,13 @@ def functoriality : Cone F ⥤ Cone (F ⋙ G) where
{ app := fun j => G.map (A.π.app j)
naturality := by intros; erw [← G.map_comp]; aesop_cat } }
map f :=
- { Hom := G.map f.Hom
+ { hom := G.map f.hom
w := fun j => by simp [-ConeMorphism.w, ← f.w j] }
#align category_theory.limits.cones.functoriality CategoryTheory.Limits.Cones.functoriality
instance functorialityFull [Full G] [Faithful G] : Full (functoriality F G) where
preimage t :=
- { Hom := G.preimage t.Hom
+ { hom := G.preimage t.hom
w := fun j => G.map_injective (by simpa using t.w j) }
#align category_theory.limits.cones.functoriality_full CategoryTheory.Limits.Cones.functorialityFull
@@ -466,9 +466,9 @@ instance reflects_cone_isomorphism (F : C ⥤ D) [ReflectsIsomorphisms F] (K : J
ReflectsIsomorphisms (Cones.functoriality K F) := by
constructor
intro A B f _
- haveI : IsIso (F.map f.Hom) :=
+ haveI : IsIso (F.map f.hom) :=
(Cones.forget (K ⋙ F)).map_isIso ((Cones.functoriality K F).map f)
- haveI := ReflectsIsomorphisms.reflects F f.Hom
+ haveI := ReflectsIsomorphisms.reflects F f.hom
apply cone_iso_of_hom_iso
#align category_theory.limits.cones.reflects_cone_isomorphism CategoryTheory.Limits.Cones.reflects_cone_isomorphism
@@ -480,14 +480,14 @@ end Cones
which commutes with the cocone legs. -/
structure CoconeMorphism (A B : Cocone F) where
/-- A morphism between the (co)vertex objects in `C` -/
- Hom : A.pt ⟶ B.pt
- /-- The triangle made from the two natural transformations and `Hom` commutes -/
- w : ∀ j : J, A.ι.app j ≫ Hom = B.ι.app j := by aesop_cat
+ hom : A.pt ⟶ B.pt
+ /-- The triangle made from the two natural transformations and `hom` commutes -/
+ w : ∀ j : J, A.ι.app j ≫ hom = B.ι.app j := by aesop_cat
#align category_theory.limits.cocone_morphism CategoryTheory.Limits.CoconeMorphism
#align category_theory.limits.cocone_morphism.w' CategoryTheory.Limits.CoconeMorphism.w
instance inhabitedCoconeMorphism (A : Cocone F) : Inhabited (CoconeMorphism A A) :=
- ⟨{ Hom := 𝟙 _ }⟩
+ ⟨{ hom := 𝟙 _ }⟩
#align category_theory.limits.inhabited_cocone_morphism CategoryTheory.Limits.inhabitedCoconeMorphism
attribute [reassoc (attr := simp)] CoconeMorphism.w
@@ -495,15 +495,15 @@ attribute [reassoc (attr := simp)] CoconeMorphism.w
@[simps]
instance Cocone.category : Category (Cocone F) where
Hom A B := CoconeMorphism A B
- comp f g := { Hom := f.Hom ≫ g.Hom }
- id B := { Hom := 𝟙 B.pt }
+ comp f g := { hom := f.hom ≫ g.hom }
+ id B := { hom := 𝟙 B.pt }
#align category_theory.limits.cocone.category CategoryTheory.Limits.Cocone.category
-- Porting note: if we do not have `simps` automatically generate the lemma for simplifying
--- the Hom field of a category, we need to write the `ext` lemma in terms of the categorical
+-- the hom field of a category, we need to write the `ext` lemma in terms of the categorical
-- morphism, rather than the underlying structure.
@[ext]
-theorem CoconeMorphism.ext {c c' : Cocone F} (f g : c ⟶ c') (w : f.Hom = g.Hom) : f = g := by
+theorem CoconeMorphism.ext {c c' : Cocone F} (f g : c ⟶ c') (w : f.hom = g.hom) : f = g := by
cases f
cases g
congr
@@ -517,9 +517,9 @@ namespace Cocones
@[aesop apply safe (rule_sets [CategoryTheory]), simps]
def ext {c c' : Cocone F} (φ : c.pt ≅ c'.pt)
(w : ∀ j, c.ι.app j ≫ φ.hom = c'.ι.app j := by aesop_cat) : c ≅ c' where
- hom := { Hom := φ.hom }
+ hom := { hom := φ.hom }
inv :=
- { Hom := φ.inv
+ { hom := φ.inv
w := fun j => φ.comp_inv_eq.mpr (w j).symm }
#align category_theory.limits.cocones.ext CategoryTheory.Limits.Cocones.ext
@@ -532,10 +532,10 @@ def eta (c : Cocone F) : c ≅ ⟨c.pt, c.ι⟩ :=
/-- Given a cocone morphism whose object part is an isomorphism, produce an
isomorphism of cocones.
-/
-theorem cocone_iso_of_hom_iso {K : J ⥤ C} {c d : Cocone K} (f : c ⟶ d) [i : IsIso f.Hom] :
+theorem cocone_iso_of_hom_iso {K : J ⥤ C} {c d : Cocone K} (f : c ⟶ d) [i : IsIso f.hom] :
IsIso f :=
- ⟨⟨{ Hom := inv f.Hom
- w := fun j => (asIso f.Hom).comp_inv_eq.2 (f.w j).symm }, by aesop_cat⟩⟩
+ ⟨⟨{ hom := inv f.hom
+ w := fun j => (asIso f.hom).comp_inv_eq.2 (f.w j).symm }, by aesop_cat⟩⟩
#align category_theory.limits.cocones.cocone_iso_of_hom_iso CategoryTheory.Limits.Cocones.cocone_iso_of_hom_iso
/-- Functorially precompose a cocone for `F` by a natural transformation `G ⟶ F` to give a cocone
@@ -545,7 +545,7 @@ def precompose {G : J ⥤ C} (α : G ⟶ F) : Cocone F ⥤ Cocone G where
obj c :=
{ pt := c.pt
ι := α ≫ c.ι }
- map f := { Hom := f.Hom }
+ map f := { hom := f.hom }
#align category_theory.limits.cocones.precompose CategoryTheory.Limits.Cocones.precompose
/-- Precomposing a cocone by the composite natural transformation `α ≫ β` is the same as
@@ -576,7 +576,7 @@ def precomposeEquivalence {G : J ⥤ C} (α : G ≅ F) : Cocone F ≌ Cocone G w
@[simps]
def whiskering (E : K ⥤ J) : Cocone F ⥤ Cocone (E ⋙ F) where
obj c := c.whisker E
- map f := { Hom := f.Hom }
+ map f := { hom := f.hom }
#align category_theory.limits.cocones.whiskering CategoryTheory.Limits.Cocones.whiskering
/-- Whiskering by an equivalence gives an equivalence between categories of cones.
@@ -611,7 +611,7 @@ variable (F)
@[simps]
def forget : Cocone F ⥤ C where
obj t := t.pt
- map f := f.Hom
+ map f := f.hom
#align category_theory.limits.cocones.forget CategoryTheory.Limits.Cocones.forget
variable (G : C ⥤ D)
@@ -625,13 +625,13 @@ def functoriality : Cocone F ⥤ Cocone (F ⋙ G) where
{ app := fun j => G.map (A.ι.app j)
naturality := by intros; erw [← G.map_comp]; aesop_cat } }
map f :=
- { Hom := G.map f.Hom
+ { hom := G.map f.hom
w := by intros; rw [← Functor.map_comp, CoconeMorphism.w] }
#align category_theory.limits.cocones.functoriality CategoryTheory.Limits.Cocones.functoriality
instance functorialityFull [Full G] [Faithful G] : Full (functoriality F G) where
preimage t :=
- { Hom := G.preimage t.Hom
+ { hom := G.preimage t.hom
w := fun j => G.map_injective (by simpa using t.w j) }
#align category_theory.limits.cocones.functoriality_full CategoryTheory.Limits.Cocones.functorialityFull
@@ -667,9 +667,9 @@ instance reflects_cocone_isomorphism (F : C ⥤ D) [ReflectsIsomorphisms F] (K :
ReflectsIsomorphisms (Cocones.functoriality K F) := by
constructor
intro A B f _
- haveI : IsIso (F.map f.Hom) :=
+ haveI : IsIso (F.map f.hom) :=
(Cocones.forget (K ⋙ F)).map_isIso ((Cocones.functoriality K F).map f)
- haveI := ReflectsIsomorphisms.reflects F f.Hom
+ haveI := ReflectsIsomorphisms.reflects F f.hom
apply cocone_iso_of_hom_iso
#align category_theory.limits.cocones.reflects_cocone_isomorphism CategoryTheory.Limits.Cocones.reflects_cocone_isomorphism
@@ -885,7 +885,7 @@ def coconeEquivalenceOpConeOp : Cocone F ≌ (Cone F.op)ᵒᵖ where
{ obj := fun c => op (Cocone.op c)
map := fun {X} {Y} f =>
Quiver.Hom.op
- { Hom := f.Hom.op
+ { hom := f.hom.op
w := fun j => by
apply Quiver.Hom.unop_inj
dsimp
@@ -893,7 +893,7 @@ def coconeEquivalenceOpConeOp : Cocone F ≌ (Cone F.op)ᵒᵖ where
inverse :=
{ obj := fun c => Cone.unop (unop c)
map := fun {X} {Y} f =>
- { Hom := f.unop.Hom.unop
+ { hom := f.unop.hom.unop
w := fun j => by
apply Quiver.Hom.op_inj
dsimp
@@ -441,7 +441,7 @@ instance functorialityFull [Full G] [Faithful G] : Full (functoriality F G) wher
instance functorialityFaithful [Faithful G] : Faithful (Cones.functoriality F G) where
map_injective {c} {c'} f g e := by
apply ConeMorphism.ext f g
- let f := ConeMorphism.mk.inj e; dsimp [functoriality]
+ let f := ConeMorphism.mk.inj e
apply G.map_injective f
#align category_theory.limits.cones.functoriality_faithful CategoryTheory.Limits.Cones.functorialityFaithful
@@ -2,17 +2,14 @@
Copyright (c) 2017 Scott Morrison. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Stephen Morgan, Scott Morrison, Floris van Doorn
-
-! This file was ported from Lean 3 source module category_theory.limits.cones
-! leanprover-community/mathlib commit 740acc0e6f9adf4423f92a485d0456fc271482da
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
-/
import Mathlib.CategoryTheory.Functor.Const
import Mathlib.CategoryTheory.DiscreteCategory
import Mathlib.CategoryTheory.Yoneda
import Mathlib.CategoryTheory.Functor.ReflectsIso
+#align_import category_theory.limits.cones from "leanprover-community/mathlib"@"740acc0e6f9adf4423f92a485d0456fc271482da"
+
/-!
# Cones and cocones
@@ -66,8 +66,8 @@ namespace Functor
variable (F : J ⥤ C)
-/-- `F.cones` is the functor assigning to an object `X` the type of
-natural transformations from the constant functor with value `X` to `F`.
+/-- If `F : J ⥤ C` then `F.cones` is the functor assigning to an object `X : C` the
+type of natural transformations from the constant functor with value `X` to `F`.
An object representing this functor is a limit of `F`.
-/
@[simps!]
@@ -75,8 +75,8 @@ def cones : Cᵒᵖ ⥤ Type max u₁ v₃ :=
(const J).op ⋙ yoneda.obj F
#align category_theory.functor.cones CategoryTheory.Functor.cones
-/-- `F.cocones` is the functor assigning to an object `X` the type of
-natural transformations from `F` to the constant functor with value `X`.
+/-- If `F : J ⥤ C` then `F.cocones` is the functor assigning to an object `(X : C)`
+the type of natural transformations from `F` to the constant functor with value `X`.
An object corepresenting this functor is a colimit of `F`.
-/
@[simps!]
@@ -118,6 +118,10 @@ section
* an object `c.pt` and
* a natural transformation `c.π : c.pt ⟶ F` from the constant `c.pt` functor to `F`.
+Example: if `J` is a category coming from a poset then the data required to make
+a term of type `Cone F` is morphisms `πⱼ : c.pt ⟶ F j` for all `j : J` and,
+for all `i ≤ j` in `J`, morphisms `πᵢⱼ : F i ⟶ F j` such that `πᵢ ≫ πᵢⱼ = πᵢ`.
+
`Cone F` is equivalent, via `cone.equiv` below, to `Σ X, F.cones.obj X`.
-/
structure Cone (F : J ⥤ C) where
@@ -152,6 +156,10 @@ theorem Cone.w {F : J ⥤ C} (c : Cone F) {j j' : J} (f : j ⟶ j') :
* an object `c.pt` and
* a natural transformation `c.ι : F ⟶ c.pt` from `F` to the constant `c.pt` functor.
+For example, if the source `J` of `F` is a partially ordered set, then to give
+`c : Cocone F` is to give a collection of morphisms `ιⱼ : F j ⟶ c.pt` and, for
+all `j ≤ k` in `J`, morphisms `ιⱼₖ : F j ⟶ F k` such that `Fⱼₖ ≫ Fₖ = Fⱼ` for all `j ≤ k`.
+
`Cocone F` is equivalent, via `Cone.equiv` below, to `Σ X, F.cocones.obj X`.
-/
structure Cocone (F : J ⥤ C) where
Co-authored-by: Komyyy <pol_tta@outlook.jp> Co-authored-by: Scott Morrison <scott.morrison@gmail.com> Co-authored-by: Scott Morrison <scott.morrison@anu.edu.au> Co-authored-by: Ruben Van de Velde <65514131+Ruben-VandeVelde@users.noreply.github.com> Co-authored-by: Mario Carneiro <di.gama@gmail.com>
@@ -175,13 +175,15 @@ instance inhabitedCocone (F : Discrete PUnit ⥤ C) : Inhabited (Cocone F) :=
}⟩
#align category_theory.limits.inhabited_cocone CategoryTheory.Limits.inhabitedCocone
-@[reassoc (attr := simp 1001)]
+@[reassoc] -- @[simp] -- Porting note: simp can prove this
theorem Cocone.w {F : J ⥤ C} (c : Cocone F) {j j' : J} (f : j ⟶ j') :
F.map f ≫ c.ι.app j' = c.ι.app j := by
rw [c.ι.naturality f]
apply comp_id
#align category_theory.limits.cocone.w CategoryTheory.Limits.Cocone.w
+attribute [simp 1001] Cocone.w_assoc
+
end
variable {F : J ⥤ C}
@@ -190,8 +192,7 @@ namespace Cone
/-- The isomorphism between a cone on `F` and an element of the functor `F.cones`. -/
@[simps!]
-def equiv (F : J ⥤ C) : Cone F ≅ ΣX, F.cones.obj X
- where
+def equiv (F : J ⥤ C) : Cone F ≅ ΣX, F.cones.obj X where
hom c := ⟨op c.pt, c.π⟩
inv c :=
{ pt := c.1.unop
@@ -221,8 +222,7 @@ def extend (c : Cone F) {X : C} (f : X ⟶ c.pt) : Cone F :=
/-- Whisker a cone by precomposition of a functor. -/
@[simps]
-def whisker (E : K ⥤ J) (c : Cone F) : Cone (E ⋙ F)
- where
+def whisker (E : K ⥤ J) (c : Cone F) : Cone (E ⋙ F) where
pt := c.pt
π := whiskerLeft E c.π
#align category_theory.limits.cone.whisker CategoryTheory.Limits.Cone.whisker
@@ -232,8 +232,7 @@ end Cone
namespace Cocone
/-- The isomorphism between a cocone on `F` and an element of the functor `F.cocones`. -/
-def equiv (F : J ⥤ C) : Cocone F ≅ ΣX, F.cocones.obj X
- where
+def equiv (F : J ⥤ C) : Cocone F ≅ ΣX, F.cocones.obj X where
hom c := ⟨c.pt, c.ι⟩
inv c :=
{ pt := c.1
@@ -858,16 +857,14 @@ def Cone.op (c : Cone F) : Cocone F.op where
/-- Change a `Cocone F.op` into a `Cone F`. -/
@[simps]
-def Cocone.unop (c : Cocone F.op) : Cone F
- where
+def Cocone.unop (c : Cocone F.op) : Cone F where
pt := Opposite.unop c.pt
π := NatTrans.removeOp c.ι
#align category_theory.limits.cocone.unop CategoryTheory.Limits.Cocone.unop
/-- Change a `Cone F.op` into a `Cocone F`. -/
@[simps]
-def Cone.unop (c : Cone F.op) : Cocone F
- where
+def Cone.unop (c : Cone F.op) : Cocone F where
pt := Opposite.unop c.pt
ι := NatTrans.removeOp c.π
#align category_theory.limits.cone.unop CategoryTheory.Limits.Cone.unop
@@ -682,21 +682,17 @@ variable (H : C ⥤ D) {F : J ⥤ C} {G : J ⥤ C}
open CategoryTheory.Limits
/-- The image of a cone in C under a functor G : C ⥤ D is a cone in D. -/
-@[simps!]
+@[simps!, pp_dot]
def mapCone (c : Cone F) : Cone (F ⋙ H) :=
(Cones.functoriality F H).obj c
#align category_theory.functor.map_cone CategoryTheory.Functor.mapCone
-pp_extended_field_notation Functor.mapCone
-
/-- The image of a cocone in C under a functor G : C ⥤ D is a cocone in D. -/
-@[simps!]
+@[simps!, pp_dot]
def mapCocone (c : Cocone F) : Cocone (F ⋙ H) :=
(Cocones.functoriality F H).obj c
#align category_theory.functor.map_cocone CategoryTheory.Functor.mapCocone
-pp_extended_field_notation Functor.mapCocone
-
/-- Given a cone morphism `c ⟶ c'`, construct a cone morphism on the mapped cones functorially. -/
def mapConeMorphism {c c' : Cone F} (f : c ⟶ c') : H.mapCone c ⟶ H.mapCone c' :=
(Cones.functoriality F H).map f
@@ -210,11 +210,6 @@ def equiv (F : J ⥤ C) : Cone F ≅ ΣX, F.cones.obj X
@[simps]
def extensions (c : Cone F) : yoneda.obj c.pt ⋙ uliftFunctor.{u₁} ⟶ F.cones where
app X f := (const J).map f.down ≫ c.π
- naturality := by
- intros X Y f
- dsimp [yoneda,const]
- funext X
- aesop_cat
#align category_theory.limits.cone.extensions CategoryTheory.Limits.Cone.extensions
/-- A map to the vertex of a cone induces a cone by composition. -/
@@ -257,10 +252,6 @@ def equiv (F : J ⥤ C) : Cocone F ≅ ΣX, F.cocones.obj X
@[simps]
def extensions (c : Cocone F) : coyoneda.obj (op c.pt) ⋙ uliftFunctor.{u₁} ⟶ F.cocones where
app X f := c.ι ≫ (const J).map f.down
- naturality := fun {X} {Y} f => by
- dsimp [coyoneda,const]
- funext X
- aesop_cat
#align category_theory.limits.cocone.extensions CategoryTheory.Limits.Cocone.extensions
/-- A map from the vertex of a cocone induces a cocone by composition. -/
@@ -321,7 +312,8 @@ namespace Cones
maps. -/
-- Porting note: `@[ext]` used to accept lemmas like this. Now we add an aesop rule
@[aesop apply safe (rule_sets [CategoryTheory]), simps]
-def ext {c c' : Cone F} (φ : c.pt ≅ c'.pt) (w : ∀ j, c.π.app j = φ.hom ≫ c'.π.app j) : c ≅ c' where
+def ext {c c' : Cone F} (φ : c.pt ≅ c'.pt)
+ (w : ∀ j, c.π.app j = φ.hom ≫ c'.π.app j := by aesop_cat) : c ≅ c' where
hom := { Hom := φ.hom }
inv :=
{ Hom := φ.inv
@@ -331,7 +323,7 @@ def ext {c c' : Cone F} (φ : c.pt ≅ c'.pt) (w : ∀ j, c.π.app j = φ.hom
/-- Eta rule for cones. -/
@[simps!]
def eta (c : Cone F) : c ≅ ⟨c.pt, c.π⟩ :=
- Cones.ext (Iso.refl _) (by aesop_cat)
+ Cones.ext (Iso.refl _)
#align category_theory.limits.cones.eta CategoryTheory.Limits.Cones.eta
/-- Given a cone morphism whose object part is an isomorphism, produce an
@@ -358,13 +350,13 @@ postcomposing by `α` and then by `β`. -/
@[simps!]
def postcomposeComp {G H : J ⥤ C} (α : F ⟶ G) (β : G ⟶ H) :
postcompose (α ≫ β) ≅ postcompose α ⋙ postcompose β :=
- NatIso.ofComponents (fun s => Cones.ext (Iso.refl _) (by aesop_cat)) (by aesop_cat)
+ NatIso.ofComponents fun s => Cones.ext (Iso.refl _)
#align category_theory.limits.cones.postcompose_comp CategoryTheory.Limits.Cones.postcomposeComp
/-- Postcomposing by the identity does not change the cone up to isomorphism. -/
@[simps!]
def postcomposeId : postcompose (𝟙 F) ≅ 𝟭 (Cone F) :=
- NatIso.ofComponents (fun s => Cones.ext (Iso.refl _) (by aesop_cat)) (by aesop_cat)
+ NatIso.ofComponents fun s => Cones.ext (Iso.refl _)
#align category_theory.limits.cones.postcompose_id CategoryTheory.Limits.Cones.postcomposeId
/-- If `F` and `G` are naturally isomorphic functors, then they have equivalent categories of
@@ -374,8 +366,8 @@ cones.
def postcomposeEquivalence {G : J ⥤ C} (α : F ≅ G) : Cone F ≌ Cone G where
functor := postcompose α.hom
inverse := postcompose α.inv
- unitIso := NatIso.ofComponents (fun s => Cones.ext (Iso.refl _) (by aesop_cat)) (by aesop_cat)
- counitIso := NatIso.ofComponents (fun s => Cones.ext (Iso.refl _) (by aesop_cat)) (by aesop_cat)
+ unitIso := NatIso.ofComponents fun s => Cones.ext (Iso.refl _)
+ counitIso := NatIso.ofComponents fun s => Cones.ext (Iso.refl _)
#align category_theory.limits.cones.postcompose_equivalence CategoryTheory.Limits.Cones.postcomposeEquivalence
/-- Whiskering on the left by `E : K ⥤ J` gives a functor from `Cone F` to `Cone (E ⋙ F)`.
@@ -392,17 +384,14 @@ def whiskering (E : K ⥤ J) : Cone F ⥤ Cone (E ⋙ F) where
def whiskeringEquivalence (e : K ≌ J) : Cone F ≌ Cone (e.functor ⋙ F) where
functor := whiskering e.functor
inverse := whiskering e.inverse ⋙ postcompose (e.invFunIdAssoc F).hom
- unitIso := NatIso.ofComponents (fun s => Cones.ext (Iso.refl _) (by aesop_cat)) (by aesop_cat)
+ unitIso := NatIso.ofComponents fun s => Cones.ext (Iso.refl _)
counitIso :=
NatIso.ofComponents
- (fun s =>
+ fun s =>
Cones.ext (Iso.refl _)
(by
intro k
- dsimp
- -- See library note [dsimp, simp]
- simpa [e.counit_app_functor] using s.w (e.unitInv.app k)))
- (by aesop_cat)
+ simpa [e.counit_app_functor] using s.w (e.unitInv.app k))
#align category_theory.limits.cones.whiskering_equivalence CategoryTheory.Limits.Cones.whiskeringEquivalence
/-- The categories of cones over `F` and `G` are equivalent if `F` and `G` are naturally isomorphic
@@ -461,10 +450,8 @@ def functorialityEquivalence (e : C ≌ D) : Cone F ≌ Cone (F ⋙ e.functor) :
Functor.associator _ _ _ ≪≫ isoWhiskerLeft _ e.unitIso.symm ≪≫ Functor.rightUnitor _
{ functor := functoriality F e.functor
inverse := functoriality (F ⋙ e.functor) e.inverse ⋙ (postcomposeEquivalence f).functor
- unitIso :=
- NatIso.ofComponents (fun c => Cones.ext (e.unitIso.app _) (by aesop_cat)) (by aesop_cat)
- counitIso :=
- NatIso.ofComponents (fun c => Cones.ext (e.counitIso.app _) (by aesop_cat)) (by aesop_cat)
+ unitIso := NatIso.ofComponents fun c => Cones.ext (e.unitIso.app _)
+ counitIso := NatIso.ofComponents fun c => Cones.ext (e.counitIso.app _)
}
#align category_theory.limits.cones.functoriality_equivalence CategoryTheory.Limits.Cones.functorialityEquivalence
@@ -524,8 +511,8 @@ namespace Cocones
maps. -/
-- Porting note: `@[ext]` used to accept lemmas like this. Now we add an aesop rule
@[aesop apply safe (rule_sets [CategoryTheory]), simps]
-def ext {c c' : Cocone F} (φ : c.pt ≅ c'.pt) (w : ∀ j, c.ι.app j ≫ φ.hom = c'.ι.app j)
- : c ≅ c' where
+def ext {c c' : Cocone F} (φ : c.pt ≅ c'.pt)
+ (w : ∀ j, c.ι.app j ≫ φ.hom = c'.ι.app j := by aesop_cat) : c ≅ c' where
hom := { Hom := φ.hom }
inv :=
{ Hom := φ.inv
@@ -535,7 +522,7 @@ def ext {c c' : Cocone F} (φ : c.pt ≅ c'.pt) (w : ∀ j, c.ι.app j ≫ φ.ho
/-- Eta rule for cocones. -/
@[simps!]
def eta (c : Cocone F) : c ≅ ⟨c.pt, c.ι⟩ :=
- Cocones.ext (Iso.refl _) (by aesop_cat)
+ Cocones.ext (Iso.refl _)
#align category_theory.limits.cocones.eta CategoryTheory.Limits.Cocones.eta
/-- Given a cocone morphism whose object part is an isomorphism, produce an
@@ -543,8 +530,8 @@ isomorphism of cocones.
-/
theorem cocone_iso_of_hom_iso {K : J ⥤ C} {c d : Cocone K} (f : c ⟶ d) [i : IsIso f.Hom] :
IsIso f :=
- ⟨⟨{ Hom := inv f.Hom
- w := fun j => (asIso f.Hom).comp_inv_eq.2 (f.w j).symm }, by aesop_cat⟩⟩
+ ⟨⟨{ Hom := inv f.Hom
+ w := fun j => (asIso f.Hom).comp_inv_eq.2 (f.w j).symm }, by aesop_cat⟩⟩
#align category_theory.limits.cocones.cocone_iso_of_hom_iso CategoryTheory.Limits.Cocones.cocone_iso_of_hom_iso
/-- Functorially precompose a cocone for `F` by a natural transformation `G ⟶ F` to give a cocone
@@ -561,12 +548,12 @@ def precompose {G : J ⥤ C} (α : G ⟶ F) : Cocone F ⥤ Cocone G where
precomposing by `β` and then by `α`. -/
def precomposeComp {G H : J ⥤ C} (α : F ⟶ G) (β : G ⟶ H) :
precompose (α ≫ β) ≅ precompose β ⋙ precompose α :=
- NatIso.ofComponents (fun s => Cocones.ext (Iso.refl _) (by aesop_cat)) (by aesop_cat)
+ NatIso.ofComponents fun s => Cocones.ext (Iso.refl _)
#align category_theory.limits.cocones.precompose_comp CategoryTheory.Limits.Cocones.precomposeComp
/-- Precomposing by the identity does not change the cocone up to isomorphism. -/
def precomposeId : precompose (𝟙 F) ≅ 𝟭 (Cocone F) :=
- NatIso.ofComponents (fun s => Cocones.ext (Iso.refl _) (by aesop_cat)) (by aesop_cat)
+ NatIso.ofComponents fun s => Cocones.ext (Iso.refl _)
#align category_theory.limits.cocones.precompose_id CategoryTheory.Limits.Cocones.precomposeId
/-- If `F` and `G` are naturally isomorphic functors, then they have equivalent categories of
@@ -576,8 +563,8 @@ cocones.
def precomposeEquivalence {G : J ⥤ C} (α : G ≅ F) : Cocone F ≌ Cocone G where
functor := precompose α.hom
inverse := precompose α.inv
- unitIso := NatIso.ofComponents (fun s => Cocones.ext (Iso.refl _) (by aesop_cat)) (by aesop_cat)
- counitIso := NatIso.ofComponents (fun s => Cocones.ext (Iso.refl _) (by aesop_cat)) (by aesop_cat)
+ unitIso := NatIso.ofComponents fun s => Cocones.ext (Iso.refl _)
+ counitIso := NatIso.ofComponents fun s => Cocones.ext (Iso.refl _)
#align category_theory.limits.cocones.precompose_equivalence CategoryTheory.Limits.Cocones.precomposeEquivalence
/-- Whiskering on the left by `E : K ⥤ J` gives a functor from `Cocone F` to `Cocone (E ⋙ F)`.
@@ -598,15 +585,9 @@ def whiskeringEquivalence (e : K ≌ J) : Cocone F ≌ Cocone (e.functor ⋙ F)
precompose
((Functor.leftUnitor F).inv ≫
whiskerRight e.counitIso.inv F ≫ (Functor.associator _ _ _).inv)
- unitIso := NatIso.ofComponents (fun s => Cocones.ext (Iso.refl _) (by aesop_cat)) (by aesop_cat)
- counitIso :=
- NatIso.ofComponents
- (fun s =>
- Cocones.ext (Iso.refl _)
- (by
- intro k
- simpa [e.counitInv_app_functor k] using s.w (e.unit.app k)))
- (by aesop_cat)
+ unitIso := NatIso.ofComponents fun s => Cocones.ext (Iso.refl _)
+ counitIso := NatIso.ofComponents fun s =>
+ Cocones.ext (Iso.refl _) fun k => by simpa [e.counitInv_app_functor k] using s.w (e.unit.app k)
#align category_theory.limits.cocones.whiskering_equivalence CategoryTheory.Limits.Cocones.whiskeringEquivalence
/--
@@ -642,8 +623,6 @@ def functoriality : Cocone F ⥤ Cocone (F ⋙ G) where
map f :=
{ Hom := G.map f.Hom
w := by intros; rw [← Functor.map_comp, CoconeMorphism.w] }
- map_id := by aesop_cat
- map_comp := by aesop_cat
#align category_theory.limits.cocones.functoriality CategoryTheory.Limits.Cocones.functoriality
instance functorialityFull [Full G] [Faithful G] : Full (functoriality F G) where
@@ -668,18 +647,13 @@ def functorialityEquivalence (e : C ≌ D) : Cocone F ≌ Cocone (F ⋙ e.functo
Functor.associator _ _ _ ≪≫ isoWhiskerLeft _ e.unitIso.symm ≪≫ Functor.rightUnitor _
{ functor := functoriality F e.functor
inverse := functoriality (F ⋙ e.functor) e.inverse ⋙ (precomposeEquivalence f.symm).functor
- unitIso :=
- NatIso.ofComponents (fun c => Cocones.ext (e.unitIso.app _) (by aesop_cat)) (by aesop_cat)
+ unitIso := NatIso.ofComponents fun c => Cocones.ext (e.unitIso.app _)
counitIso :=
- NatIso.ofComponents
- (fun c => Cocones.ext (e.counitIso.app _)
- (by
- -- Unfortunately this doesn't work by `aesop_cat`.
- -- In this configuration `simp` reaches a dead-end and needs help.
- intro j
- simp [← Equivalence.counitInv_app_functor]))
- (by aesop_cat)
- }
+ NatIso.ofComponents fun c => Cocones.ext (e.counitIso.app _)
+ (fun j =>
+ -- Unfortunately this doesn't work by `aesop_cat`.
+ -- In this configuration `simp` reaches a dead-end and needs help.
+ by simp [← Equivalence.counitInv_app_functor]) }
#align category_theory.limits.cocones.functoriality_equivalence CategoryTheory.Limits.Cocones.functorialityEquivalence
/-- If `F` reflects isomorphisms, then `cocones.functoriality F` reflects isomorphisms
@@ -774,7 +748,7 @@ def mapCoconeInvMapCocone {F : J ⥤ D} (H : D ⥤ C) [IsEquivalence H] (c : Coc
@[simps!]
def functorialityCompPostcompose {H H' : C ⥤ D} (α : H ≅ H') :
Cones.functoriality F H ⋙ Cones.postcompose (whiskerLeft F α.hom) ≅ Cones.functoriality F H' :=
- NatIso.ofComponents (fun c => Cones.ext (α.app _) (by aesop_cat)) (by aesop_cat)
+ NatIso.ofComponents fun c => Cones.ext (α.app _)
#align category_theory.functor.functoriality_comp_postcompose CategoryTheory.Functor.functorialityCompPostcompose
/-- For `F : J ⥤ C`, given a cone `c : Cone F`, and a natural isomorphism `α : H ≅ H'` for functors
@@ -796,7 +770,7 @@ a cone over `G ⋙ H`, and they are both isomorphic.
def mapConePostcompose {α : F ⟶ G} {c} :
mapCone H ((Cones.postcompose α).obj c) ≅
(Cones.postcompose (whiskerRight α H : _)).obj (mapCone H c) :=
- Cones.ext (Iso.refl _) (by aesop_cat)
+ Cones.ext (Iso.refl _)
#align category_theory.functor.map_cone_postcompose CategoryTheory.Functor.mapConePostcompose
/-- `mapCone` commutes with `postcomposeEquivalence`
@@ -805,7 +779,7 @@ def mapConePostcompose {α : F ⟶ G} {c} :
def mapConePostcomposeEquivalenceFunctor {α : F ≅ G} {c} :
mapCone H ((Cones.postcomposeEquivalence α).functor.obj c) ≅
(Cones.postcomposeEquivalence (isoWhiskerRight α H : _)).functor.obj (mapCone H c) :=
- Cones.ext (Iso.refl _) (by aesop_cat)
+ Cones.ext (Iso.refl _)
#align category_theory.functor.map_cone_postcompose_equivalence_functor CategoryTheory.Functor.mapConePostcomposeEquivalenceFunctor
/-- `functoriality F _ ⋙ precompose (whiskerLeft F _)` simplifies to `functoriality F _`. -/
@@ -813,7 +787,7 @@ def mapConePostcomposeEquivalenceFunctor {α : F ≅ G} {c} :
def functorialityCompPrecompose {H H' : C ⥤ D} (α : H ≅ H') :
Cocones.functoriality F H ⋙ Cocones.precompose (whiskerLeft F α.inv) ≅
Cocones.functoriality F H' :=
- NatIso.ofComponents (fun c => Cocones.ext (α.app _) (by aesop_cat)) (by aesop_cat)
+ NatIso.ofComponents fun c => Cocones.ext (α.app _)
#align category_theory.functor.functoriality_comp_precompose CategoryTheory.Functor.functorialityCompPrecompose
/--
@@ -835,7 +809,7 @@ ways of producing a cocone over `G ⋙ H`, and they are both isomorphic.
def mapCoconePrecompose {α : F ⟶ G} {c} :
mapCocone H ((Cocones.precompose α).obj c) ≅
(Cocones.precompose (whiskerRight α H : _)).obj (mapCocone H c) :=
- Cocones.ext (Iso.refl _) (by aesop_cat)
+ Cocones.ext (Iso.refl _)
#align category_theory.functor.map_cocone_precompose CategoryTheory.Functor.mapCoconePrecompose
/-- `mapCocone` commutes with `precomposeEquivalence`
@@ -844,14 +818,14 @@ def mapCoconePrecompose {α : F ⟶ G} {c} :
def mapCoconePrecomposeEquivalenceFunctor {α : F ≅ G} {c} :
mapCocone H ((Cocones.precomposeEquivalence α).functor.obj c) ≅
(Cocones.precomposeEquivalence (isoWhiskerRight α H : _)).functor.obj (mapCocone H c) :=
- Cocones.ext (Iso.refl _) (by aesop_cat)
+ Cocones.ext (Iso.refl _)
#align category_theory.functor.map_cocone_precompose_equivalence_functor CategoryTheory.Functor.mapCoconePrecomposeEquivalenceFunctor
/-- `mapCone` commutes with `whisker`
-/
@[simps!]
def mapConeWhisker {E : K ⥤ J} {c : Cone F} : mapCone H (c.whisker E) ≅ (mapCone H c).whisker E :=
- Cones.ext (Iso.refl _) (by aesop_cat)
+ Cones.ext (Iso.refl _)
#align category_theory.functor.map_cone_whisker CategoryTheory.Functor.mapConeWhisker
/-- `mapCocone` commutes with `whisker`
@@ -859,7 +833,7 @@ def mapConeWhisker {E : K ⥤ J} {c : Cone F} : mapCone H (c.whisker E) ≅ (map
@[simps!]
def mapCoconeWhisker {E : K ⥤ J} {c : Cocone F} :
mapCocone H (c.whisker E) ≅ (mapCocone H c).whisker E :=
- Cocones.ext (Iso.refl _) (by aesop_cat)
+ Cocones.ext (Iso.refl _)
#align category_theory.functor.map_cocone_whisker CategoryTheory.Functor.mapCoconeWhisker
end Functor
@@ -926,19 +900,13 @@ def coconeEquivalenceOpConeOp : Cocone F ≌ (Cone F.op)ᵒᵖ where
apply Quiver.Hom.op_inj
dsimp
apply ConeMorphism.w } }
- unitIso :=
- NatIso.ofComponents
- (fun c => Cocones.ext (Iso.refl _) (by simp))
- fun {X} {Y} f => by
- apply CoconeMorphism.ext
- simp
+ unitIso := NatIso.ofComponents (fun c => Cocones.ext (Iso.refl _))
counitIso :=
NatIso.ofComponents
(fun c => by
- induction c using Opposite.rec'
- dsimp
+ induction c
apply Iso.op
- exact Cones.ext (Iso.refl _) (by simp))
+ exact Cones.ext (Iso.refl _))
fun {X} {Y} f =>
Quiver.Hom.unop_inj (ConeMorphism.ext _ _ (by simp))
functor_unitIso_comp c := by
@@ -1080,14 +1048,14 @@ variable (G : C ⥤ D)
-- Porting note: removed @[simps (config := { rhsMd := semireducible })] and replaced with
@[simps!]
def mapConeOp (t : Cone F) : (mapCone G t).op ≅ mapCocone G.op t.op :=
- Cocones.ext (Iso.refl _) (by aesop_cat)
+ Cocones.ext (Iso.refl _)
#align category_theory.functor.map_cone_op CategoryTheory.Functor.mapConeOp
/-- The opposite cone of the image of a cocone is the image of the opposite cone. -/
-- Porting note: removed @[simps (config := { rhsMd := semireducible })] and replaced with
@[simps!]
def mapCoconeOp {t : Cocone F} : (mapCocone G t).op ≅ mapCone G.op t.op :=
- Cones.ext (Iso.refl _) (by aesop_cat)
+ Cones.ext (Iso.refl _)
#align category_theory.functor.map_cocone_op CategoryTheory.Functor.mapCoconeOp
end
@@ -605,7 +605,6 @@ def whiskeringEquivalence (e : K ≌ J) : Cocone F ≌ Cocone (e.functor ⋙ F)
Cocones.ext (Iso.refl _)
(by
intro k
- dsimp
simpa [e.counitInv_app_functor k] using s.w (e.unit.app k)))
(by aesop_cat)
#align category_theory.limits.cocones.whiskering_equivalence CategoryTheory.Limits.Cocones.whiskeringEquivalence
@@ -673,19 +672,13 @@ def functorialityEquivalence (e : C ≌ D) : Cocone F ≌ Cocone (F ⋙ e.functo
NatIso.ofComponents (fun c => Cocones.ext (e.unitIso.app _) (by aesop_cat)) (by aesop_cat)
counitIso :=
NatIso.ofComponents
- (fun c =>
- Cocones.ext (e.counitIso.app _)
+ (fun c => Cocones.ext (e.counitIso.app _)
(by
- -- Unfortunately this doesn't work by `tidy`.
+ -- Unfortunately this doesn't work by `aesop_cat`.
-- In this configuration `simp` reaches a dead-end and needs help.
intro j
- dsimp
- simp only [← Equivalence.counitInv_app_functor, Iso.inv_hom_id_app, map_comp,
- Equivalence.fun_inv_map, assoc, id_comp, Iso.inv_hom_id_app_assoc]
- dsimp; simp))-- See note [dsimp, simp].
- fun {c} {c'} f => by
- apply CoconeMorphism.ext
- simp
+ simp [← Equivalence.counitInv_app_functor]))
+ (by aesop_cat)
}
#align category_theory.limits.cocones.functoriality_equivalence CategoryTheory.Limits.Cocones.functorialityEquivalence
@@ -935,11 +928,7 @@ def coconeEquivalenceOpConeOp : Cocone F ≌ (Cone F.op)ᵒᵖ where
apply ConeMorphism.w } }
unitIso :=
NatIso.ofComponents
- (fun c =>
- Cocones.ext (Iso.refl _)
- (by
- dsimp
- simp))
+ (fun c => Cocones.ext (Iso.refl _) (by simp))
fun {X} {Y} f => by
apply CoconeMorphism.ext
simp
@@ -949,17 +938,9 @@ def coconeEquivalenceOpConeOp : Cocone F ≌ (Cone F.op)ᵒᵖ where
induction c using Opposite.rec'
dsimp
apply Iso.op
- exact
- Cones.ext (Iso.refl _)
- (by
- dsimp
- simp))
+ exact Cones.ext (Iso.refl _) (by simp))
fun {X} {Y} f =>
- Quiver.Hom.unop_inj
- (ConeMorphism.ext _ _
- (by
- dsimp
- simp))
+ Quiver.Hom.unop_inj (ConeMorphism.ext _ _ (by simp))
functor_unitIso_comp c := by
apply Quiver.Hom.unop_inj
apply ConeMorphism.ext
I ran codespell Mathlib
and got tired halfway through the suggestions.
@@ -286,7 +286,7 @@ commutes with the cone legs. -/
structure ConeMorphism (A B : Cone F) where
/-- A morphism between the two vertex objects of the cones -/
Hom : A.pt ⟶ B.pt
- /-- The triangle consisting of the two natural tranformations and `Hom` commutes -/
+ /-- The triangle consisting of the two natural transformations and `Hom` commutes -/
w : ∀ j : J, Hom ≫ B.π.app j = A.π.app j := by aesop_cat
#align category_theory.limits.cone_morphism CategoryTheory.Limits.ConeMorphism
#align category_theory.limits.cone_morphism.w' CategoryTheory.Limits.ConeMorphism.w
@@ -720,12 +720,16 @@ def mapCone (c : Cone F) : Cone (F ⋙ H) :=
(Cones.functoriality F H).obj c
#align category_theory.functor.map_cone CategoryTheory.Functor.mapCone
+pp_extended_field_notation Functor.mapCone
+
/-- The image of a cocone in C under a functor G : C ⥤ D is a cocone in D. -/
@[simps!]
def mapCocone (c : Cocone F) : Cocone (F ⋙ H) :=
(Cocones.functoriality F H).obj c
#align category_theory.functor.map_cocone CategoryTheory.Functor.mapCocone
+pp_extended_field_notation Functor.mapCocone
+
/-- Given a cone morphism `c ⟶ c'`, construct a cone morphism on the mapped cones functorially. -/
def mapConeMorphism {c c' : Cone F} (f : c ⟶ c') : H.mapCone c ⟶ H.mapCone c' :=
(Cones.functoriality F H).map f
@@ -942,7 +942,7 @@ def coconeEquivalenceOpConeOp : Cocone F ≌ (Cone F.op)ᵒᵖ where
counitIso :=
NatIso.ofComponents
(fun c => by
- induction c using Opposite.rec
+ induction c using Opposite.rec'
dsimp
apply Iso.op
exact
@@ -970,13 +970,7 @@ end
section
variable {F : J ⥤ Cᵒᵖ}
-/- Porting note: removed a few simps configs
-`@[simps (config :=
- { rhsMd := semireducible
- simpRhs := true })]`
-and replace with `@[simps]`-/
--- Here and below we only automatically generate the `@[simp]` lemma for the `X` field,
--- as we can write a simpler `rfl` lemma for the components of the natural transformation by hand.
+
/-- Change a cocone on `F.leftOp : Jᵒᵖ ⥤ C` to a cocone on `F : J ⥤ Cᵒᵖ`. -/
@[simps!]
def coneOfCoconeLeftOp (c : Cocone F.leftOp) : Cone F where
This is the forward port of https://github.com/leanprover-community/mathlib/pull/18742. That PR hasn't landed yet, so this PR still needs to be updated with the new commit SHA.
Co-authored-by: Scott Morrison <scott.morrison@gmail.com> Co-authored-by: Joël Riou <joel.riou@universite-paris-saclay.fr>
@@ -283,7 +283,6 @@ end Cocone
/-- A cone morphism between two cones for the same diagram is a morphism of the cone points which
commutes with the cone legs. -/
-@[ext]
structure ConeMorphism (A B : Cone F) where
/-- A morphism between the two vertex objects of the cones -/
Hom : A.pt ⟶ B.pt
@@ -306,6 +305,15 @@ instance Cone.category : Category (Cone F) where
id B := { Hom := 𝟙 B.pt }
#align category_theory.limits.cone.category CategoryTheory.Limits.Cone.category
+-- Porting note: if we do not have `simps` automatically generate the lemma for simplifying
+-- the Hom field of a category, we need to write the `ext` lemma in terms of the categorical
+-- morphism, rather than the underlying structure.
+@[ext]
+theorem ConeMorphism.ext {c c' : Cone F} (f g : c ⟶ c') (w : f.Hom = g.Hom) : f = g := by
+ cases f
+ cases g
+ congr
+
namespace Cones
/-- To give an isomorphism between cones, it suffices to give an
@@ -479,7 +487,6 @@ end Cones
/-- A cocone morphism between two cocones for the same diagram is a morphism of the cocone points
which commutes with the cocone legs. -/
-@[ext]
structure CoconeMorphism (A B : Cocone F) where
/-- A morphism between the (co)vertex objects in `C` -/
Hom : A.pt ⟶ B.pt
@@ -501,6 +508,15 @@ instance Cocone.category : Category (Cocone F) where
id B := { Hom := 𝟙 B.pt }
#align category_theory.limits.cocone.category CategoryTheory.Limits.Cocone.category
+-- Porting note: if we do not have `simps` automatically generate the lemma for simplifying
+-- the Hom field of a category, we need to write the `ext` lemma in terms of the categorical
+-- morphism, rather than the underlying structure.
+@[ext]
+theorem CoconeMorphism.ext {c c' : Cocone F} (f g : c ⟶ c') (w : f.Hom = g.Hom) : f = g := by
+ cases f
+ cases g
+ congr
+
namespace Cocones
/-- To give an isomorphism between cocones, it suffices to give an
@@ -152,7 +152,7 @@ theorem Cone.w {F : J ⥤ C} (c : Cone F) {j j' : J} (f : j ⟶ j') :
* an object `c.pt` and
* a natural transformation `c.ι : F ⟶ c.pt` from `F` to the constant `c.pt` functor.
-`Cocone F` is equivalent, via `cone.equiv` below, to `Σ X, F.cocones.obj X`.
+`Cocone F` is equivalent, via `Cone.equiv` below, to `Σ X, F.cocones.obj X`.
-/
structure Cocone (F : J ⥤ C) where
/-- An object of `C` -/
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>
@@ -175,7 +175,7 @@ instance inhabitedCocone (F : Discrete PUnit ⥤ C) : Inhabited (Cocone F) :=
}⟩
#align category_theory.limits.inhabited_cocone CategoryTheory.Limits.inhabitedCocone
-@[reassoc]
+@[reassoc (attr := simp 1001)]
theorem Cocone.w {F : J ⥤ C} (c : Cocone F) {j j' : J} (f : j ⟶ j') :
F.map f ≫ c.ι.app j' = c.ι.app j := by
rw [c.ι.naturality f]
@@ -157,7 +157,7 @@ theorem Cone.w {F : J ⥤ C} (c : Cone F) {j j' : J} (f : j ⟶ j') :
structure Cocone (F : J ⥤ C) where
/-- An object of `C` -/
pt : C
- /-- A natural transformation from `F` to the constant functor at `X` -/
+ /-- A natural transformation from `F` to the constant functor at `pt` -/
ι : F ⟶ (const J).obj pt
#align category_theory.limits.cocone CategoryTheory.Limits.Cocone
set_option linter.uppercaseLean3 false in
@@ -274,8 +274,7 @@ def extend (c : Cocone F) {Y : C} (f : c.pt ⟶ Y) : Cocone F where
version.
-/
@[simps]
-def whisker (E : K ⥤ J) (c : Cocone F) : Cocone (E ⋙ F)
- where
+def whisker (E : K ⥤ J) (c : Cocone F) : Cocone (E ⋙ F) where
pt := c.pt
ι := whiskerLeft E c.ι
#align category_theory.limits.cocone.whisker CategoryTheory.Limits.Cocone.whisker
@@ -339,8 +338,7 @@ theorem cone_iso_of_hom_iso {K : J ⥤ C} {c d : Cone K} (f : c ⟶ d) [i : IsIs
Functorially postcompose a cone for `F` by a natural transformation `F ⟶ G` to give a cone for `G`.
-/
@[simps]
-def postcompose {G : J ⥤ C} (α : F ⟶ G) : Cone F ⥤ Cone G
- where
+def postcompose {G : J ⥤ C} (α : F ⟶ G) : Cone F ⥤ Cone G where
obj c :=
{ pt := c.pt
π := c.π ≫ α }
@@ -365,8 +363,7 @@ def postcomposeId : postcompose (𝟙 F) ≅ 𝟭 (Cone F) :=
cones.
-/
@[simps]
-def postcomposeEquivalence {G : J ⥤ C} (α : F ≅ G) : Cone F ≌ Cone G
- where
+def postcomposeEquivalence {G : J ⥤ C} (α : F ≅ G) : Cone F ≌ Cone G where
functor := postcompose α.hom
inverse := postcompose α.inv
unitIso := NatIso.ofComponents (fun s => Cones.ext (Iso.refl _) (by aesop_cat)) (by aesop_cat)
@@ -376,8 +373,7 @@ def postcomposeEquivalence {G : J ⥤ C} (α : F ≅ G) : Cone F ≌ Cone G
/-- Whiskering on the left by `E : K ⥤ J` gives a functor from `Cone F` to `Cone (E ⋙ F)`.
-/
@[simps]
-def whiskering (E : K ⥤ J) : Cone F ⥤ Cone (E ⋙ F)
- where
+def whiskering (E : K ⥤ J) : Cone F ⥤ Cone (E ⋙ F) where
obj c := c.whisker E
map f := { Hom := f.Hom }
#align category_theory.limits.cones.whiskering CategoryTheory.Limits.Cones.whiskering
@@ -385,8 +381,7 @@ def whiskering (E : K ⥤ J) : Cone F ⥤ Cone (E ⋙ F)
/-- Whiskering by an equivalence gives an equivalence between categories of cones.
-/
@[simps]
-def whiskeringEquivalence (e : K ≌ J) : Cone F ≌ Cone (e.functor ⋙ F)
- where
+def whiskeringEquivalence (e : K ≌ J) : Cone F ≌ Cone (e.functor ⋙ F) where
functor := whiskering e.functor
inverse := whiskering e.inverse ⋙ postcompose (e.invFunIdAssoc F).hom
unitIso := NatIso.ofComponents (fun s => Cones.ext (Iso.refl _) (by aesop_cat)) (by aesop_cat)
@@ -572,8 +567,7 @@ def precomposeEquivalence {G : J ⥤ C} (α : G ≅ F) : Cocone F ≌ Cocone G w
/-- Whiskering on the left by `E : K ⥤ J` gives a functor from `Cocone F` to `Cocone (E ⋙ F)`.
-/
@[simps]
-def whiskering (E : K ⥤ J) : Cocone F ⥤ Cocone (E ⋙ F)
- where
+def whiskering (E : K ⥤ J) : Cocone F ⥤ Cocone (E ⋙ F) where
obj c := c.whisker E
map f := { Hom := f.Hom }
#align category_theory.limits.cocones.whiskering CategoryTheory.Limits.Cocones.whiskering
@@ -581,8 +575,7 @@ def whiskering (E : K ⥤ J) : Cocone F ⥤ Cocone (E ⋙ F)
/-- Whiskering by an equivalence gives an equivalence between categories of cones.
-/
@[simps]
-def whiskeringEquivalence (e : K ≌ J) : Cocone F ≌ Cocone (e.functor ⋙ F)
- where
+def whiskeringEquivalence (e : K ≌ J) : Cocone F ≌ Cocone (e.functor ⋙ F) where
functor := whiskering e.functor
inverse :=
whiskering e.inverse ⋙
@@ -902,8 +895,7 @@ variable (F)
is equivalent to the opposite category of
the category of cones on the opposite of `F`.
-/
-def coconeEquivalenceOpConeOp : Cocone F ≌ (Cone F.op)ᵒᵖ
- where
+def coconeEquivalenceOpConeOp : Cocone F ≌ (Cone F.op)ᵒᵖ where
functor :=
{ obj := fun c => op (Cocone.op c)
map := fun {X} {Y} f =>
@@ -971,16 +963,14 @@ and replace with `@[simps]`-/
-- as we can write a simpler `rfl` lemma for the components of the natural transformation by hand.
/-- Change a cocone on `F.leftOp : Jᵒᵖ ⥤ C` to a cocone on `F : J ⥤ Cᵒᵖ`. -/
@[simps!]
-def coneOfCoconeLeftOp (c : Cocone F.leftOp) : Cone F
- where
+def coneOfCoconeLeftOp (c : Cocone F.leftOp) : Cone F where
pt := op c.pt
π := NatTrans.removeLeftOp c.ι
#align category_theory.limits.cone_of_cocone_left_op CategoryTheory.Limits.coneOfCoconeLeftOp
/-- Change a cone on `F : J ⥤ Cᵒᵖ` to a cocone on `F.leftOp : Jᵒᵖ ⥤ C`. -/
@[simps!]
-def coconeLeftOpOfCone (c : Cone F) : Cocone F.leftOp
- where
+def coconeLeftOpOfCone (c : Cone F) : Cocone F.leftOp where
pt := unop c.pt
ι := NatTrans.leftOp c.π
#align category_theory.limits.cocone_left_op_of_cone CategoryTheory.Limits.coconeLeftOpOfCone
@@ -990,8 +980,7 @@ def coconeLeftOpOfCone (c : Cone F) : Cocone F.leftOp
being simplified properly. -/
/-- Change a cone on `F.leftOp : Jᵒᵖ ⥤ C` to a cocone on `F : J ⥤ Cᵒᵖ`. -/
@[simps pt]
-def coconeOfConeLeftOp (c : Cone F.leftOp) : Cocone F
- where
+def coconeOfConeLeftOp (c : Cone F.leftOp) : Cocone F where
pt := op c.pt
ι := NatTrans.removeLeftOp c.π
#align category_theory.limits.cocone_of_cone_left_op CategoryTheory.Limits.coconeOfConeLeftOp
@@ -1005,8 +994,7 @@ theorem coconeOfConeLeftOp_ι_app (c : Cone F.leftOp) (j) :
/-- Change a cocone on `F : J ⥤ Cᵒᵖ` to a cone on `F.leftOp : Jᵒᵖ ⥤ C`. -/
@[simps!]
-def coneLeftOpOfCocone (c : Cocone F) : Cone F.leftOp
- where
+def coneLeftOpOfCocone (c : Cocone F) : Cone F.leftOp where
pt := unop c.pt
π := NatTrans.leftOp c.ι
#align category_theory.limits.cone_left_op_of_cocone CategoryTheory.Limits.coneLeftOpOfCocone
@@ -1019,32 +1007,28 @@ variable {F : Jᵒᵖ ⥤ C}
/-- Change a cocone on `F.rightOp : J ⥤ Cᵒᵖ` to a cone on `F : Jᵒᵖ ⥤ C`. -/
@[simps]
-def coneOfCoconeRightOp (c : Cocone F.rightOp) : Cone F
- where
+def coneOfCoconeRightOp (c : Cocone F.rightOp) : Cone F where
pt := unop c.pt
π := NatTrans.removeRightOp c.ι
#align category_theory.limits.cone_of_cocone_right_op CategoryTheory.Limits.coneOfCoconeRightOp
/-- Change a cone on `F : Jᵒᵖ ⥤ C` to a cocone on `F.rightOp : Jᵒᵖ ⥤ C`. -/
@[simps]
-def coconeRightOpOfCone (c : Cone F) : Cocone F.rightOp
- where
+def coconeRightOpOfCone (c : Cone F) : Cocone F.rightOp where
pt := op c.pt
ι := NatTrans.rightOp c.π
#align category_theory.limits.cocone_right_op_of_cone CategoryTheory.Limits.coconeRightOpOfCone
/-- Change a cone on `F.rightOp : J ⥤ Cᵒᵖ` to a cocone on `F : Jᵒᵖ ⥤ C`. -/
@[simps]
-def coconeOfConeRightOp (c : Cone F.rightOp) : Cocone F
- where
+def coconeOfConeRightOp (c : Cone F.rightOp) : Cocone F where
pt := unop c.pt
ι := NatTrans.removeRightOp c.π
#align category_theory.limits.cocone_of_cone_right_op CategoryTheory.Limits.coconeOfConeRightOp
/-- Change a cocone on `F : Jᵒᵖ ⥤ C` to a cone on `F.rightOp : J ⥤ Cᵒᵖ`. -/
@[simps]
-def coneRightOpOfCocone (c : Cocone F) : Cone F.rightOp
- where
+def coneRightOpOfCocone (c : Cocone F) : Cone F.rightOp where
pt := op c.pt
π := NatTrans.rightOp c.ι
#align category_theory.limits.cone_right_op_of_cocone CategoryTheory.Limits.coneRightOpOfCocone
@@ -1057,32 +1041,28 @@ variable {F : Jᵒᵖ ⥤ Cᵒᵖ}
/-- Change a cocone on `F.unop : J ⥤ C` into a cone on `F : Jᵒᵖ ⥤ Cᵒᵖ`. -/
@[simps]
-def coneOfCoconeUnop (c : Cocone F.unop) : Cone F
- where
+def coneOfCoconeUnop (c : Cocone F.unop) : Cone F where
pt := op c.pt
π := NatTrans.removeUnop c.ι
#align category_theory.limits.cone_of_cocone_unop CategoryTheory.Limits.coneOfCoconeUnop
/-- Change a cone on `F : Jᵒᵖ ⥤ Cᵒᵖ` into a cocone on `F.unop : J ⥤ C`. -/
@[simps]
-def coconeUnopOfCone (c : Cone F) : Cocone F.unop
- where
+def coconeUnopOfCone (c : Cone F) : Cocone F.unop where
pt := unop c.pt
ι := NatTrans.unop c.π
#align category_theory.limits.cocone_unop_of_cone CategoryTheory.Limits.coconeUnopOfCone
/-- Change a cone on `F.unop : J ⥤ C` into a cocone on `F : Jᵒᵖ ⥤ Cᵒᵖ`. -/
@[simps]
-def coconeOfConeUnop (c : Cone F.unop) : Cocone F
- where
+def coconeOfConeUnop (c : Cone F.unop) : Cocone F where
pt := op c.pt
ι := NatTrans.removeUnop c.π
#align category_theory.limits.cocone_of_cone_unop CategoryTheory.Limits.coconeOfConeUnop
/-- Change a cocone on `F : Jᵒᵖ ⥤ Cᵒᵖ` into a cone on `F.unop : J ⥤ C`. -/
@[simps]
-def coneUnopOfCocone (c : Cocone F) : Cone F.unop
- where
+def coneUnopOfCocone (c : Cocone F) : Cone F.unop where
pt := unop c.pt
π := NatTrans.unop c.ι
#align category_theory.limits.cone_unop_of_cocone CategoryTheory.Limits.coneUnopOfCocone
The dot notation for Functor.mapCone
is fixed by changing the order of implicit/explicit parameters.
@@ -131,13 +131,13 @@ set_option linter.uppercaseLean3 false in
instance inhabitedCone (F : Discrete PUnit ⥤ C) : Inhabited (Cone F) :=
⟨{ pt := F.obj ⟨⟨⟩⟩
- π := { app := fun ⟨⟨⟩⟩ => 𝟙 _
- naturality := by
+ π := { app := fun ⟨⟨⟩⟩ => 𝟙 _
+ naturality := by
intro X Y f
- match X, Y, f with
- | .mk A, .mk B, .up g =>
- aesop_cat
- }
+ match X, Y, f with
+ | .mk A, .mk B, .up g =>
+ aesop_cat
+ }
}⟩
#align category_theory.limits.inhabited_cone CategoryTheory.Limits.inhabitedCone
@@ -165,13 +165,13 @@ set_option linter.uppercaseLean3 false in
instance inhabitedCocone (F : Discrete PUnit ⥤ C) : Inhabited (Cocone F) :=
⟨{ pt := F.obj ⟨⟨⟩⟩
- ι := { app := fun ⟨⟨⟩⟩ => 𝟙 _
- naturality := by
+ ι := { app := fun ⟨⟨⟩⟩ => 𝟙 _
+ naturality := by
intro X Y f
- match X, Y, f with
- | .mk A, .mk B, .up g =>
+ match X, Y, f with
+ | .mk A, .mk B, .up g =>
aesop_cat
- }
+ }
}⟩
#align category_theory.limits.inhabited_cocone CategoryTheory.Limits.inhabitedCocone
@@ -208,19 +208,19 @@ def equiv (F : J ⥤ C) : Cone F ≅ ΣX, F.cones.obj X
/-- A map to the vertex of a cone naturally induces a cone by composition. -/
@[simps]
-def extensions (c : Cone F) : yoneda.obj c.pt ⋙ uliftFunctor.{u₁} ⟶ F.cones where
+def extensions (c : Cone F) : yoneda.obj c.pt ⋙ uliftFunctor.{u₁} ⟶ F.cones where
app X f := (const J).map f.down ≫ c.π
- naturality := by
+ naturality := by
intros X Y f
dsimp [yoneda,const]
- funext X
+ funext X
aesop_cat
#align category_theory.limits.cone.extensions CategoryTheory.Limits.Cone.extensions
/-- A map to the vertex of a cone induces a cone by composition. -/
@[simps]
def extend (c : Cone F) {X : C} (f : X ⟶ c.pt) : Cone F :=
- { pt := X
+ { pt := X
π := c.extensions.app (op X) ⟨f⟩ }
#align category_theory.limits.cone.extend CategoryTheory.Limits.Cone.extend
@@ -255,9 +255,9 @@ def equiv (F : J ⥤ C) : Cocone F ≅ ΣX, F.cocones.obj X
/-- A map from the vertex of a cocone naturally induces a cocone by composition. -/
@[simps]
-def extensions (c : Cocone F) : coyoneda.obj (op c.pt) ⋙ uliftFunctor.{u₁} ⟶ F.cocones where
+def extensions (c : Cocone F) : coyoneda.obj (op c.pt) ⋙ uliftFunctor.{u₁} ⟶ F.cocones where
app X f := c.ι ≫ (const J).map f.down
- naturality := fun {X} {Y} f => by
+ naturality := fun {X} {Y} f => by
dsimp [coyoneda,const]
funext X
aesop_cat
@@ -265,8 +265,8 @@ def extensions (c : Cocone F) : coyoneda.obj (op c.pt) ⋙ uliftFunctor.{u₁}
/-- A map from the vertex of a cocone induces a cocone by composition. -/
@[simps]
-def extend (c : Cocone F) {Y : C} (f : c.pt ⟶ Y) : Cocone F where
- pt := Y
+def extend (c : Cocone F) {Y : C} (f : c.pt ⟶ Y) : Cocone F where
+ pt := Y
ι := c.extensions.app Y ⟨f⟩
#align category_theory.limits.cocone.extend CategoryTheory.Limits.Cocone.extend
@@ -436,17 +436,17 @@ def functoriality : Cone F ⥤ Cone (F ⋙ G) where
w := fun j => by simp [-ConeMorphism.w, ← f.w j] }
#align category_theory.limits.cones.functoriality CategoryTheory.Limits.Cones.functoriality
-instance functorialityFull [Full G] [Faithful G] : Full (functoriality F G) where
+instance functorialityFull [Full G] [Faithful G] : Full (functoriality F G) where
preimage t :=
{ Hom := G.preimage t.Hom
w := fun j => G.map_injective (by simpa using t.w j) }
#align category_theory.limits.cones.functoriality_full CategoryTheory.Limits.Cones.functorialityFull
-instance functorialityFaithful [Faithful G] : Faithful (Cones.functoriality F G) where
+instance functorialityFaithful [Faithful G] : Faithful (Cones.functoriality F G) where
map_injective {c} {c'} f g e := by
apply ConeMorphism.ext f g
let f := ConeMorphism.mk.inj e; dsimp [functoriality]
- apply G.map_injective f
+ apply G.map_injective f
#align category_theory.limits.cones.functoriality_faithful CategoryTheory.Limits.Cones.functorialityFaithful
/-- If `e : C ≌ D` is an equivalence of categories, then `functoriality F e.functor` induces an
@@ -458,9 +458,9 @@ def functorialityEquivalence (e : C ≌ D) : Cone F ≌ Cone (F ⋙ e.functor) :
Functor.associator _ _ _ ≪≫ isoWhiskerLeft _ e.unitIso.symm ≪≫ Functor.rightUnitor _
{ functor := functoriality F e.functor
inverse := functoriality (F ⋙ e.functor) e.inverse ⋙ (postcomposeEquivalence f).functor
- unitIso :=
+ unitIso :=
NatIso.ofComponents (fun c => Cones.ext (e.unitIso.app _) (by aesop_cat)) (by aesop_cat)
- counitIso :=
+ counitIso :=
NatIso.ofComponents (fun c => Cones.ext (e.counitIso.app _) (by aesop_cat)) (by aesop_cat)
}
#align category_theory.limits.cones.functoriality_equivalence CategoryTheory.Limits.Cones.functorialityEquivalence
@@ -471,8 +471,8 @@ as well.
instance reflects_cone_isomorphism (F : C ⥤ D) [ReflectsIsomorphisms F] (K : J ⥤ C) :
ReflectsIsomorphisms (Cones.functoriality K F) := by
constructor
- intro A B f _
- haveI : IsIso (F.map f.Hom) :=
+ intro A B f _
+ haveI : IsIso (F.map f.Hom) :=
(Cones.forget (K ⋙ F)).map_isIso ((Cones.functoriality K F).map f)
haveI := ReflectsIsomorphisms.reflects F f.Hom
apply cone_iso_of_hom_iso
@@ -513,7 +513,7 @@ namespace Cocones
maps. -/
-- Porting note: `@[ext]` used to accept lemmas like this. Now we add an aesop rule
@[aesop apply safe (rule_sets [CategoryTheory]), simps]
-def ext {c c' : Cocone F} (φ : c.pt ≅ c'.pt) (w : ∀ j, c.ι.app j ≫ φ.hom = c'.ι.app j)
+def ext {c c' : Cocone F} (φ : c.pt ≅ c'.pt) (w : ∀ j, c.ι.app j ≫ φ.hom = c'.ι.app j)
: c ≅ c' where
hom := { Hom := φ.hom }
inv :=
@@ -634,19 +634,19 @@ def functoriality : Cocone F ⥤ Cocone (F ⋙ G) where
map f :=
{ Hom := G.map f.Hom
w := by intros; rw [← Functor.map_comp, CoconeMorphism.w] }
- map_id := by aesop_cat
- map_comp := by aesop_cat
+ map_id := by aesop_cat
+ map_comp := by aesop_cat
#align category_theory.limits.cocones.functoriality CategoryTheory.Limits.Cocones.functoriality
-instance functorialityFull [Full G] [Faithful G] : Full (functoriality F G) where
+instance functorialityFull [Full G] [Faithful G] : Full (functoriality F G) where
preimage t :=
{ Hom := G.preimage t.Hom
w := fun j => G.map_injective (by simpa using t.w j) }
#align category_theory.limits.cocones.functoriality_full CategoryTheory.Limits.Cocones.functorialityFull
-instance functoriality_faithful [Faithful G] : Faithful (functoriality F G) where
+instance functoriality_faithful [Faithful G] : Faithful (functoriality F G) where
map_injective {X} {Y} f g e := by
- apply CoconeMorphism.ext
+ apply CoconeMorphism.ext
let h := CoconeMorphism.mk.inj e
apply G.map_injective h
#align category_theory.limits.cocones.functoriality_faithful CategoryTheory.Limits.Cocones.functoriality_faithful
@@ -660,7 +660,7 @@ def functorialityEquivalence (e : C ≌ D) : Cocone F ≌ Cocone (F ⋙ e.functo
Functor.associator _ _ _ ≪≫ isoWhiskerLeft _ e.unitIso.symm ≪≫ Functor.rightUnitor _
{ functor := functoriality F e.functor
inverse := functoriality (F ⋙ e.functor) e.inverse ⋙ (precomposeEquivalence f.symm).functor
- unitIso :=
+ unitIso :=
NatIso.ofComponents (fun c => Cocones.ext (e.unitIso.app _) (by aesop_cat)) (by aesop_cat)
counitIso :=
NatIso.ofComponents
@@ -686,7 +686,7 @@ as well.
instance reflects_cocone_isomorphism (F : C ⥤ D) [ReflectsIsomorphisms F] (K : J ⥤ C) :
ReflectsIsomorphisms (Cocones.functoriality K F) := by
constructor
- intro A B f _
+ intro A B f _
haveI : IsIso (F.map f.Hom) :=
(Cocones.forget (K ⋙ F)).map_isIso ((Cocones.functoriality K F).map f)
haveI := ReflectsIsomorphisms.reflects F f.Hom
@@ -701,7 +701,7 @@ end Limits
namespace Functor
-variable {F : J ⥤ C} {G : J ⥤ C} (H : C ⥤ D)
+variable (H : C ⥤ D) {F : J ⥤ C} {G : J ⥤ C}
open CategoryTheory.Limits
@@ -717,15 +717,14 @@ def mapCocone (c : Cocone F) : Cocone (F ⋙ H) :=
(Cocones.functoriality F H).obj c
#align category_theory.functor.map_cocone CategoryTheory.Functor.mapCocone
-/- Porting note: dot notation on the functor is broken for `mapCone` -/
/-- Given a cone morphism `c ⟶ c'`, construct a cone morphism on the mapped cones functorially. -/
-def mapConeMorphism {c c' : Cone F} (f : c ⟶ c') : mapCone H c ⟶ mapCone _ c' :=
+def mapConeMorphism {c c' : Cone F} (f : c ⟶ c') : H.mapCone c ⟶ H.mapCone c' :=
(Cones.functoriality F H).map f
#align category_theory.functor.map_cone_morphism CategoryTheory.Functor.mapConeMorphism
/-- Given a cocone morphism `c ⟶ c'`, construct a cocone morphism on the mapped cocones
functorially. -/
-def mapCoconeMorphism {c c' : Cocone F} (f : c ⟶ c') : mapCocone H c ⟶ mapCocone _ c' :=
+def mapCoconeMorphism {c c' : Cocone F} (f : c ⟶ c') : H.mapCocone c ⟶ H.mapCocone c' :=
(Cocones.functoriality F H).map f
#align category_theory.functor.map_cocone_morphism CategoryTheory.Functor.mapCoconeMorphism
@@ -956,14 +955,14 @@ def coconeEquivalenceOpConeOp : Cocone F ≌ (Cone F.op)ᵒᵖ
apply comp_id
#align category_theory.limits.cocone_equivalence_op_cone_op CategoryTheory.Limits.coconeEquivalenceOpConeOp
-attribute [simps] coconeEquivalenceOpConeOp
+attribute [simps] coconeEquivalenceOpConeOp
end
section
variable {F : J ⥤ Cᵒᵖ}
-/- Porting note: removed a few simps configs
+/- Porting note: removed a few simps configs
`@[simps (config :=
{ rhsMd := semireducible
simpRhs := true })]`
@@ -1119,4 +1118,3 @@ def mapCoconeOp {t : Cocone F} : (mapCocone G t).op ≅ mapCone G.op t.op :=
end
end CategoryTheory.Functor
-
@@ -126,6 +126,8 @@ structure Cone (F : J ⥤ C) where
/-- A natural transformation from the constant functor at `X` to `F` -/
π : (const J).obj pt ⟶ F
#align category_theory.limits.cone CategoryTheory.Limits.Cone
+set_option linter.uppercaseLean3 false in
+#align category_theory.limits.cone.X CategoryTheory.Limits.Cone.pt
instance inhabitedCone (F : Discrete PUnit ⥤ C) : Inhabited (Cone F) :=
⟨{ pt := F.obj ⟨⟨⟩⟩
@@ -158,6 +160,8 @@ structure Cocone (F : J ⥤ C) where
/-- A natural transformation from `F` to the constant functor at `X` -/
ι : F ⟶ (const J).obj pt
#align category_theory.limits.cocone CategoryTheory.Limits.Cocone
+set_option linter.uppercaseLean3 false in
+#align category_theory.limits.cocone.X CategoryTheory.Limits.Cocone.pt
instance inhabitedCocone (F : Discrete PUnit ⥤ C) : Inhabited (Cocone F) :=
⟨{ pt := F.obj ⟨⟨⟩⟩
All dependencies are ported!