Horn Clause

Horn Clause

一个clause形如
B1,B2, …, Bm >- A1, A2, …, An

如果A1, A2, …, An同时成立,那么可以导出B1或B2,…, 或Bm
A之间是and的关系,B是or的关系。

如果X是Z的父母,且Z是Y的父母,那么X是Y的祖父母
grandparent(X, Y) >- parent(X, Z), parent(Z, Y).

不能导出结论,good和bad不可能同时成立
>- good(X), bad(X).

如果X是人,那么X或者为男性,或者为女性
male(X), female(X) >- human(X).
可以看出,一个clause可以导出多个结论。如果一个clause最多只导出1个结论,那么这种clause就称为horn clause。逻辑学家Alfred Horn提出了这样一个概念,便于进行逻辑推理。



horn clause又分两种:
像grandparent这样的,只有一个结论,m=1,称为headed horn clause, 形如
B >- A1, A2, …, An

像第二个例子那样的,没有任何结论,m=0, 称为headless horn clause, 形如
>- A1, A2, …, An


prolog程序主要是由3种horn clauses构成的。

Facts 总是成立的事实,是所有推理的基础。此时,由于不需要任何的An,所以n=0. 形如 B :-  简写为 B
‘:-’是prolog里面的推理符号,相当于 ‘>- ‘.

Rules是自定义的推理规则,它基于facts,相当于定义了一套推理的辅助工具。形如 B :- A1, A2, …, An
可知看出,以上两种为headed horn clause。

Querys 是headless的horn clause. 形如 :- A1, A2, …, An  , 通常写为 ?- A1, A2, …, An
‘?-’表示查询,swi prolog的提示符即是这个,说明prolog默认一直处于查询状态。
只有当A1, A2, …, An都成立时,query的结果才为 true。




参考:
A PROLOG Database System, Deyi Li Ph.D. ,  Department of Computer Science, Heriot-Watt University, Edinburgh, UK, 1984

你可能感兴趣的:(Horn Clause)