Esempio n. 1
0
 def add_assertion(self, formula, named=None):
     # First, we get rid of True/False constants
     formula = formula.simplify()
     if formula.is_false():
         picosat.picosat_add(self.pico, 0)
     elif not formula.is_true():
         cnf = self.cnfizer.convert(formula)
         self._add_cnf_assertion(cnf)
Esempio n. 2
0
 def add_assertion(self, formula, named=None):
     # First, we get rid of True/False constants
     formula = formula.simplify()
     if formula.is_false():
         picosat.picosat_add(self.pico, 0)
     elif not formula.is_true():
         cnf = self.cnfizer.convert(formula)
         self._add_cnf_assertion(cnf)
Esempio n. 3
0
    def add_assertion(self, formula, named=None):
        cnf = self.cnfizer.convert(formula)
        for clause in cnf:
            for lit in clause:
                mult = 1
                var = lit
                if lit.is_not():
                    mult = -1
                    var = lit.arg(0)

                vid = self._get_var_id(var)
                picosat.picosat_add(self.pico, mult * vid)
            picosat.picosat_add(self.pico, 0)
Esempio n. 4
0
 def _add_cnf_assertion(self, cnf):
     for clause in cnf:
         for lit in clause:
             v = self._get_pico_lit(lit)
             picosat.picosat_add(self.pico, v)
         picosat.picosat_add(self.pico, 0)
Esempio n. 5
0
 def _add_cnf_assertion(self, cnf):
     for clause in cnf:
         for lit in clause:
             v = self._get_pico_lit(lit)
             picosat.picosat_add(self.pico, v)
         picosat.picosat_add(self.pico, 0)
 def addClause(self, *ls):
     "Add this clause to the solver."
     assert len(ls) > 0
     for l in ls:
         picosat.picosat_add(self.p, l)
     picosat.picosat_add(self.p, 0)
Esempio n. 7
0
import picosat

with open("/tmp/log", "w") as fout:
    p = picosat.picosat_init()
    picosat.picosat_set_verbosity(p, 100)
    f = picosat.picosat_set_output(p, fout)
    picosat.picosat_measure_all_calls(p)
    picosat.picosat_inc_max_var(p)
    picosat.picosat_add(p, 1)
    picosat.picosat_add(p, -1)
    picosat.picosat_add(p, 0)
    assert picosat.picosat_sat(p, -1) == picosat.PICOSAT_SATISFIABLE
    picosat.picosat_message(p, 0, "End")
    picosat.picosat_flushout(f)
    picosat.picosat_reset(p)
print("Done.")