Ich habe eine harte Zeit der Suche nach klaren Antworten auf Negation in Prolog hatte, so dass ich entschuldige mich, wenn dies eine offensichtliche Frage ist:swi-prolog Negation
Ich versuche, einen einfachen Code zu schreiben, der logisch sagen dass "X und Y einander lieben, wenn X Y und nur Y mag." Mein .pl Code sieht etwa so aus:
likes(mary,john).
likes(mary,chad).
likes(john,mary).
loves(X,Y):- likes(X,Y), \+likes(X,Z).
ich dann mein Programm laufen und einfach fragen:
?- loves(X,Y).
aber es kommt immer als falsch. Nach meiner Logik sollte es zurückkommen und 'X = John, Y = Mary' sagen.
Ich habe ein paar Kombinationen aus der Trennung der Negation mit Kürzungen, versuchen mehrere Zeilen für die Definition "liebt" ... Ich vermisse wahrscheinlich ein Hauptprinzip der Negation, oder vielleicht gibt es sogar eine einfachere Möglichkeit, was zu implementieren Ich versuche es hier. Bitte lassen Sie mich wissen, wenn Sie helfen können!
Ich benutze SWI-Prolog (swipl) vom Debian-Software-Manager, wenn das überhaupt hilft, obwohl ich bezweifle, dass das viel Unterschied machen wird.