def solve(self, solver=pycosat_solve): clauses = self.clauses + \ assignment_to_clauses(self.assignment, self.names) model = solver(clauses) if model is None: return False model = lits_to_assignment(model, self.reverse) self.assignment = model return True
def reset_assignment(self): self.assignment = lits_to_assignment(self.partial, self.reverse) self.assignment.update(lits_to_assignment(self.free, self.reverse))