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_pub': forall mu (WD: SM_wd mu) X
(HX: forall b, vis mu b = true ->
X b = true),
pub_of (restrict_sm mu X) = pub_of mu.