【发布时间】:2020-06-22 19:15:31
【问题描述】:
我正在尝试在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 是否为真。
我试着做:
:- 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).
如here.
但这最终导致了这个错误:
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
是否有解决此错误的方法或任何其他方法来保存所问问题的结果?
【问题讨论】:
-
您在线使用 SWISH 吗?
-
@damianodamiano 是的,我正在使用在线版本。
标签: prolog expert-system