Section CategoryLaws.
Context {E : Type -> Type}.
(** *** [compose_ktree] respect eq_ktree *)
Global Instance eq_ktree_compose {A B C} :
@Proper (ktree E A B -> ktree E B C -> _) (eq2 ==> eq2 ==> eq2) cat.
(** *** [compose_ktree] is associative *)
Global Instance CatAssoc_ktree : CatAssoc (ktree E).
(** *** [id_ktree] respect identity laws *)
Global Instance CatIdL_ktree : CatIdL (ktree E).
Global Instance CatIdR_ktree : CatIdR (ktree E).
Global Instance Category_ktree : Category (ktree E).
Global Instance InitialObject_ktree : InitialObject (ktree E) void.

Lemma lift_ktree_id {A: Type}: (id_ A ⩯ lift_ktree_ E A A (id_ A))%cat.