Opaque lockRes.

Lemma gss_mem_obs_eq_unlock:
forall mc mf mc' mf' rmap rmapF bl1 bl2 ofsl f v
rmap' rmapF' rmap2 rmap2F
(Hlt': permMapLt rmap' (getMaxPerm mc'))
(HltF': permMapLt rmapF' (getMaxPerm mf'))
(Hlt2: permMapLt rmap2 (getMaxPerm mc))
(Hlt2F: permMapLt rmap2F (getMaxPerm mf))
(Hf: f bl1 = Some bl2)
(Hobs_eq2: mem_obs_eq f (restrPermMap Hlt2) (restrPermMap Hlt2F))
(Hstore: Mem.mem_contents mc' = PMap.set bl1 (Mem.setN (encode_val Mint32 (Vint v)) ofsl (Mem.mem_contents mc) # bl1)
(Mem.mem_contents mc))
(HstoreF: Mem.mem_contents mf' = PMap.set bl2 (Mem.setN (encode_val Mint32 (Vint v)) ofsl (Mem.mem_contents mf) # bl2)
(Mem.mem_contents mf))
(Hvb: forall b, Mem.valid_block mc b <-> Mem.valid_block mc' b)
(HvbF: forall b, Mem.valid_block mf b <-> Mem.valid_block mf' b)
(Hjoin: permMapJoin rmap' rmap rmap2)
(HpmapF: forall b, (~exists b', f b' = Some b) ->
forall ofs, (rmapF # b ofs = None /\ rmap2F # b ofs = rmapF' # b ofs) \/
(rmapF' # b ofs = None /\ rmap2F # b ofs = rmapF # b ofs))
(Hrmap': forall b1 b2 ofs, f b1 = Some b2 -> (rmap' # b1) ofs = (rmapF' # b2) ofs)
(Hrmap': forall b1 b2 ofs, f b1 = Some b2 -> (rmap # b1) ofs = (rmapF # b2) ofs),
mem_obs_eq f (restrPermMap Hlt') (restrPermMap HltF').