Пролог, exshell, известный предикат? - PullRequest
0 голосов
/ 22 января 2019

Я пытаюсь внедрить экспертную систему с ExShell под Gprolog, используя код, полученный из https://www.cs.unm.edu/~luger/ai-final/code/PROLOG.exshell_full.html. Однако я продолжаю получать сообщение об ошибке:

uncaught exception: error(existence_error(procedure,known/2),solve/0)

Единственное, что мне нужно было изменить, это строки 334-335:

write_premise(not Premise) :-
    !, write('     '), write(not),write(' '), write(Premise),nl.

до

write_premise(\+ Premise) :-
    !, write('     '), write(\+),write(' '), write(Premise),nl.

Я использую их пример для автомобильной диагностики, чтобы проверить это. Я не уверен, могу ли я что-то сделать, чтобы это исправить, или кто-то знает, где я могу получить исходный код для ExShell, который будет работать с gprolog.

1 Ответ

0 голосов
/ 22 января 2019

Вам необходимо объявить предикат know/2 как динамический предикат, используя директиву:

:- dynamic(know/2).
...