Section NatTrans.
Context {C C' : Category}.
(** For categories C and C' and functors F : C -> C' and F' : C -> C', a natural transformation N : F -> F' is a family of arrows 'Trans N' in the co-domain category (here C') indexed by objects of the domain category (here C), Trans N c : F _o c -> F' _o c.  In addition, for all arrows h : c → c' the following diagram must commute (Trans_com):  # <pre> F _a h F _o c ————————————————––> F _o c' |                          | |                          | |                          | | Trans N c                | Trans N c' |                          | |                          | ∨                          ∨ F' _o c ————————————————–> F' _o c' F' _a h </pre> # Trans_com_sym is the symmetric form of Trans_com. *)
Record NatTrans (F F' : (C –≻ C')%functor) :=
{
Trans (c : C) : ((F _o c) –≻ (F' _o c))%object%morphism;
Trans_com {c c' : C} (h : (c –≻ c')%morphism) :
((Trans c') ∘ F _a h = F' _a h ∘ (Trans c))%morphism;
Trans_com_sym {c c' : C} (h : (c –≻ c')%morphism) :
(F' _a h ∘ (Trans c) = (Trans c') ∘ F _a h)%morphism
}.
Notation "F –≻ F'" := (NatTrans F F') : nattrans_scope.

(* Specifications: *)
(** Two natural transformations are equal if their arrow families are. That is, commutative diagrams are assumed to be equal by proof irrelevance. *)
Lemma NatTrans_eq_simplify {F F' : (C –≻ C')%functor}
(N N' : (F –≻ F')%nattrans) : (@Trans _ _ N) = (@Trans _ _ N') -> N = N'.