如何在Prolog中进行假设

时间:2019-05-20 23:37:48

标签: prolog

如果我有一个事实和规则数据库,可以说

person(mary).
employee(bob).

not_a_robot(X) :- person(X).

是否有办法为查询的(线程本地)上下文假设规则? 像这样:

?- assume((person(X) :- employee(X)), not_a_robot(Y))
X = mary ;
X = bob.

这样,只有进行假设的调用才能看到数据库的更新视图。

不确定数据库中的asserting然后retracting是否会产生这种影响? (使用assert的AFAIK还将意味着还需要将所有谓词标记为动态)。

0 个答案:

没有答案