End LoKan_id_Cone_Morph_unit.
(** Local kan extension cones form a category. *)
Definition LoKan_Cone_Cat : Category :=
{|
Obj := LoKan_Cone p F;
Hom := LoKan_Cone_Morph;
compose :=
fun _ _ _ h h' =>
LoKan_Cone_Morph_compose h h';
assoc :=
fun _ _ _ _ =>
LoKan_Cone_Morph_compose_assoc;
assoc_sym :=
fun _ _ _ _ f g h =>
eq_sym (LoKan_Cone_Morph_compose_assoc f g h);
id := LoKan_id_Cone_Morph;
id_unit_left := @LoKan_id_Cone_Morph_unit_left;
id_unit_right := @LoKan_id_Cone_Morph_unit_right
|}.
(** Local right kan extensions are terminal objects of the category of cones. *)
Section Local_Right_KanExt_terminal.
Context (rke : Local_Right_KanExt p F).
Program Definition Local_Right_KanExt_terminal
: (𝟙_ LoKan_Cone_Cat)%object :=
{|
terminal := LRKE rke;
t_morph := LRKE_morph_ex rke
|}.
Next Obligation.
End Local_Right_KanExt_terminal.
(** Local right kan extensions are unique – because they are terminal objects in the category of cones. *)
Section Local_Right_KanExt_unique.
Context (rke rke' : Local_Right_KanExt p F).

Theorem Local_Right_KanExt_unique :
((LRKE rke) ≃≃ (LRKE rke') ::> LoKan_Cone_Cat)%isomorphism.