proposition: Lemma compose_assoc: forall {A B C D} (R : relationH A B) (S : relationH B C) (T : relationH C D), T ∘ S ∘ R ≡ (T ∘ S) ∘ R.
proof: Proof. split; intros!; cbn in *. - repeat destruct H. repeat destruct H0. repeat (eexists; split; eauto). - repeat destruct H. repeat destruct H0. repeat (eexists; split; eauto). Qed.
imports: Coq(Morphisms Setoid Relation_Definitions RelationClasses ) ITree(Basics.Utils Indexed.Sum)