MODULE Xerox;
VAR i, j, k: INTEGER;
state: ARRAY [0..63] OF BITSET;
PROCEDURE p;
VAR s: BITSET;
PROCEDURE reset(i, j: INTEGER);
VAR k: INTEGER;
BEGIN
k := i + j + 1; k := i + j;
WHILE (i < k) & ((0 IN state[i+j]) OR (state[i]<=s)) DO
state[i] := s; i := i + 1
END
END reset;
BEGIN s := {2..6}; reset(4, 32)
END p;
BEGIN k := i + j + 1; k := i + j; p
END Xerox.