我对 Prolog 的基础知识感到困惑。
如果我有这个知识库:
loves(vincent, mia).
loves(marcellus, mia).
loves(pumpkin, honey_bunny).
loves(honey_bunny, pumpkin).
jealous(X, Y) :-
loves(X, Z),
loves(Y, Z).
然后我假设
“如果 X 爱 Z 并且 Y 爱 Z,那么 X 就会嫉妒 Y”
当我运行查询时jealous(X, Y).
I get
X = Y, Y = vincent
X = vincent,
Y = marcellus
X = marcellus,
Y = vincent
X = Y, Y = marcellus
X = Y, Y = pumpkin
X = Y, Y = honey_bunny
我可以看到文森特嫉妒马塞利厄斯,马塞利厄斯也嫉妒文森特,但是表格中的线条是什么X = Y, Y = vincent
请告诉我?我假设当存在匹配时,下一行给出查询为真的值,如
X = Y, Y = vincent
X = vincent,
Y = marcellus
X = marcellus,
Y = vincent
并且没有像下面那样的东西X = Y, Y = marcellus
而其他则意味着不匹配。但X = Y, Y = vincent
对我来说没有意义。如果这意味着“X 是某个值”,那就有意义了Y
,我们假设Y
是文森特。”但这并不能解释X = marcellus, Y = vincent
在结果中。
任何帮助理解这一点的帮助都非常感激。