6
我已经很难寻找在序言否定明确的答案,所以我道歉,如果这是一个明显的问题:SWI-Prolog的否定
我试图写一个简单的代码,就会很自然地说“如果X喜欢Y,只有Y,则X和Y彼此相爱。”我的特等代码看起来是这样的:
likes(mary,john).
likes(mary,chad).
likes(john,mary).
loves(X,Y):- likes(X,Y), \+likes(X,Z).
我再运行了一个程序,简单地问:
?- loves(X,Y).
,但它永远是假的。按照我的逻辑,它应该回来说'X =约翰,Y =玛丽'。
我已经尝试了用切割分开否定的几种组合,尝试用多条线来定义“爱”......我可能缺少否定的一个主要原则,或者甚至有更简单的方法来实现什么我正试着在这里做。请让我知道如果你能帮助!
我使用的是Debian软件管理器中的SWI-Prolog(swipl),如果有帮助的话,尽管我怀疑这会产生多大的影响。