Prover9 和 Mace4 是一对在自动推理领域广泛使用的工具。Prover9 是一个自动定理证明器,用于寻找一阶逻辑和等式逻辑中公式的证明。Mace4 则是一个有限模型查找器,用于寻找满足(或不满足)给定公式集的有限域上的模型(反例)。这两个工具通常配合使用:Prover9 尝试证明某个猜想成立,而 Mace4 则尝试找到该猜想不成立的反例模型。
它们共享一套核心的形式化输入语言,这套语言基于一阶逻辑(First-Order Logic, FOL),并包含一些扩展以方便表达。理解这种语言是有效使用这两个工具的关键。
核心特点
-
声明式而非过程式 :用户只需声明 逻辑公式(公理、假设、目标结论),而不需要指定证明或模型查找的具体步骤或策略。工具会自动处理推理过程。
-
基于一阶逻辑:该语言的核心是一阶谓词逻辑,支持:
- 个体变量:如 x, y, z。
- 常量符号 :表示特定对象,如
0,e,a。 - 函数符号 :表示映射,如
f(x),g(x, y)。 - 谓词符号 :表示属性或关系,如
P(x),R(x, y),=(x, y)(等式是内置的二元谓词)。 - 逻辑连接词 :
&(合取/与),|(析取/或),-(否定/非),->(蕴含),<->(等价)。 - 量词 :
all x ...(全称量词 \\forall x),exists x ...(存在量词 \\exists x)。
-
等式处理 :等式
=是语言中内置且非常重要的部分。Prover9 和 Mace4 对等式推理有强大的支持。用户可以直接使用=符号。 -
输入文件结构:一个典型的输入文件包含以下几个部分:
- 前提 (Premises) / 假设 (Assumptions) / 公理 (Axioms) :使用
formulas(sos).或formulas(assumptions).关键字列出。这些是已知为真或被假设为真的公式。 - 目标 (Goal) / 结论 (Conclusion) / 猜想 (Conjecture) :使用
formulas(goals).关键字列出。这是用户希望 Prover9 去证明(或 Mace4 去证伪)的公式。 - (可选) 逻辑符号定义 :有时需要声明函数或谓词的元数(参数个数),如
function(f, 1).predicate(p, 2)。但在很多简单例子中,工具能推断出来。 - (可选) 搜索参数:可以设置控制证明搜索或模型查找过程的选项。
- 前提 (Premises) / 假设 (Assumptions) / 公理 (Axioms) :使用