(* A minimal preservation property we sometimes require.*)
Definition mem_forward (m1 m2:mem) :=
  (forall b, Mem.valid_block m1 b ->
    Mem.valid_block m2 b /\
    forall ofs p, Mem.perm m2 b ofs Max p -> Mem.perm m1 b ofs Max p).

Lemma forall_valinject_hastype: forall j vals vals' (V: Forall2 (val_inject j) vals vals') Ts (HTs: Forall2 Val.has_type vals' Ts), Forall2 Val.has_type vals Ts.