Есть ли противоположность оператору подстановки, чтобы специально не находить указанные элементы в Прологе?

Мне было трудно придумать название для этого вопроса, поэтому я попытаюсь объяснить свою проблему как можно лучше здесь.

В Прологе вы можете использовать оператор _ в предикате, чтобы получить все определения независимо от того, что там существует, в моем примере:

%footballer is in the form: footballer(lastname,team,goals_scored)

%footballer(N,T,G).
footballer(rooney,manchesterutd,15).
footballer(ronaldo,madrid,20).
footballer(bale,madrid,17).
footballer(messi,barca,25).

и здесь, если бы я хотел найти всех игроков, которые играют за мадрид, я мог бы использовать:

footballer(X,madrid,_).

и это вернет игрокам интерес, независимо от забитых мячей.

Однако на самом деле я хочу, чтобы у меня была заранее определенная команда madrid, все игроки, которые не являются членами madrid. Что-то типа:

footballer(X,not(madrid),_).

Существует ли такая вещь? Я использую Пролог версии 5.10.2.

Спасибо


person Ben Jones    schedule 26.02.2015    source источник


Ответы (1)


Вы хотите синтаксическое неравенство:

?- dif(T, madrid), footballer(X, T, _).
person false    schedule 26.02.2015
comment
опечатка: должно быть dif(T, madrid) - person CapelliC; 24.06.2015