-1

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

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

现在,我想证明(?):Some gray lion like some pink像是: (exists x)(el(x) /\ gray(x) /\ (exists y) (el(y) / \ pink(y) /\ likes(x, y)). 所以,我们需要把它的否定和resolve(?) 化为基,才能得到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影响事情吗?

4

1 回答 1

2

你可以有这样的东西:

 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).

问:

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

你必须小心如何使用像 canbe/2 这样的谓词。正如它所说的奥斯卡可以是灰色或粉红色。然后我的查询是说哪些灰色大象喜欢哪些粉色大象,答案可以解释为:如果 oscar 是灰色大象 THEN oscar 喜欢 sam 或 IF clyde 喜欢 oscar THEN oscar 是粉色大象。

于 2015-10-10T16:19:56.920 回答