(** 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 core_inj_ext : forall the_ge m m' c c' (f fg : memren) (Hfg: forall b1 b2, fg b1 = Some b2 -> b1 = b2) (Hge_wd: ge_wd fg the_ge) (Hincr: ren_incr fg f) (Hc : core_wd f c) (Hinj : core_inj f c c') (Hmem : mem_obs_eq f m m'), match semantics.at_external (Asm_core_sem the_ge) c m with | Some (ef, vs) => match semantics.at_external (Asm_core_sem the_ge) c' m' with | Some (ef', vs') => ef = ef' /\ val_obs_list f vs vs' | None => False end | None => match semantics.at_external (Asm_core_sem the_ge) c' m' with | Some _ => False | None => True end end.