逻辑编程和自动定理证明之间的区别
Difference between logic programming and automated theorem proving
逻辑编程和自动定理证明 (ATP)(例如使用 E-Prover、Spass 或 Princess)之间有什么区别?
我搜索了很多,唯一找到的信息是ATP是逻辑编程的前身。但我看不出有什么区别。但我想这不仅仅是语法。
就问题的序言部分而言,Richard O'Keefe 说得最好:
Prolog is an efficient programming language because it is a stupid theorem prover.
因此,Prolog和定理证明之间存在联系。 Prolog 具有定理证明器的某些功能,例如,它搜索 proofs 或者更确切地说 resolution refutations,但它在 [=22] =]不完整 更适合通用编程语言的方式。
当然,Prolog 和定理证明器之间相对密切的关系使 Prolog 成为实现更成熟的定理证明器的绝佳选择。
事实上,增加和扩展Prolog不完整的默认执行策略,使搜索变得更完整,是比较容易的。
请注意,尽管 Prolog 还展示了一些超出定理证明范围的逻辑外特征,但实际上它们经常妨碍陈述性推理。另见 logical-purity.
逻辑编程和自动定理证明 (ATP)(例如使用 E-Prover、Spass 或 Princess)之间有什么区别?
我搜索了很多,唯一找到的信息是ATP是逻辑编程的前身。但我看不出有什么区别。但我想这不仅仅是语法。
就问题的序言部分而言,Richard O'Keefe 说得最好:
Prolog is an efficient programming language because it is a stupid theorem prover.
因此,Prolog和定理证明之间存在联系。 Prolog 具有定理证明器的某些功能,例如,它搜索 proofs 或者更确切地说 resolution refutations,但它在 [=22] =]不完整 更适合通用编程语言的方式。
当然,Prolog 和定理证明器之间相对密切的关系使 Prolog 成为实现更成熟的定理证明器的绝佳选择。
事实上,增加和扩展Prolog不完整的默认执行策略,使搜索变得更完整,是比较容易的。
请注意,尽管 Prolog 还展示了一些超出定理证明范围的逻辑外特征,但实际上它们经常妨碍陈述性推理。另见 logical-purity.