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.

(*In fact val_valid is a slight relaxtion of valid_pointer*)
Lemma valid_ptr_val_valid: forall b ofs m,
Mem.valid_pointer m b ofs = true -> val_valid (Vptr b (Ptrofs.repr ofs)) m.