Я пытаюсь создать модифицированную версию примера экспертной системы в swi-prolog.org . Я пытаюсь изменить его, чтобы иметь возможность:
good_pet(X) :- bird(X), small(X).
good_pet(X) :- cuddly(X), small(X).
good_pet(X) :- cuddly(X), yellow(X).
Без повторной проверки программы, если small () или cuddly имеет значение true.
Я попытался сделать:
:- dynamic ([small/1, cuddly/1 ]).
good_pet(X) :- bird(X), assertz(small(X)).
good_pet(X) :- bird(X), small(X).
good_pet(X) :- assertz(cuddly(X)), assertz(small(X)).
good_pet(X) :- cuddly(X), small(X).
good_pet(X) :- cuddly(X), yellow(X).
Пояснено здесь .
Но в итоге получается ошибка:
No permission to access private_procedure `assertz/1'
In:
[4] clause(assertz(cuddly(tweety)),_1306)
[3] prove(assertz(cuddly(tweety))) at line 11
[2] prove((assertz(...),assertz(...))) at line 8
[1] prove(good_pet(tweety)) at line 12
Есть ли решение этой ошибки или любой другой способ сохранить результат заданных вопросов?