Program Definition noghost : pred rmap := fun m => identity (ghost_of m).

(* Specifications: *)
Lemma yesat_join_diff: forall pp pp' k k' sh sh' l w, k <> k' -> yesat pp k sh l w -> yesat pp' k' sh' l w -> False.
Lemma yesat_raw_join: forall pp k (sh1 sh2 sh3: Share.t) rsh1 rsh2 rsh3 l phi1 phi2 phi3, join sh1 sh2 sh3 -> yesat_raw pp k sh1 rsh1 l phi1 -> yesat_raw pp k sh2 rsh2 l phi2 -> join phi1 phi2 phi3 -> yesat_raw pp k sh3 rsh3 l phi3.
Lemma nonunit_join: forall A {JA: Join A}{PA: Perm_alg A}{SA: Sep_alg A}{CA: Disj_alg A} (x y z: A), nonunit x -> join x y z -> nonunit z.
Lemma yesat_join: forall pp k sh1 sh2 sh3 l m1 m2 m3, join sh1 sh2 sh3 -> yesat pp k sh1 l m1 -> yesat pp k sh2 l m2 -> join m1 m2 m3 -> yesat pp k sh3 l m3.
Lemma YES_ext: forall sh sh' rsh rsh' k p, sh=sh' -> YES sh rsh k p = YES sh' rsh' k p.