Что такое метод «существует» в Прологе, о котором вы уже знаете?
Как насчет:
red(X). % ∃x Red(x)
green(X). % ∃x Green(x)
(red(X) ; green(X)). % ∃x Red(x) v Green(x)
Пролог будет перечислять привязки X
, которые удовлетворяют каждому вызову, или не удаётся попробовать .Если вы просто хотели проверить их существование и не собирать привязки, вы можете игнорировать переменную и вырезать после первой привязки, например, так:
red(_), !.
Вы также спросили, как проверить, является ли что-то исключительно краснымили зеленый, но не оба.Попробуйте это:
((\+ red(X), green(X)) ; (red(X), \+ green(X)). % ∃x Red(x) ⊻ Green(x)
Где ⊻
означает Эксклюзив или (XOR) .