Function Prolog函数不工作

Function Prolog函数不工作,function,prolog,Function,Prolog,所以我在test.pl文件中写了以下事实: bottle(b1). bottle(b2). bottle(b3). bottle(b4). full(b1,100). full(b2,750). full(b3,500). full(b4,250). consume(X, Y). :-full(X,Z);Z>=Y. 最后一行文字: 如果消费的Y参数小于瓶子的Y参数(如果瓶子已满),则应返回true。但是如果我查询这个函数,结果总是true。我不熟悉Prolog,因此如果您能解释出现错误

所以我在test.pl文件中写了以下事实:

bottle(b1).
bottle(b2).
bottle(b3).
bottle(b4).

full(b1,100).
full(b2,750).
full(b3,500).
full(b4,250).
consume(X, Y). :-full(X,Z);Z>=Y.
最后一行文字: 如果消费的Y参数小于瓶子的Y参数(如果瓶子已满),则应返回true。但是如果我查询这个函数,结果总是true。我不熟悉Prolog,因此如果您能解释出现错误的原因,并为我指出解决此错误的正确方向,我将不胜感激。

一个游离点

% original
consume(X, Y). :-full(X,Z);Z>=Y.
% modified
consume(X, Y) :-full(X,Z);Z>=Y.

请注意,这只解决了“始终为真”的问题。

您应该收到大量关于您选择忽略的“单例变量”的警告。请注意,Prolog不使用函数,这些是谓词,这是一个重要方面。@false是的,确实是我did@false为什么我会收到一个错误?消耗量(瓶(X),Y):-满(瓶(X),Z);ZSubstitute
为什么我需要右边的点=Z>=Y@dlaskIt是Prolog的语法。每一个事实和每一条规则都必须以一个点结束。