docs: def arc_consistency_3(domains, constraints):
      """
      Makes a CSP problem arc consistent.
  
      Ignores any constraint that is not binary.
      """
      arcs = list(all_arcs(constraints))
      pending_arcs = set(arcs)
  
      while pending_arcs:
          x, y = pending_arcs.pop()
          if revise(domains, (x, y), constraints):
              if len(domains[x]) == 0:
                  return False
              pending_arcs = pending_arcs.union((x2, y2) for x2, y2 in arcs
                                                if y2 == x)
      return True