我的SWI-Prolog知识库包含以下两个事实:
f(a,b).
f(a,c).
Run Code Online (Sandbox Code Playgroud)
现在,如果我提出查询
?- f(a,c).
true.
Run Code Online (Sandbox Code Playgroud)
但
?- f(a,b).
true ;
false.
Run Code Online (Sandbox Code Playgroud)
为什么f(a,b)既真又假?当KB中有三个事实时,也会发生这种情况.如果我追加f(a,d).到KB,然后f(a,d)为真(仅),但f(a,b)和f(a,c)都是真和假.发生了什么,我能做些什么让Prolog回答(仅)回答这些问题?