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_shared: forall mu12 mu23 (HypPub: forall b, pubBlocksTgt mu12 b = true -> pubBlocksSrc mu23 b = true) (HypFrg: forall b, frgnBlocksTgt mu12 b = true -> frgnBlocksSrc mu23 b = true) (WD1:SM_wd mu12) (WD2:SM_wd mu23), shared_of (compose_sm mu12 mu23) = compose_meminj (shared_of mu12) (shared_of mu23).