Definition compose_sm (mu1 mu2 : SM_Injection) : SM_Injection :=
 Build_SM_Injection
   (locBlocksSrc mu1) (locBlocksTgt mu2)
   (pubBlocksSrc mu1) (pubBlocksTgt mu2)
   (compose_meminj (local_of mu1) (local_of mu2))
   (extBlocksSrc mu1) (extBlocksTgt mu2)
   (frgnBlocksSrc mu1) (frgnBlocksTgt mu2)
   (compose_meminj (extern_of mu1) (extern_of mu2)).

Lemma compose_sm_intern_separated: forall mu12 mu12' mu23 mu23' m1 m2 m3 (inc12: intern_incr mu12 mu12') (inc23: intern_incr mu23 mu23') (InjSep12 : sm_inject_separated mu12 mu12' m1 m2) (InjSep23 : sm_inject_separated mu23 mu23' m2 m3) (WD12: SM_wd mu12) (WD12': SM_wd mu12') (WD23: SM_wd mu23) (WD23': SM_wd mu23') (BlocksLoc: locBlocksTgt mu12 = locBlocksSrc mu23) (BlocksExt: extBlocksTgt mu12 = extBlocksSrc mu23), sm_inject_separated (compose_sm mu12 mu23) (compose_sm mu12' mu23') m1 m3.