End ChainCompose.
(* projections out of a chain *)
Section ProjChain.
Variables (T1 T2 : poset) (s : chain [poset of T1 * T2]).
Definition proj1_chain := [@fst _ _ ^^ s by proj1_mono].
Definition proj2_chain := [@snd _ _ ^^ s by proj2_mono].
End ProjChain.
(* diagonal chain *)
Section DiagChain.
Variable (T : poset) (s : chain T).
Definition diag_chain := [_ ^^ s by @diag_mono T].

(* Specifications: *)
Lemma proj1_diagE : proj1_chain diag_chain = s.
Lemma proj2_prodE : proj2_chain prod_chain = [f2 ^^ proj2_chain s by M2].
End ProdChain.