CNF simplification

三世轮回 提交于 2020-01-23 22:05:13

问题


Given a set of clauses, I want to first check whether they are satisfiable. If they are, I want to simplify them and create a CNF, eg., (a OR b) ^ (NOT b) should simplify to: a ^ (NOT b). I'm only working with propositional formulas. I've tried to use Java SAT4j library for doing this. It can show me whether the set of clauses are satisfiable, but doesn't seem to have any method for returning me a simplified CNF. What can I do for simplifying CNF efficiently? Are there any Java or Python implementations for this?


回答1:


You could use the Riss3g Coprocessor of Norbert Manthey to simplify your CNF.

The SAT solver minisat 2 allows to store the preprocessed CNF in a file.

Lingeling, a SAT solver from Austria has an option "-s" to simplify CNF clauses.

To convert a Boolean expression into a simplified CNF, you could use bc2cnf.



来源:https://stackoverflow.com/questions/23461191/cnf-simplification

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!