Require Export VST.veric.Clight_base.
Definition GHOSTspec (A: Type) (x: A) : spec :=
fun sh loc =>
allp (jam (eq_dec loc) (fun loc' =>
yesat (SomeP (ConstType (A -> Prop)) (fun _ y => y = x))
(FUN (nil,Tvoid) cc_default) sh loc') noat).
Definition ghostp {A: Type} (sh: share) (loc: address) (x: A) : mpred :=
GHOSTspec A x sh loc.
Definition make_GHOSTspec:
forall A (sh : share) (rsh: readable_share sh) loc (x: A) (lev: nat),
exists m: rmap, GHOSTspec A x sh loc m /\ level m =  lev.

Lemma make_ghostp:
forall A (x: A)  loc (lev: nat),
exists m : rmap, ghostp Share.top loc x m /\ level m = lev.