Definition weak_mapsto_ sh e rho :=
match (eval_expr e rho) with
| Vptr b o => (mapsto_ sh (typeof e) (Vptr b o)) ||
              (mapsto_ sh (typeof e) (Vptr b o))
| _ => FF
end.

Lemma address_mapsto_can_store: forall jm ch v sh (wsh: writable0_share sh) b ofs v' my, (address_mapsto ch v sh (b, Ptrofs.unsigned ofs) * exactly my)%pred (m_phi jm) -> decode_val ch (encode_val ch v') = v' -> exists m', {H: Mem.store ch (m_dry jm) b (Ptrofs.unsigned ofs) v' = Some m'| (address_mapsto ch v' sh (b, Ptrofs.unsigned ofs) * exactly my)%pred (m_phi (store_juicy_mem _ _ _ _ _ _ H))}.