Section BasePrograms.
Variables (A : Type) (P : Pred heap).
(* poset structure on ST *)
Definition st_leq e1 e2 := model e1 <== model e2.
Definition st_bot' := bot : [poset of prog A s.1].
Definition st_sup u :=
STprog (@st_sup_coherent u) (@st_sup_dstrict u) (@st_sup_has_spec u).

Lemma st_supP (u : Pred ST) e : e \In u -> st_leq e (st_sup u).