docs: def set_conditions(self, variables, constraints):
          """Problem provided data.
  
          variables = {variable-name: list-of-domain-values}
          constraints = [(constraint_function, variable-names, default-variable-values)]
          """
          self._vars, self._constraints = variables, []
          # build constraint objects
          for func, variables, values in constraints:
              c = Constraint(func, variables, values, self._compute_search_spaces(variables))
              self._constraints.append(c)
          # sort into most constraining first
          self._constraints.sort()