一阶逻辑中的大象



我有这些事实(el代表大象):

el(Sam)    el(Clyde)    el(Oscar)
pink(Sam)
gray(Clyde)  likes(Clyde, Oscar)
pink(Oscar)Vgray(Oscar)    likes(Oscar, Sam)

现在,我想证明(?):一些灰色的大象喜欢一些粉红色的大象,这转化为:(exists x)(el(x)/ gray(x)/ (exists y) (el(y)/ pink(y)/ likes(x, y))。因此,我们需要取它的否定并将其解析(?)到基中,以达到void(?)。

否定为(将使用~表示否定):

~el(x) V ~gray(x) V ~el(y) V ~pink(y) V ~likes(x, y)

我认为,我将分配xy值(Sam, Clyde或Oscar),并将后面的语句插入基础中,以"杀死"已经存在的事实。

我的尝试:

我设置了x = Clyde, y = Oscar,它给了我:

~el(Clyde) V ~gray(Clyde) V ~el(Oscar) V ~pink(Oscar) V ~likes(Clyde, Oscar)

如果我把它们放入碱基中,"杀死"它们的"对"碱基变成:

el(Sam)
pink(Sam)
gray(Oscar)    likes(Oscar, Sam)

现在呢?我们没有大象了!

理想情况下,我想有x' = Oscar, y' = Sam,这样我就会得到:

~el(Oscar) V ~gray(Oscar) V ~el(Sam) V ~pink(Sam) V ~likes(Oscar, Sam)

会进入基地杀死所有东西,但~el(Oscar)仍然活着!我该怎么做?


后续问题:

基础:

a
b
c V d

,然后放入碱基~a/~b/~c/~d。基地里的一切都会以同样的方式消失吗?我的意思是V运算符不会影响事情吗?

你可以这样写:

 el(sam).
 el(clyde).
 el(oscar).
 pink(sam).
 grey(clyde).
 likes(clyde,oscar).
 likes(oscar,sam).
 canbe(oscar,grey).
 canbe(oscar,pink).
 gelephant_likes_pelephant(GE,PE):-
   grey(GE),el(GE),
   pink(PE),el(PE),
   likes(GE,PE).

 gelephant_likes_pelephant(GE,PE):-
   canbe(GE,grey),el(GE),
   pink(PE),el(PE),
   likes(GE,PE).
gelephant_likes_pelephant(GE,PE):-
  grey(GE),el(GE),
  canbe(PE,pink),el(PE),
  likes(GE,PE).

Qs:

?- gelephant_likes_pelephant(GE,PE).
GE = oscar,
PE = sam ;
GE = clyde,
PE = oscar.

你必须小心如何使用像canbe/2这样的谓词。正如它所说,奥斯卡可以是灰色或粉红色的。那么我的问题是说哪些灰象喜欢哪些粉象,答案可以解释为:如果奥斯卡是灰象,那么奥斯卡喜欢山姆或者如果克莱德喜欢奥斯卡,那么奥斯卡是粉象。

相关内容

  • 没有找到相关文章

最新更新