Definition restrict_sm mu (X:block -> bool) :=
match mu with
  Build_SM_Injection locBSrc locBTgt pSrc pTgt local extBSrc extBTgt fSrc fTgt extern =>
  Build_SM_Injection locBSrc locBTgt pSrc pTgt (restrict local X)
                     extBSrc extBTgt fSrc fTgt (restrict extern X)
end.

Lemma replace_locals_exportedTgt: forall (mu : SM_Injection) (pubSrc' pubTgt' : block -> bool) vals, exportedTgt (replace_locals mu pubSrc' pubTgt') vals = (fun b : block => getBlocks vals b || (frgnBlocksTgt mu b || pubTgt' b)).