Local Open Scope nattrans_scope.
(** The opposite of a natural transformation N : F -> F' is a nattrans N^op : F'^op -> F^op. It has the same arrow family as the original natural transformation. *)
Section Opposite_NatTrans.
Context {C D : Category} {F F' : (C –≻ D)%functor} (N : (F –≻ F')%nattrans).
Program Definition Opposite_NatTrans : F'^op –≻ F^op :=
{|
Trans := Trans N;
Trans_com := fun c c' h => (Trans_com_sym N h);
Trans_com_sym := fun c c' h => (Trans_com N h)
|}.
End Opposite_NatTrans.
Notation "N '^op'" := (Opposite_NatTrans N) : nattrans_scope.
(** Composition of opposite natural transformations is just the same as the opposite natural transformation of the composition. *)
Section Compose_NOP.
Context {C D : Category} {F F' F'' : (C –≻ D)%functor}
(N : F –≻ F') (N' : F' –≻ F'').

Theorem NatTrans_compose_Op : ((N' ∘ N)^op = N^op ∘ (N'^op))%nattrans.
End Compose_NOP.