(* no point in declaring this canonical, since it's keyed on forall *)
(* and forall is not a symbol *)
Definition dfunPosetMixin :=
  PosetMixin dfun_botP dfun_refl dfun_asym dfun_trans.Definition dfunPoset := Eval hnf in Poset tp dfunPosetMixin.Definition ideal_bot :=  Ideal (botP P).

Lemma ideal_trans x y z : ideal_leq x y -> ideal_leq y z -> ideal_leq x z.