End Adjunct_Id_unit_right.
Definition Adjunct_Between (C D : Category) : Type :=
{F : (C –≻ D) * (D –≻ C) & (fst F) ⊣ (snd F)}
.
Definition Adjunct_Between_Id (C : Category) : Adjunct_Between C C :=
existT _ (Functor_id C, Functor_id C) (Adjunct_Id C).
Section Adjunct_Between_Compose.
Context {C D E : Category}
(adj : Adjunct_Between C D)
(adj' : Adjunct_Between D E).
Definition Adjunct_Between_Compose : Adjunct_Between C E :=
existT _
((fst (projT1 adj') ∘ (fst (projT1 adj))),
((snd (projT1 adj)) ∘ (snd (projT1 adj'))))
(Adjunct_Compose (projT2 adj) (projT2 adj')).
End Adjunct_Between_Compose.

(* Specifications: *)
Theorem sigT_eq_simplify {A : Type} {P : A → Type} (s s' : sigT P)
(H : projT1 s = projT1 s')
: match H in _ = Y return P Y with
eq_refl => projT2 s
end = projT2 s' → s = s'.