Require Export VST.msl.ghost.
(* Lemmas about ghost state and common instances *)
(* Where should this sit? *)
Hint Resolve Share.nontrivial.
Definition gname := own.gname.
Instance Inhabitant_preds : Inhabitant preds := NoneP.
Section ghost.
Context {RA: Ghost}.

(* Specifications: *)
Lemma own_op' : forall g a1 a2 pp,
own g a1 pp * own g a2 pp = EX a3 : _, !!(join a1 a2 a3 /\ valid a3) && own g a3 pp.
Lemma own_op_gen : forall g a1 a2 a3 pp, (valid_2 a1 a2 -> join a1 a2 a3) ->
own g a1 pp * own g a2 pp = !!(valid_2 a1 a2) && own g a3 pp.