Proof with eauto with wd.
intros; intro r; unfold Pregmap.get...
Qed.
Hint Resolve valid_val_addrmode valid_val_addrmode64
regset_wd_compare_floats regset_wd_compare_floats32
regset_wd_compare_ints regset_wd_compare_longs : wd.
End X86WD.
(** ** Injections/Renamings on X86 cores *)
Module X86Inj.
(** Injections on registers *)
Definition reg_ren f (r:PregEq.t) (rs rs' : regset) : Prop :=
val_obs f (Pregmap.get r rs) (Pregmap.get r rs').
Definition regset_ren f rs rs' : Prop :=
forall r, reg_ren f r rs rs'.
Definition core_inj f c c' :=
match c, c' with State rs _, State rs' _ => regset_ren f rs rs' end.
Include X86WD.
(* Lemma decode_longs_val_obs_list: forall f (vals vals' : seq val) tys (Hobs_eq: val_obs_list f vals vals'), val_obs_list f (val_casted.decode_longs tys vals) (val_casted.decode_longs tys vals'). *)

Lemma core_inj_trans :
forall c c' c'' (f f' f'' : memren),
core_inj f c c'' ->
core_inj f' c c' ->
(forall b b' b'' : block,
f b = Some b'' -> f' b = Some b' -> f'' b' = Some b'') ->
core_inj f'' c' c''.