一阶逻辑分辨率算法。提出否定请求

时间:2017-10-14 10:00:33

标签: first-order-logic

我尝试用负面请求询问知识库。因此,在解决之前,补码(此处为positif)将添加到算法使用的子句集合中。

有了这些事实:

 Spouse(Sarah,Andrew)
 Spouse(Sophie,Edward)

这些公理:

(∀ [a , b , c ] (  (  ( Spouse(a,c) ∧ Spouse(b,c) )  ⇒ Egal(a,b) ) ))
this axiom mean onely two people can be spouse
(∀ [a , b ] (  ( Spouse(a,b) ⇔ Spouse(b,a) )  ))
(∀ [x ] ( Egal(x,x) ))
(∀ [x , y ] (  ( Egal(x,y) ⇒ Egal(y,x) )  ))
reverse
(∀ [x , y , z ] (  (  ( Egal(x,y) ∧ Egal(y,z) )  ⇒ Egal(x,z) )  ))
transitive
(∀ [x ] (  ( Egal(x,x) ⇒ Egal(x,x) )  ))

条款变成CNF

  (  (  ¬ Spouse(a0,c0)  ∨  ¬ Spouse(b0,c0)  )  ∨ Egal(a0,b0) ) 
  (  ¬ Spouse(a1,b1)  ∨ Spouse(b1,a1) ) 
  (  ¬ Spouse(b2,a2)  ∨ Spouse(a2,b2) ) 
 Egal(x0,x0)
  (  ¬ Egal(x1,y0)  ∨ Egal(y0,x1) ) 
  (  (  ¬ Egal(x2,y1)  ∨  ¬ Egal(y1,z0)  )  ∨ Egal(x2,z0) ) 
  (  ¬ Egal(x3,x3)  ∨ Egal(x3,x3) ) 

我可以要求

配偶(莎拉,安德鲁)或配偶(索菲,爱德华)

这个请求¬配偶(莎拉,爱德华):莎拉不和爱德华配偶,不行。

当然,我可以问一下Spouse(Sarah,Edward):Sarah与爱德华的配偶,得不到答案,并认为这是假的。

这种请求有什么问题,因为我不知道我的实现是否存在错误,或者是否可能无法执行此操作(假设...)。

感谢您的帮助!

0 个答案:

没有答案