これは非常に些細な Prolog ナレッジ ベースです。
spouse(bill,cheryl).
married(X,Y) :- spouse(X,Y).
married(X,Y) :- spouse(Y,X).
次のクエリを実行しました。答えが正しい名前 (のみ) である場合もあれば、正しい名前で「false」である場合もあることに注意してください。
1 ?- married(bill,X).
X = cheryl ;
false.
2 ?- married(cheryl,X).
X = bill.
3 ?- married(X,bill).
X = cheryl.
4 ?- married(X,cheryl).
X = bill ;
false.
誰かがこの一見一貫性のない動作を説明できますか? 前もって感謝します。