Structure chain := Chain {
  pred_of :> Pred T;
  _ : chain_axiom pred_of}.Structure chain := Chain {
  pred_of :> Pred T;
  _ : chain_axiom pred_of}.Structure chain := Chain {
  pred_of :> Pred T;
  _ : chain_axiom pred_of}.Canonical chainPredType := @mkPredType T chain pred_of.

(* Specifications: *)
Lemma chainE (T : poset) (s1 s2 : chain T) : s1 = s2 <-> pred_of s1 =p pred_of s2.