(** 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_arg_ren: forall (g : genv) (rs rs' : regset) (f fg: memren) (m m' : mem) (arg : builtin_arg preg) (varg : 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_arg g rs (rs RSP) m arg varg), exists varg', eval_builtin_arg g rs' (rs' RSP) m' arg varg' /\ val_obs f varg varg'.