eapply mem_forward_preserve; trivial.
Qed.

Theorem preserves_max_eq_or_free:
memstep_preserve (fun m m' =>  mem_forward m m' /\
forall b (VB: Mem.valid_block m b) ofs,
(forall k p, Mem.perm m b ofs k p <-> Mem.perm m' b ofs k p) \/
(Mem.perm m b ofs Max Freeable /\
Mem.perm_order'' None ((Mem.mem_access m') !! b ofs Max))).