void Compute_Block (
alters Sudoku_Matrix& m,
preserves Integer r,
preserves Integer c
)
{
object Integer i, j, right, bottom, y;
object Text x, x_from_map;
if (r < 3) {
i = 0;
} else if (r < 6) {
i = 3;
} else {
i = 6;
} // end if
if (c < 3) {
j = 0;
} else if (c < 6) {
j = 3;
} else {
j = 6;
} // end if
right = i + 3;
bottom = j + 3;
for (i; i < right; i++) {
for (j; j < bottom; j++) {
x = m[i][j]->value;
if (m[r][c]->possible.Is_Defined (x)) {
// Value Is_Defined in block, Undefine from m[r][c]->possible
m[r][c]->possible.Undefine (x, x_from_map, y);
} // end if
} // end for
} // end for
} // Compute_Block