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.

(* Specifications: *)
Lemma ghostp_unique_sepcon:
forall {A: Type} sh1 sh2 loc (x1 x2: A),
ghostp sh1 loc x1 * ghostp sh2 loc x2 |-- |> !! (x1=x2).
Lemma ghostp_unique_andp:
forall {A: Type} sh loc (x1 x2: A),
ghostp sh loc x1 && ghostp sh loc x2 |-- |> !! (x1=x2).