End EFF_INJ_SIMULATION_PLUS.
End Eff_INJ_SIMU_DIAGRAMS.
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_as_injD: forall mu1 mu2 b1 b3 d
(I: as_inj (compose_sm mu1 mu2) b1 = Some (b3, d))
(WD1: SM_wd mu1) (WD2: SM_wd mu2),
exists b2 d1 d2, as_inj mu1 b1 = Some(b2,d1) /\
as_inj mu2 b2 = Some(b3,d2) /\
d=d1+d2.