code: def doArc8(arcs, domains, assignments):
      
      check = dict.fromkeys(domains, True)
      while check:
          variable, _ = check.popitem()
          if variable not in arcs or variable in assignments:
              continue
          domain = domains[variable]
          arcsvariable = arcs[variable]
          for othervariable in arcsvariable:
              arcconstraints = arcsvariable[othervariable]
              if othervariable in assignments:
                  otherdomain = [assignments[othervariable]]
              else:
                  otherdomain = domains[othervariable]
              if domain:
                  # changed = False
                  for value in domain[:]:
                      assignments[variable] = value
                      if otherdomain:
                          for othervalue in otherdomain:
                              assignments[othervariable] = othervalue
                              for constraint, variables in arcconstraints:
                                  if not constraint(
                                      variables, domains, assignments, True
                                  ):
                                      break
                              else:
                                  # All constraints passed. Value is safe.
                                  break
                          else:
                              # All othervalues failed. Kill value.
                              domain.hideValue(value)
                              # changed = True
                          del assignments[othervariable]
                  del assignments[variable]
                  # if changed:
                  #     check.update(dict.fromkeys(arcsvariable))
              if not domain:
                  return False
      return True
docs: Perform the ARC-8 arc checking algorithm and prune domains
  
      @attention: Currently unused.