Module R := R.
Hint Resolve (@subp_sepcon _ Join_rmap Perm_rmap Sep_rmap): contractive.
unfold identity_rmap; intros.
rewrite R.unsquash_squash.
simpl.
apply extensionality; intro l.
unfold compose; simpl; auto.
Qed.
(* Lemma make_simple_rmap: forall n (f: AV.address -> resource) , AV.valid (fun l => res_option (f l)) -> (forall l, match f l with YES _ _ (SomeP _ _) => False | _ => True end) -> exists phi:rmap, level phi = n /\ resource_at phi = f. *)
Ltac do_map_arg :=
match goal with |- ?a = ?b =>
match a with context [map ?x _] =>
match b with context [map ?y _] => replace y with x; auto end end end.

Lemma necR_resource_at:
forall phi phi' loc r,
necR phi phi' ->
phi @ loc = resource_fmap (approx (level phi)) r ->
phi' @ loc = resource_fmap (approx (level phi')) r.