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 restrict_sm_preserves_globals: forall {F V} (ge:Genv.t F V) mu X (PG : meminj_preserves_globals ge (as_inj mu)) (Glob : forall b, isGlobalBlock ge b = true -> X b = true), meminj_preserves_globals ge (as_inj (restrict_sm mu X)).