(** 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 exec_instr_wd: forall (g : genv) (fn : function) (i : instruction) (rs rs': regset) (m m' : mem) (f fg: memren) loader (Hmem_wd: valid_mem m) (Hrs_wd: regset_wd f rs) (Hge_wd: ge_wd fg g) (Hincr: ren_domain_incr fg f) (Hdomain: domain_memren f m) (Hexec: exec_instr g fn i rs m = Next rs' m'), valid_mem m' /\ (exists f' : memren, ren_domain_incr f f' /\ domain_memren f' m') /\ (forall f' : memren, domain_memren f' m' -> core_wd f' (State rs' loader)).