Definition sub_sup (u : Pred tp) : tp :=
  exist _ (sub_sup' u) (sub_supX u).Definition subLatticeMixin := LatticeMixin sub_supP sub_supM.Definition pairLatticeMixin := LatticeMixin pair_supP pair_supM.Canonical pairLattice := Eval hnf in Lattice tp pairLatticeMixin.Definition funLatticeMixin := LatticeMixin fun_supP fun_supM.Canonical funLattice := Eval hnf in Lattice tp funLatticeMixin.Definition dfunLatticeMixin := LatticeMixin dfun_supP dfun_supM.Definition dfunLattice := Eval hnf in Lattice (forall x, B x) dfunLatticeMixin.Definition ideal_sup (s : Pred (ideal P)) := Ideal (ideal_supP' s).Definition idealLatticeMixin := LatticeMixin ideal_supP ideal_supM.Canonical idealLattice := Eval hnf in Lattice (ideal P) idealLatticeMixin.Definition propLatticeMixin := LatticeMixin prop_supP prop_supM.Canonical propLattice := Eval hnf in Lattice Prop propLatticeMixin.

Lemma diag_mono (T : poset) : monotone (fun x : T => (x, x)).