有没有办法可以查询SWI Prolog数据库来检查它是否包含元素?
我尝试使用“not”但似乎不适用于此版本的Prolog。
答案 0 :(得分:2)
也许你正在寻找clause / 2。虚拟会话样本
1 ?- [user].
|: a(1).
|: a(2).
|: a(X) :- b(X).
|: b(3).
|: b(4).
% user://1 compiled 0.03 sec, 6 clauses
true.
2 ?- clause(a(X),Body).
X = 1,
Body = true ;
X = 2,
Body = true ;
Body = b(X).
3 ?- clause(b(X),Body).
X = 3,
Body = true ;
X = 4,
Body = true.
4 ?- clause(c(X),Body).
false.
你可以看到c / 1没有被定义......
无论如何,SWi-Prolog数据库是一个复杂的野兽,它提供much more对其内容的控制。