Notation val_inject:=Val.inject.
(*A value that is (if its a pointer) not dangling wrt m - a condition like this will probably be need to imposed on after-external return values (and thus also on the values returned by halted)*)
Definition val_valid (v:val) (m:mem):Prop :=
match v with Vptr b ofs => Mem.valid_block m b | _ => True
end.
(*memories that do not contain "dangling pointers"*)
Definition mem_wd m := Mem.inject_neutral (Mem.nextblock m) m.

Lemma mem_wdI: forall m,
(forall (b:block) ofs  (R:Mem.perm m b ofs Cur Readable),
memval_inject  (Mem.flat_inj (Mem.nextblock m))
(ZMap.get ofs (PMap.get b (Mem.mem_contents m)))
(ZMap.get ofs (PMap.get b (Mem.mem_contents m)))) -> mem_wd m.