Definition compose_lunit A B (f: A -> B): ext_eq (@id B ∘ f) f.Definition compose_runit A B (f: A -> B): ext_eq (f ∘ @id A) f.Add Parametric Morphism (X Y Z: Set): (@compose X Y Z) with signature (@ext_eq Y Z) ==> (@ext_eq X Y) ==> (@ext_eq X Z) as compose_ext_eq_morph.Definition map_snd (A B: Set) (f: A -> B) (C: Set) (p: C * A): C * B := (fst p, f (snd p)).

(* Specifications: *)
Lemma fst_map_snd (A B: Set) (f: A -> B) (C: Set) (p: C * A): fst (map_snd f p) = fst p.