(*
Lemma FUNspec_parametric: forall fml cc A P Q,
   spec_parametric (fun l sh => yesat (SomeP (SpecTT A) (packPQ P Q)) (FUN fml cc) sh).
Proof.
intros.
exists (SomeP (SpecTT A) (packPQ P Q)).
exists (fun k => k=FUN fml cc).
intros.
simpl.
apply exists_ext; intro p.
unfold yesat_raw.
apply prop_ext; split; intros.
econstructor; eauto.
destruct H as [k [? ?]].
subst; auto.
Qed.
*)
Definition val2address (v: val) : option AV.address := 
  match v with Vptr b ofs => Some (b, Ptrofs.signed ofs) | _ => None end.

Lemma address_mapsto_value_cohere': forall ch v1 v2 sh1 sh2 a r (Hmaps1 : address_mapsto ch v1 sh1 a r) (Hmaps2 : address_mapsto ch v2 sh2 a r), v1=v2.