(* no need to put canonical here, because the system won't be *)
(* able to get the proof C from the {x : T | x \In s} syntax *)
Definition subPosetMixin := PosetMixin sub_botP sub_refl sub_asym sub_trans.Definition subPoset := Eval hnf in Poset tp subPosetMixin.Local Notation tp := (dfunPoset B).Definition pair_bot : tp := (bot, bot).

(* Specifications: *)
Lemma pair_botP x : pair_leq pair_bot x.
Lemma pair_refl x : pair_leq x x.
Lemma pair_asym x y : pair_leq x y -> pair_leq y x -> x = y.
Lemma pair_trans x y z : pair_leq x y -> pair_leq y z -> pair_leq x z.