Proof with eauto with val_renamings.
intros v v' v'' f f' f'' Hval'' Hval' Hf.
inversion Hval'; subst; inversion Hval''; subst...
Qed.

(* Specifications: *)
Lemma memval_obs_trans:
forall (v v' v'' : memval) (f f' f'' : memren),
memval_obs_eq f v v'' ->
memval_obs_eq f' v v' ->
(forall b b' b'' : block,
f b = Some b'' ->
f' b = Some b' ->
f'' b' = Some b'') ->
memval_obs_eq f'' v' v''.
Lemma val_obs_list_trans:
forall (vs vs' vs'' : seq val) (f f' f'' : memren),
val_obs_list f vs vs'' ->
val_obs_list f' vs vs' ->
(forall b b' b'' : block,
f b = Some b'' ->
f' b = Some b' ->
f'' b' = Some b'') ->
val_obs_list f'' vs' vs''.
Lemma val_obs_list_incr:
forall (vs vs' : seq val) (f f' : memren),
val_obs_list f vs vs' ->
ren_incr f f' ->
val_obs_list f' vs vs'.
(** Two values that are equal are related by the id injection on a valid memory*)
Lemma val_obs_id:
forall f v
(Hvalid: valid_val f v)
(Hid: forall b b', f b = Some b' -> b = b'),
val_obs f v v.