Functor.Representable.Hom_Func_Prop.
Adjunction.Adj_Facts.
KanExt.LocalFacts.HomToCones KanExt.GlobalDuality.
Local Open Scope functor_scope.
(** This module contains conversion from global to local kan extensions. *)
Section Global_to_Local_Right.
Context {C C' : Category}
(p : C –≻ C')
(D : Category)
(rke : Right_KanExt p D)
(F : C –≻ D).
(** The cone which (we will prove) is the local kan extension. *)
Definition Cone_for_LoKan : LoKan_Cone p F :=
{|
cone_apex := (rke _o F)%object;
cone_edge :=
@adj_morph_ex _ _ _ _
(right_kan_ext_adj rke) (rke _o F) F (NatTrans_id _)
|}.
Section Cone_Morph_to_Cone_for_LoKan.
Context (Cn : LoKan_Cone p F).
(** We show that any natural transformation from any cone (the apex functor of a cone) to (apex functor of) the cone we constructed above remains the same under the following transformation:  morph : Cn ——––>  (rke _o F)  morph ∘_h (NatTrans_id p) : (Cn ∘ p) ————> ((rke _o F) ∘ p)  η_{NatTrans_id (rke _o F)} ∘ (morph ∘_h (NatTrans_id p)) : (Cn ∘ p) ————> F  rke @_a (Cn ∘ p) F (η_{NatTrans_id (rke _o F)} ∘ (morph ∘_h (NatTrans_id p))) : (rke _o (Cn ∘ p)) ————> (rke _o F)  (rke @_a (Cn ∘ p) F (η_{NatTrans_id (rke _o F)} ∘ (morph ∘_h (NatTrans_id p)))) ∘ (Trans (adj_unit (right_kan_ext_adj rke)) Cn) : Cn ————> (rke _o F)   This result is used to show existence and unique ness of cones from Cn to the cone constructed above. *)

(* Specifications: *)
Lemma Cone_Morph_to_Cone_for_LoKan_adj_unit_rke_id
(morph : (Cn –≻ ((rke _o)%object F))%nattrans) :
morph =
(
(
(rke @_a)%morphism (Cn ∘ p)%functor F
(
(adj_morph_ex
(right_kan_ext_adj rke) (NatTrans_id ((rke _o) F)%object))
∘ (morph ∘_h (NatTrans_id p))
)
) ∘ (Trans (adj_unit (right_kan_ext_adj rke)) Cn)
)%nattrans.