Section NatTransCompID.
Context {C D : Category} (F : (C –≻ D)%functor).
(** Natural transformation from a functor to itself composed with id on the right. *)
Program Definition NatTrans_to_compose_id : F –≻ ((Functor_id D) ∘ F) :=
{|
Trans := fun c => id
|}.
(** Natural transformation to a functor from itself composed with id on the right. *)
Program Definition NatTrans_from_compose_id : ((Functor_id _) ∘ F) –≻ F :=
{|
Trans := fun c => id
|}.
(** Natural transformation from a functor to itself composed with id on the left. *)
Program Definition NatTrans_to_id_compose : F –≻ (F ∘ (Functor_id _)) :=
{|
Trans := fun c => id
|}.
(** Natural transformation to a functor from itself composed with id on the left. *)
Program Definition NatTrans_from_id_compose : (F ∘ (Functor_id _)) –≻ F :=
{|
Trans := fun c => id
|}.
End NatTransCompID.
Section NatTransAssoc.
Context {C1 C2 C3 C4 : Category}
(F : (C1 –≻ C2)%functor)
(G : (C2 –≻ C3)%functor)
(H : (C3 –≻ C4)%functor)
.
(** Natural transformation corresponding to associativity of functor composition *)
Program Definition NatTrans_Functor_assoc
: ((H ∘ G) ∘ F) –≻ (H ∘ (G ∘ F)) :=
{|
Trans := fun c => id
|}.
(** Natural transformation corresponding to the symmetric form of associativity of functor composition *)
Program Definition NatTrans_Functor_assoc_sym
: (H ∘ (G ∘ F)) –≻ ((H ∘ G) ∘ F) :=
{|
Trans := fun c => id
|}.
End NatTransAssoc.
(** The following theorem states that the two natural transformations of the diagram in the middle are equal. # <pre> F                       G ∘ F                      G C —————––>D   D —————————–—————————————————–—–—–> E   D —–————–> E ||           ||                           ||          || ||N1         ||                           ||          ||N2 ||           ||                           ||          || \/           ||                           ||          \/ F'           ||                           ||          G' C ————–—–>D      ||(N4 ∘ N2) ∘_h (N3 ∘ N1)    ||      D ———–——–> E ||           ||                           ||          || || N3        ||                           ||          ||N4 ||           ||  (N4 ∘_h N3) ∘ (N2 ∘_h N1)||          || \/           ||                           ||          \/ F''          \/                           \/          G'' C ————–—–> D  D ——–—————————————————————————–——–> E   D————–——–> E G'' ∘ F'' </pre> # *)
Section NatTrans_comp_hor_comp.
Context {C D E  : Category}
{F F' F'' : (C –≻ D)%functor}
{G G' G'' : (D –≻ E)%functor}
(N1 : F –≻ F')
(N2 : G –≻ G')
(N3 : F' –≻ F'')
(N4 : G' –≻ G'')
.

(* Specifications: *)
Theorem NatTrans_comp_hor_comp
: ((N4 ∘_h N3) ∘ (N2 ∘_h N1) = (N4 ∘ N2) ∘_h (N3 ∘ N1))%nattrans.