Definition alloc_right_sm (mu: SM_Injection) sp: SM_Injection :=
  Build_SM_Injection (locBlocksSrc mu)
                     (fun b => eq_block b sp || locBlocksTgt mu b)
                     (pubBlocksSrc mu) (pubBlocksTgt mu)
                     (local_of mu)
                     (extBlocksSrc mu) (extBlocksTgt mu)
                     (frgnBlocksSrc mu) (frgnBlocksTgt mu) (extern_of mu).

(* Specifications: *)
Lemma alloc_right_sm_wd: forall mu sp (WD: SM_wd mu) (NEW1: DomTgt mu sp = false), SM_wd (alloc_right_sm mu sp).
Lemma alloc_right_sm_locBlocksTgt: forall mu sp, locBlocksTgt (alloc_right_sm mu sp) = fun b => eq_block b sp || locBlocksTgt mu b.
Lemma alloc_right_sm_DomSrc: forall mu sp, DomSrc (alloc_right_sm mu sp) = DomSrc mu.
Lemma alloc_right_sm_DomTgt: forall mu sp, DomTgt (alloc_right_sm mu sp) = fun b => eq_block b sp || DomTgt mu b.
Lemma alloc_right_sm_as_inj: forall mu sp, as_inj (alloc_right_sm mu sp) = as_inj mu.
Lemma alloc_right_sm_intern_incr: forall mu sp, intern_incr mu (alloc_right_sm mu sp).