Je suis bloqué sur un problème simple dans prolog. Considérons le programme"NOT EXISTS" dans swi-prolog
worker(bill).
worker(smitt).
worker(fred).
worker(dany).
worker(john).
car(bmw).
car(mazda).
car(audi).
owner(fred,mazda).
owner(dany,bmw).
owner(john,audi).
Je dois ajouter un prédicat no_car (X), qui sera vrai si le travailleur X n'a pas de voitures, à savoir si nous allons saisir une requête : - no_car (X). le Prolog devrait répondre
X=smitt,
X=bill,
yes
Qu'est-ce que je l'ai fait est
hascar(X):-owner(X,_).
nocar(X):- worker(X),not hascar(X).
Mais cette approche ne fonctionne pas parce que les variables sont Anonimous avaliable que pour les requêtes. Donc, je suis vraiment coincé là-dessus. Je sais qu'il y a des mots "NOT EXISTS" en SQL qui permettent d'exprimer cette logique dans une requête, mais y a-t-il quelque chose de similaire dans le prologue?
votre code fonctionne si vous utilisez \ + au lieu de ne pas, il n'a rien à voir avec des variables anonymes .. –