Proof with eauto with renamings id_renamings val_renamings.
intros.
constructor; constructor;
eauto with id_renamings; unfold id_ren; intros;
repeat match goal with
| [H: context[valid_block_dec ?M ?B] |- _] =>
destruct (valid_block_dec M B); simpl in *
| [H: _ = Some _ |- _] => inv H; clear H
end; auto.
now apply po_refl.
destruct (ZMap.get ofs (Mem.mem_contents m) # b2) eqn:Hget;
constructor.
destruct v0; constructor.
specialize (H _ v _ _ Hget).
simpl in H.
destruct (valid_block_dec m b); simpl; tauto.
Qed.

Lemma memval_obs_eq_incr:
forall (mc mf : mem) (f f': memren)
(b1 b2 : block) (ofs : Z)
(Hf': f' b1 = Some b2)
(Hincr: ren_incr f f')
(Hobs_eq: memval_obs_eq f (Maps.ZMap.get ofs (Mem.mem_contents mc) # b1)
(Maps.ZMap.get ofs (Mem.mem_contents mf) # b2)),
memval_obs_eq f' (Maps.ZMap.get ofs (Mem.mem_contents mc) # b1)
(Maps.ZMap.get ofs (Mem.mem_contents mf) # b2).