定理证明器的构建与应用
1. Pttp 定理证明器
Prolog 技术定理证明器(Pttp)与 Snark 的 coder 一样具备完备性,但并非专门用于浓缩分离。Pttp 是面向目标的,推理速度极快。coder 通过深度优先迭代加深搜索按长度枚举前向推理推导,而 Pttp 进行的是不完整的反向推理推导。
Prolog 作为定理证明器存在三个重大缺陷:
- 其合一算法不可靠且可能不终止。
- 搜索策略不完备。
- 对于非 Horn 子句,推理系统不完备。
Pttp 试图在保留 Prolog 系统特性和性能的同时克服这些缺陷,方法是将定理证明问题的子句转换为可执行的 Prolog 子句,具体有三种转换方式:
- 可靠合一转换 :重命名子句头部的变量,使其线性化,避免在合一子句头部和目标时出现“出现检查”问题,剩余的合一步骤放在子句体中,由内置谓词执行带出现检查的可靠合一。
- 完全深度受限搜索转换 :为每个谓词添加深度边界参数,并在非单元子句体中添加深度边界测试和递减操作,通过驱动谓词控制深度优先迭代加深搜索。
- 完全模型消除(ME)推理转换 :为每个谓词添加祖先目标列表的参数,并在非单元子句体中添加祖先列表更新操作,添加子句执行 ME 归约和剪枝操作。Prolog 推理加上 ME 归约操作(若目标与祖先目标的补可合一则成功)对非 Horn 子句是完备的。
Pttp 本质上是 Loveland 的模型消除(ME)定理证明过程以 Prolog 的方式实现。从推理速度和解决简单问题的性能来看,
超级会员免费看
订阅专栏 解锁全文
677

被折叠的 条评论
为什么被折叠?



