proposition: Lemma morph_compose `{tA : t A leA eqA} `{tB : t B leB eqB} `{tC : t C leC eqC} : forall (f : A -> B) (g : B -> C), morph leA eqA leB eqB f -> morph leB eqB leC eqC g -> morph leA eqA leC eqC (fun x => g (f x)).
proof: Proof. intros. destruct H, H0. constructor; intros. - apply (PreO.morph_compose (leB := leB)); eauto using PreO. apply PreO. - solve_proper. Qed.
imports: SetoidClass Coq.Classes.Morphisms Coq.Arith.PeanoNat Fiat.Common.Coq__8_4__8_5__Compat