Ho avuto un momento difficile alla ricerca di risposte chiare sulla negazione in Prolog, quindi mi scuso se questa è una domanda ovvia:swi-prolog la negazione
Sto cercando di scrivere un semplice codice che logicamente dire che "X e Y si amano a vicenda se a X piace Y e solo Y." Il mio codice .pl simile a questa:
likes(mary,john).
likes(mary,chad).
likes(john,mary).
loves(X,Y):- likes(X,Y), \+likes(X,Z).
ho quindi eseguire il mio programma e semplicemente chiedo:
?- loves(X,Y).
ma si tratta sempre fuori falso. Secondo la mia logica, dovrebbe tornare a dire 'X = john, Y = mary'.
Ho provato alcune combinazioni di separare la negazione con i tagli, provare più righe per definire "amori" ... Probabilmente mi manca un principio importante di negazione, o forse c'è anche un modo più semplice per implementare cosa Sto cercando di fare qui. Per favore fammi sapere se puoi aiutare!
Sto usando SWI-Prolog (swipl) dal Debian Software Manager, se questo aiuta affatto, anche se dubito che farà molta differenza.