Definition replace_locals (mu:SM_Injection) pSrc' pTgt': SM_Injection :=
match mu with
Build_SM_Injection locBSrc locBTgt pSrc pTgt local extBSrc extBTgt fSrc fTgt extern =>
Build_SM_Injection locBSrc locBTgt pSrc' pTgt' local extBSrc extBTgt fSrc fTgt extern
end.
(*typically, we have forall b, pSrc b -> pSrc' b and forall b, pTgt b -> pTgt' b, i.e. only reclassify private entries as public*)

Lemma replace_locals_sharedTgt:
forall (mu : SM_Injection) (pubSrc' pubTgt' : block -> bool),
sharedTgt (replace_locals mu pubSrc' pubTgt') =
(fun b : block => frgnBlocksTgt mu b || pubTgt' b).