code: def forward_checking(csp, var, value, assignment, removals):
      "Prune neighbor values inconsistent with var=value."
      for B in csp.neighbors[var]:
          if B not in assignment:
              for b in csp.curr_domains[B][:]:
                  if not csp.constraints(var, value, B, b):
                      csp.prune(B, b, removals)
              if not csp.curr_domains[B]:
                  return False
      return Truf forward_checking(csp, var, value, assignment, removals):
      "Prune neighbor values inconsistent with var=value."
      for B in csp.neighbors[var]:
          if B not in assignment:
              for b in csp.curr_domains[B][:]:
                  if not csp.constraints(var, value, B, b):
                      csp.prune(B, b, removals)
              if not csp.curr_domains[B]:
                  return False
      return True
docs: Prune neighbor values inconsistent with var=value.