def METHOD_NAME(self, variables, constraints):
    solvers = self.get_solvers()
    vars = list(variables)
    results = defaultdict(dict)
    results["variables"] = variables
    results["constraints"] = constraints
    results["solvers"] = solvers
    for s in solvers:
        before_sat_check = time.time()
        results[s]["claimed_sat"] = s.satisfiable(extra_constraints=constraints)
        results[s]["solve_time"] = time.time() - before_sat_check
        results[s]["claimed_solutions"] = ()
        if results[s]["claimed_sat"]:
            before_eval = time.time()
            solutions = tuple(
                self._get_models_it(s, variables, constraints=constraints, n=NUMBER_SOLUTIONS_TO_COMPARE)
            )
            results[s]["eval_time"] = time.time() - before_eval
            results[s]["claimed_solutions"] = solutions
            results[s]["num_requested_solutions"] = NUMBER_SOLUTIONS_TO_COMPARE
            results[s]["solution_correctness"] = tuple(self.is_model_correct(constraints, sol) for sol in solutions)
    return dict(results)