(** 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.

Lemma eval_builtin_args_ren: forall (g : genv) (rs rs' : regset) (f fg: memren) (m m' : mem) (args : seq (builtin_arg preg)) (vargs : seq val) (Hmem_obs_eq: mem_obs_eq f m m') (Hrs_ren: regset_ren f rs rs') (Hfg: forall b1 b2, fg b1 = Some b2 -> b1 = b2) (Hge_wd: ge_wd fg g) (Hincr: ren_incr fg f) (Heval: eval_builtin_args g rs (rs RSP) m args vargs), exists vargs', eval_builtin_args g rs' (rs' RSP) m' args vargs' /\ val_obs_list f vargs vargs'.