Proof with eauto with val_renamings.
intros.
destruct v1; inversion Hval_obs; subst;
simpl...
Qed.

(* Specifications: *)
Lemma val_obs_notl:
forall f v1 v2
(Hval_obs: val_obs f v1 v2),
val_obs f (Val.notl v1) (Val.notl v2).
Lemma val_obs_shl:
forall f v1 v2 v1' v2'
(Hval_obs': val_obs f v1' v2')
(Hval_obs: val_obs f v1 v2),
val_obs f (Val.shl v1 v1') (Val.shl v2 v2').
Lemma val_obs_neg:
forall f v1 v2
(Hval_obs: val_obs f v1 v2),
val_obs f (Val.neg v1) (Val.neg v2).
Lemma val_obs_negativel:
forall f v1 v2
(Hval_obs: val_obs f v1 v2),
val_obs f (Val.negativel v1) (Val.negativel v2).
Lemma val_obs_negl:
forall f v1 v2
(Hval_obs: val_obs f v1 v2),
val_obs f (Val.negl v1) (Val.negl v2).
Lemma val_obs_sub:
forall f v1 v2 v1' v2'
(Hinjective: forall b1 b1' b2,
f b1 = Some b2 -> f b1' = Some b2 -> b1 = b1')
(Hval_obs': val_obs f v1' v2')
(Hval_obs: val_obs f v1 v2),
val_obs f (Val.sub v1 v1') (Val.sub v2 v2').