逻辑编程和自动定理证明(ATP)(如E-Prover、Spass或Princess)有什么区别?
我搜索了很多资料,唯一找到的信息是ATP是逻辑编程的前身。但我并不看出两者之间的区别。但我猜想它应该不止于语法上的差异。
逻辑编程和自动定理证明(ATP)(如E-Prover、Spass或Princess)有什么区别?
我搜索了很多资料,唯一找到的信息是ATP是逻辑编程的前身。但我并不看出两者之间的区别。但我猜想它应该不止于语法上的差异。
就Prolog部分而言,Richard O'Keefe说得最好:
Prolog是一种高效的编程语言,因为它是一个愚蠢的定理证明器。
因此,Prolog和定理证明之间存在联系。Prolog具有某些定理证明器的特征,例如,它搜索证明或者更确切地说是消解反驳,但它以一种不完全的方式进行搜索,这种方式更适合于一般用途的编程语言。
当然,Prolog和定理证明器之间的相似性使Prolog成为实现更完整的定理证明器的绝佳选择。
事实上,相对容易增强和扩展Prolog的不完整默认执行策略,使搜索变得更加完整。
请注意,Prolog还表现出一些超逻辑特征,超出了定理证明的范围,实际上通常会妨碍声明式推理。另请参见logical-purity。