NatTrans.NatIso.
(** Facts about products of acategories involving natural transformations. *)
Local Obligation Tactic := idtac.
Section Prod_Functor_NatTrans.
Context {C D : Category}
{F G : (C –≻ D)%functor}
(N : (F –≻ G)%nattrans)
{C' D' : Category}
{F' G' : (C' –≻ D')%functor}
(N' : (F' –≻ G')%nattrans).
Program Definition Prod_Functor_NatTrans :
((Prod_Functor F F') –≻ (Prod_Functor G G'))%nattrans :=
{|
Trans := fun c => (Trans N (fst c), Trans N' (snd c))
|}.
Next Obligation.
basic_simpl.
do 2 rewrite Trans_com; trivial.
Qed.
Next Obligation.
symmetry.
apply Prod_Functor_NatTrans_obligation_1.
Qed.
End Prod_Functor_NatTrans.
Section Prod_Functor_NatTrans_id.
Context {C D : Category} (F : (C –≻ D)%functor)
{C' D' : Category} {F' : (C' –≻ D')%functor}.

(* Specifications: *)
Theorem Prod_Functor_NatTrans_id :
Prod_Functor_NatTrans (NatTrans_id F) (NatTrans_id F') =
NatTrans_id (Prod_Functor F F').