我正在观看Logica模糊逻辑和Horn子句等一些问题,并使用 Prolog 查看了一些简单的应用示例。
这个问题的原因是因为这些问题也属于 Herbrand 定理,我认为这个问题比其他问题复杂一些,至少对我而言,我很难找到与之相关的应用示例 Prolog 。
这就是为什么我想要使用Prolog 为我提供一些应用示例,而不是那么基本(因为根据定义生成Herbrand模型)是基本规则并始终能够找到这个关于Herbrand的搜索应用示例),专供Herbrand使用。感谢
这是Prolog中的示例应用代码:
p(f(X)):- q(g(X)).
p(f(X)):- p(X).
p(a).
q(b).
答案 0 :(得分:6)
一组子句的模型 iff 它有一个Herbrand模型。
要证明条款C
是条款Cs
的结果,只需表明Cs
∪~C
不可满足。
从抽象的角度来看,这是Prolog所做的,通过解决方案的特殊情况:您可以考虑执行(pure- 还有其他)Prolog程序作为Prolog引擎试图找到否定查询的解析反驳。
Prolog实施的解决方案形式, SLD解析 深度优先搜索,并不能保证所有不满意的条款都被反驳,但不完整
在Prolog中,程序属性可能会影响后果的推导。例如,使用您的程序:
?- p(X). wating...
我们只是将条款重新排序为:
q(b). p(a). p(f(X)):- q(g(X)). p(f(X)):- p(X).
我们得到:
?- p(X). X = a ; X = f(a) ; X = f(f(a)) .
请注意,在Prolog的纯粹和单调子集中,许多重要的声明性属性确实保留。有关详细信息,请参阅logical-purity。