Я хочу написать предикат, который возвращает решение из базы фактов. Если решения не существует, предикат должен возвращать «Решений не существует». Возвращение решения, которое существует в базе фактов, тривиально. Как реализовать часть «Нет решения существует». Я использую SWI-Prolog.
Если у вас есть предикат, скажем fact/1, который содержит все ваши факты, вы можете использовать оператор if-then-else следующим образом:
fact/1
fact_or_no_solution(Sol) :- (fact(X) -> Sol = X ; Sol = 'No solution exists' ).