(** 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 make_arguments_inj: forall (f : memren) (l : seq (rpair Locations.loc)) (rs rs1 rs' : regset) (m m1 m' : mem) (arg arg' : seq val) (Hrs: regset_ren f rs rs') (Hmem_obs_eq: mem_obs_eq f m m') (Hval_obs_list: val_obs_list f arg arg') (Hmake: make_arguments rs m l arg = Some (rs1, m1)), exists rs1' m1', make_arguments rs' m' l arg' = Some (rs1', m1') /\ regset_ren f rs1 rs1' /\ mem_obs_eq f m1 m1'.