【发布时间】:2011-08-31 20:26:19
【问题描述】:
我正在努力使用MiniSat 来解决约束满足问题。在一阶逻辑中,问题很容易用一些离散域变量和一些谓词来表示。
但是,MiniSat 以及我目前看到的其他 CSP 求解器都希望他们以 CNF 形式输入。所以我正在寻找一种可以将一阶逻辑表达式转换为 CNF 的“预处理器”。
有什么想法吗?
【问题讨论】:
-
如果我误解了你的问题,我很抱歉,但我想知道 CNF 是否对一阶逻辑有足够的表达能力。例如“任何人(X)的父亲的兄弟是他(X)的叔叔”可以简单地翻译为一阶逻辑。但是(就我所记得的从句而言)在我看来,从句无法表达这种普遍性(更准确地说,是“任何人”一词)。如果我弄错了,我很抱歉!
-
不,@Fezvez,我认为您通常是对的,这就是我指定离散域的原因。对于具有无限域的变量,不可能有格式良好的 CNF,因为需要无限数量的变量。对于有限域,我们可以扩展一阶逻辑的 anys 和 exists 以在谓词逻辑中创建一个(长)语句序列。
标签: logic artificial-intelligence constraints constraint-programming conjunctive-normal-form