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
.
A cone c
is defined by specifying its cone point c.X
and a natural transformation c.π
from the constant c.X
valued functor to F
.
We provide c.w f : c.π.app j ≫ F.map f = c.π.app j'
for any f : j ⟶ j'
as a wrapper for c.π.naturality f
avoiding unneeded identity morphisms.
We define c.extend f
, where c : cone F
and f : Y ⟶ c.X
for some other Y
,
which replaces the cone point by Y
and inserts f
into each of the components of the cone.
Similarly we have c.whisker F
producing a cone (E ⋙ F)
We define morphisms of cones, and the category of cones.
We define cone.postcompose α : cone F ⥤ cone G
for α
a natural transformation F ⟶ G
.
And, of course, we dualise all this to cocones as well.
For more results about the category of cones, see cone_category.lean
.
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
.
Equations
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
.
Equations
Functorially associated to each functor J ⥤ C
, we have the C
-presheaf consisting of
cones with a given cone point.
Equations
- category_theory.cones J C = {obj := category_theory.functor.cones _inst_3, map := λ (F G : J ⥤ C) (f : F ⟶ G), category_theory.whisker_left (category_theory.functor.const J).op (category_theory.yoneda.map f), map_id' := _, map_comp' := _}
Contravariantly associated to each functor J ⥤ C
, we have the C
-copresheaf consisting of
cocones with a given cocone point.
Equations
- category_theory.cocones J C = {obj := λ (F : (J ⥤ C)ᵒᵖ), (opposite.unop F).cocones, map := λ (F G : (J ⥤ C)ᵒᵖ) (f : F ⟶ G), category_theory.whisker_left (category_theory.functor.const J) (category_theory.coyoneda.map f), map_id' := _, map_comp' := _}
- X : C
- π : (category_theory.functor.const J).obj self.X ⟶ F
A c : cone F
is:
- an object
c.X
and - a natural transformation
c.π : c.X ⟶ F
from the constantc.X
functor toF
.
cone F
is equivalent, via cone.equiv
below, to Σ X, F.cones.obj X
.
Instances for category_theory.limits.cone
- category_theory.limits.cone.has_sizeof_inst
- category_theory.limits.inhabited_cone
- category_theory.limits.cone.category
Equations
- category_theory.limits.inhabited_cone F = {default := {X := F.obj {as := punit.star}, π := {app := λ (_x : category_theory.discrete punit), category_theory.limits.inhabited_cone._match_1 F _x, naturality' := _}}}
- category_theory.limits.inhabited_cone._match_1 F {as := punit.star} = 𝟙 (((category_theory.functor.const (category_theory.discrete punit)).obj (F.obj {as := punit.star})).obj {as := punit.star})
- X : C
- ι : F ⟶ (category_theory.functor.const J).obj self.X
A c : cocone F
is
- an object
c.X
and - a natural transformation
c.ι : F ⟶ c.X
fromF
to the constantc.X
functor.
cocone F
is equivalent, via cone.equiv
below, to Σ X, F.cocones.obj X
.
Instances for category_theory.limits.cocone
- category_theory.limits.cocone.has_sizeof_inst
- category_theory.limits.inhabited_cocone
- category_theory.limits.cocone.category
Equations
- category_theory.limits.inhabited_cocone F = {default := {X := F.obj {as := punit.star}, ι := {app := λ (_x : category_theory.discrete punit), category_theory.limits.inhabited_cocone._match_1 F _x, naturality' := _}}}
- category_theory.limits.inhabited_cocone._match_1 F {as := punit.star} = 𝟙 (F.obj {as := punit.star})
The isomorphism between a cone on F
and an element of the functor F.cones
.
Equations
- category_theory.limits.cone.equiv F = {hom := λ (c : category_theory.limits.cone F), ⟨opposite.op c.X, c.π⟩, inv := λ (c : Σ (X : Cᵒᵖ), F.cones.obj X), {X := opposite.unop c.fst, π := c.snd}, hom_inv_id' := _, inv_hom_id' := _}
A map to the vertex of a cone naturally induces a cone by composition.
Equations
- c.extensions = {app := λ (X : Cᵒᵖ) (f : (category_theory.yoneda.obj c.X ⋙ category_theory.ulift_functor).obj X), (category_theory.functor.const J).map f.down ≫ c.π, naturality' := _}
A map to the vertex of a cone induces a cone by composition.
Equations
- c.extend f = {X := X, π := c.extensions.app (opposite.op X) {down := f}}
Whisker a cone by precomposition of a functor.
Equations
- category_theory.limits.cone.whisker E c = {X := c.X, π := category_theory.whisker_left E c.π}
The isomorphism between a cocone on F
and an element of the functor F.cocones
.
Equations
- category_theory.limits.cocone.equiv F = {hom := λ (c : category_theory.limits.cocone F), ⟨c.X, c.ι⟩, inv := λ (c : Σ (X : C), F.cocones.obj X), {X := c.fst, ι := c.snd}, hom_inv_id' := _, inv_hom_id' := _}
A map from the vertex of a cocone naturally induces a cocone by composition.
Equations
- c.extensions = {app := λ (X : C) (f : (category_theory.coyoneda.obj (opposite.op c.X) ⋙ category_theory.ulift_functor).obj X), c.ι ≫ (category_theory.functor.const J).map f.down, naturality' := _}
A map from the vertex of a cocone induces a cocone by composition.
Whisker a cocone by precomposition of a functor. See whiskering
for a functorial
version.
Equations
- category_theory.limits.cocone.whisker E c = {X := c.X, ι := category_theory.whisker_left E c.ι}
A cone morphism between two cones for the same diagram is a morphism of the cone points which commutes with the cone legs.
Instances for category_theory.limits.cone_morphism
- category_theory.limits.cone_morphism.has_sizeof_inst
- category_theory.limits.inhabited_cone_morphism
The category of cones on a given diagram.
Equations
- category_theory.limits.cone.category = {to_category_struct := {to_quiver := {hom := λ (A B : category_theory.limits.cone F), category_theory.limits.cone_morphism A B}, id := λ (B : category_theory.limits.cone F), {hom := 𝟙 B.X, w' := _}, comp := λ (X Y Z : category_theory.limits.cone F) (f : X ⟶ Y) (g : Y ⟶ Z), {hom := f.hom ≫ g.hom, w' := _}}, id_comp' := _, comp_id' := _, assoc' := _}
To give an isomorphism between cones, it suffices to give an isomorphism between their vertices which commutes with the cone maps.
Equations
- category_theory.limits.cones.ext φ w = {hom := {hom := φ.hom, w' := _}, inv := {hom := φ.inv, w' := _}, hom_inv_id' := _, inv_hom_id' := _}
Eta rule for cones.
Given a cone morphism whose object part is an isomorphism, produce an isomorphism of cones.
Functorially postcompose a cone for F
by a natural transformation F ⟶ G
to give a cone for G
.
Postcomposing a cone by the composite natural transformation α ≫ β
is the same as
postcomposing by α
and then by β
.
Equations
Postcomposing by the identity does not change the cone up to isomorphism.
Equations
- category_theory.limits.cones.postcompose_id = category_theory.nat_iso.of_components (λ (s : category_theory.limits.cone F), category_theory.limits.cones.ext (category_theory.iso.refl ((category_theory.limits.cones.postcompose (𝟙 F)).obj s).X) _) category_theory.limits.cones.postcompose_id._proof_2
If F
and G
are naturally isomorphic functors, then they have equivalent categories of
cones.
Equations
- category_theory.limits.cones.postcompose_equivalence α = {functor := category_theory.limits.cones.postcompose α.hom, inverse := category_theory.limits.cones.postcompose α.inv, unit_iso := category_theory.nat_iso.of_components (λ (s : category_theory.limits.cone F), category_theory.limits.cones.ext (category_theory.iso.refl ((𝟭 (category_theory.limits.cone F)).obj s).X) _) _, counit_iso := category_theory.nat_iso.of_components (λ (s : category_theory.limits.cone G), category_theory.limits.cones.ext (category_theory.iso.refl ((category_theory.limits.cones.postcompose α.inv ⋙ category_theory.limits.cones.postcompose α.hom).obj s).X) _) _, functor_unit_iso_comp' := _}
Whiskering on the left by E : K ⥤ J
gives a functor from cone F
to cone (E ⋙ F)
.
Equations
- category_theory.limits.cones.whiskering E = {obj := λ (c : category_theory.limits.cone F), category_theory.limits.cone.whisker E c, map := λ (c c' : category_theory.limits.cone F) (f : c ⟶ c'), {hom := f.hom, w' := _}, map_id' := _, map_comp' := _}
Whiskering by an equivalence gives an equivalence between categories of cones.
Equations
- category_theory.limits.cones.whiskering_equivalence e = {functor := category_theory.limits.cones.whiskering e.functor, inverse := category_theory.limits.cones.whiskering e.inverse ⋙ category_theory.limits.cones.postcompose (e.inv_fun_id_assoc F).hom, unit_iso := category_theory.nat_iso.of_components (λ (s : category_theory.limits.cone F), category_theory.limits.cones.ext (category_theory.iso.refl ((𝟭 (category_theory.limits.cone F)).obj s).X) _) _, counit_iso := category_theory.nat_iso.of_components (λ (s : category_theory.limits.cone (e.functor ⋙ F)), category_theory.limits.cones.ext (category_theory.iso.refl (((category_theory.limits.cones.whiskering e.inverse ⋙ category_theory.limits.cones.postcompose (e.inv_fun_id_assoc F).hom) ⋙ category_theory.limits.cones.whiskering e.functor).obj s).X) _) _, functor_unit_iso_comp' := _}
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).
Forget the cone structure and obtain just the cone point.
Equations
- category_theory.limits.cones.forget F = {obj := λ (t : category_theory.limits.cone F), t.X, map := λ (s t : category_theory.limits.cone F) (f : s ⟶ t), f.hom, map_id' := _, map_comp' := _}
A functor G : C ⥤ D
sends cones over F
to cones over F ⋙ G
functorially.
Equations
Instances for category_theory.limits.cones.functoriality
Equations
- category_theory.limits.cones.functoriality_full F G = {preimage := λ (X Y : category_theory.limits.cone F) (t : (category_theory.limits.cones.functoriality F G).obj X ⟶ (category_theory.limits.cones.functoriality F G).obj Y), {hom := G.preimage t.hom, w' := _}, witness' := _}
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
.
Equations
- category_theory.limits.cones.functoriality_equivalence F e = let f : (F ⋙ e.functor) ⋙ e.inverse ≅ F := F.associator e.functor e.inverse ≪≫ category_theory.iso_whisker_left F e.unit_iso.symm ≪≫ F.right_unitor in {functor := category_theory.limits.cones.functoriality F e.functor, inverse := category_theory.limits.cones.functoriality (F ⋙ e.functor) e.inverse ⋙ (category_theory.limits.cones.postcompose_equivalence f).functor, unit_iso := category_theory.nat_iso.of_components (λ (c : category_theory.limits.cone F), category_theory.limits.cones.ext (e.unit_iso.app ((𝟭 (category_theory.limits.cone F)).obj c).X) _) _, counit_iso := category_theory.nat_iso.of_components (λ (c : category_theory.limits.cone (F ⋙ e.functor)), category_theory.limits.cones.ext (e.counit_iso.app c.X) _) _, functor_unit_iso_comp' := _}
If F
reflects isomorphisms, then cones.functoriality F
reflects isomorphisms
as well.
A cocone morphism between two cocones for the same diagram is a morphism of the cocone points which commutes with the cocone legs.
Instances for category_theory.limits.cocone_morphism
- category_theory.limits.cocone_morphism.has_sizeof_inst
- category_theory.limits.inhabited_cocone_morphism
Equations
- category_theory.limits.cocone.category = {to_category_struct := {to_quiver := {hom := λ (A B : category_theory.limits.cocone F), category_theory.limits.cocone_morphism A B}, id := λ (B : category_theory.limits.cocone F), {hom := 𝟙 B.X, w' := _}, comp := λ (_x _x_1 _x_2 : category_theory.limits.cocone F) (f : _x ⟶ _x_1) (g : _x_1 ⟶ _x_2), {hom := f.hom ≫ g.hom, w' := _}}, id_comp' := _, comp_id' := _, assoc' := _}
To give an isomorphism between cocones, it suffices to give an isomorphism between their vertices which commutes with the cocone maps.
Equations
- category_theory.limits.cocones.ext φ w = {hom := {hom := φ.hom, w' := w}, inv := {hom := φ.inv, w' := _}, hom_inv_id' := _, inv_hom_id' := _}
Eta rule for cocones.
Given a cocone morphism whose object part is an isomorphism, produce an isomorphism of cocones.
Functorially precompose a cocone for F
by a natural transformation G ⟶ F
to give a cocone
for G
.
Precomposing a cocone by the composite natural transformation α ≫ β
is the same as
precomposing by β
and then by α
.
Precomposing by the identity does not change the cocone up to isomorphism.
Equations
- category_theory.limits.cocones.precompose_id = category_theory.nat_iso.of_components (λ (s : category_theory.limits.cocone F), category_theory.limits.cocones.ext (category_theory.iso.refl ((category_theory.limits.cocones.precompose (𝟙 F)).obj s).X) _) category_theory.limits.cocones.precompose_id._proof_2
If F
and G
are naturally isomorphic functors, then they have equivalent categories of
cocones.
Equations
- category_theory.limits.cocones.precompose_equivalence α = {functor := category_theory.limits.cocones.precompose α.hom, inverse := category_theory.limits.cocones.precompose α.inv, unit_iso := category_theory.nat_iso.of_components (λ (s : category_theory.limits.cocone F), category_theory.limits.cocones.ext (category_theory.iso.refl ((𝟭 (category_theory.limits.cocone F)).obj s).X) _) _, counit_iso := category_theory.nat_iso.of_components (λ (s : category_theory.limits.cocone G), category_theory.limits.cocones.ext (category_theory.iso.refl ((category_theory.limits.cocones.precompose α.inv ⋙ category_theory.limits.cocones.precompose α.hom).obj s).X) _) _, functor_unit_iso_comp' := _}
Whiskering on the left by E : K ⥤ J
gives a functor from cocone F
to cocone (E ⋙ F)
.
Equations
- category_theory.limits.cocones.whiskering E = {obj := λ (c : category_theory.limits.cocone F), category_theory.limits.cocone.whisker E c, map := λ (c c' : category_theory.limits.cocone F) (f : c ⟶ c'), {hom := f.hom, w' := _}, map_id' := _, map_comp' := _}
Whiskering by an equivalence gives an equivalence between categories of cones.
Equations
- category_theory.limits.cocones.whiskering_equivalence e = {functor := category_theory.limits.cocones.whiskering e.functor, inverse := category_theory.limits.cocones.whiskering e.inverse ⋙ category_theory.limits.cocones.precompose (F.left_unitor.inv ≫ category_theory.whisker_right e.counit_iso.inv F ≫ (e.inverse.associator e.functor F).inv), unit_iso := category_theory.nat_iso.of_components (λ (s : category_theory.limits.cocone F), category_theory.limits.cocones.ext (category_theory.iso.refl ((𝟭 (category_theory.limits.cocone F)).obj s).X) _) _, counit_iso := category_theory.nat_iso.of_components (λ (s : category_theory.limits.cocone (e.functor ⋙ F)), category_theory.limits.cocones.ext (category_theory.iso.refl (((category_theory.limits.cocones.whiskering e.inverse ⋙ category_theory.limits.cocones.precompose (F.left_unitor.inv ≫ category_theory.whisker_right e.counit_iso.inv F ≫ (e.inverse.associator e.functor F).inv)) ⋙ category_theory.limits.cocones.whiskering e.functor).obj s).X) _) _, functor_unit_iso_comp' := _}
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).
Forget the cocone structure and obtain just the cocone point.
Equations
- category_theory.limits.cocones.forget F = {obj := λ (t : category_theory.limits.cocone F), t.X, map := λ (s t : category_theory.limits.cocone F) (f : s ⟶ t), f.hom, map_id' := _, map_comp' := _}
A functor G : C ⥤ D
sends cocones over F
to cocones over F ⋙ G
functorially.
Equations
- category_theory.limits.cocones.functoriality F G = {obj := λ (A : category_theory.limits.cocone F), {X := G.obj A.X, ι := {app := λ (j : J), G.map (A.ι.app j), naturality' := _}}, map := λ (_x _x_1 : category_theory.limits.cocone F) (f : _x ⟶ _x_1), {hom := G.map f.hom, w' := _}, map_id' := _, map_comp' := _}
Instances for category_theory.limits.cocones.functoriality
Equations
- category_theory.limits.cocones.functoriality_full F G = {preimage := λ (X Y : category_theory.limits.cocone F) (t : (category_theory.limits.cocones.functoriality F G).obj X ⟶ (category_theory.limits.cocones.functoriality F G).obj Y), {hom := G.preimage t.hom, w' := _}, witness' := _}
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
.
Equations
- category_theory.limits.cocones.functoriality_equivalence F e = let f : (F ⋙ e.functor) ⋙ e.inverse ≅ F := F.associator e.functor e.inverse ≪≫ category_theory.iso_whisker_left F e.unit_iso.symm ≪≫ F.right_unitor in {functor := category_theory.limits.cocones.functoriality F e.functor, inverse := category_theory.limits.cocones.functoriality (F ⋙ e.functor) e.inverse ⋙ (category_theory.limits.cocones.precompose_equivalence f.symm).functor, unit_iso := category_theory.nat_iso.of_components (λ (c : category_theory.limits.cocone F), category_theory.limits.cocones.ext (e.unit_iso.app ((𝟭 (category_theory.limits.cocone F)).obj c).X) _) _, counit_iso := category_theory.nat_iso.of_components (λ (c : category_theory.limits.cocone (F ⋙ e.functor)), category_theory.limits.cocones.ext (e.counit_iso.app c.X) _) _, functor_unit_iso_comp' := _}
If F
reflects isomorphisms, then cocones.functoriality F
reflects isomorphisms
as well.
The image of a cone in C under a functor G : C ⥤ D is a cone in D.
Equations
- H.map_cone c = (category_theory.limits.cones.functoriality F H).obj c
The image of a cocone in C under a functor G : C ⥤ D is a cocone in D.
Equations
- H.map_cocone c = (category_theory.limits.cocones.functoriality F H).obj c
Given a cone morphism c ⟶ c'
, construct a cone morphism on the mapped cones functorially.
Equations
Given a cocone morphism c ⟶ c'
, construct a cocone morphism on the mapped cocones
functorially.
Equations
If H
is an equivalence, we invert H.map_cone
and get a cone for F
from a cone
for F ⋙ H
.
Equations
map_cone
is the left inverse to map_cone_inv
.
Equations
map_cone
is the right inverse to map_cone_inv
.
Equations
If H
is an equivalence, we invert H.map_cone
and get a cone for F
from a cone
for F ⋙ H
.
Equations
map_cocone
is the left inverse to map_cocone_inv
.
map_cocone
is the right inverse to map_cocone_inv
.
Equations
functoriality F _ ⋙ postcompose (whisker_left F _)
simplifies to functoriality F _
.
Equations
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
.
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
a cone over G ⋙ H
, and they are both isomorphic.
Equations
map_cone
commutes with postcompose_equivalence
functoriality F _ ⋙ precompose (whisker_left F _)
simplifies to functoriality F _
.
Equations
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
isomorphic to the cocone H'.map_cocone
.
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.
Equations
map_cocone
commutes with precompose_equivalence
map_cone
commutes with whisker
Equations
map_cocone
commutes with whisker
Equations
Change a cocone F
into a cone F.op
.
Equations
- c.op = {X := opposite.op c.X, π := category_theory.nat_trans.op c.ι}
Change a cone F
into a cocone F.op
.
Equations
- c.op = {X := opposite.op c.X, ι := category_theory.nat_trans.op c.π}
Change a cocone F.op
into a cone F
.
Equations
- c.unop = {X := opposite.unop c.X, π := category_theory.nat_trans.remove_op c.ι}
Change a cone F.op
into a cocone F
.
Equations
- c.unop = {X := opposite.unop c.X, ι := category_theory.nat_trans.remove_op c.π}
The category of cocones on F
is equivalent to the opposite category of
the category of cones on the opposite of F
.
Equations
- category_theory.limits.cocone_equivalence_op_cone_op F = {functor := {obj := λ (c : category_theory.limits.cocone F), opposite.op c.op, map := λ (X Y : category_theory.limits.cocone F) (f : X ⟶ Y), quiver.hom.op {hom := f.hom.op, w' := _}, map_id' := _, map_comp' := _}, inverse := {obj := λ (c : (category_theory.limits.cone F.op)ᵒᵖ), (opposite.unop c).unop, map := λ (X Y : (category_theory.limits.cone F.op)ᵒᵖ) (f : X ⟶ Y), {hom := f.unop.hom.unop, w' := _}, map_id' := _, map_comp' := _}, unit_iso := category_theory.nat_iso.of_components (λ (c : category_theory.limits.cocone F), category_theory.limits.cocones.ext (category_theory.iso.refl ((𝟭 (category_theory.limits.cocone F)).obj c).X) _) _, counit_iso := category_theory.nat_iso.of_components (λ (c : (category_theory.limits.cone F.op)ᵒᵖ), opposite.rec (λ (c : category_theory.limits.cone F.op), id (category_theory.limits.cones.ext (category_theory.iso.refl c.X) _).op) c) _, functor_unit_iso_comp' := _}
Change a cocone on F.left_op : Jᵒᵖ ⥤ C
to a cocone on F : J ⥤ Cᵒᵖ
.
Equations
Change a cone on F : J ⥤ Cᵒᵖ
to a cocone on F.left_op : Jᵒᵖ ⥤ C
.
Equations
Change a cone on F.left_op : Jᵒᵖ ⥤ C
to a cocone on F : J ⥤ Cᵒᵖ
.
Equations
Change a cocone on F : J ⥤ Cᵒᵖ
to a cone on F.left_op : Jᵒᵖ ⥤ C
.
Equations
Change a cocone on F.right_op : J ⥤ Cᵒᵖ
to a cone on F : Jᵒᵖ ⥤ C
.
Equations
Change a cone on F : Jᵒᵖ ⥤ C
to a cocone on F.right_op : Jᵒᵖ ⥤ C
.
Equations
Change a cone on F.right_op : J ⥤ Cᵒᵖ
to a cocone on F : Jᵒᵖ ⥤ C
.
Equations
Change a cocone on F : Jᵒᵖ ⥤ C
to a cone on F.right_op : J ⥤ Cᵒᵖ
.
Equations
Change a cocone on F.unop : J ⥤ C
into a cone on F : Jᵒᵖ ⥤ Cᵒᵖ
.
Equations
Change a cone on F : Jᵒᵖ ⥤ Cᵒᵖ
into a cocone on F.unop : J ⥤ C
.
Equations
Change a cone on F.unop : J ⥤ C
into a cocone on F : Jᵒᵖ ⥤ Cᵒᵖ
.
Equations
Change a cocone on F : Jᵒᵖ ⥤ Cᵒᵖ
into a cone on F.unop : J ⥤ C
.
Equations
The opposite cocone of the image of a cone is the image of the opposite cocone.
Equations
The opposite cone of the image of a cocone is the image of the opposite cone.