无法在 Prolog 中使用用户定义的运算符

Unable to use user-defined operator in Prolog

我在这个问题上被困了很长一段时间,我的 Prolog 程序在其运算符定义中有以下行:

:- op(100, xfx, [has,gives,'does not',eats,lays,isa]).

然后这个事实:

fact :: X isa animal :-
     member(X, [cheetah,tiger,giraffe,zebra,ostrich,penguin, albatross]).

当我尝试使用运算符时,它说它是未定义的,我只是不明白为什么。

?- peter isa tiger.
ERROR: [Thread pdt_console_client_0_Default Process] toplevel: Undefined  
procedure: (isa)/2 (DWIM could not correct goal)

抱歉,如果它有些愚蠢(可能是这样),但我是 Prolog 的新手。非常感谢任何帮助。

正在工作。自己看看:

    stefan@stefan-Lenovo-G510 ~ $ swipl
    Welcome to SWI-Prolog (Multi-threaded, 64 bits, Version 7.3.12)
    % ...

    ?- op(100, xfx, [has,gives,'does not',eats,lays,isa]).
    true.

    ?- Term = (peter isa tiger).
    Term = peter isa tiger.

您收到的错误消息...

    procedure: (isa)/2 (DWIM could not correct goal)

...也这么说!

现在清楚了吗?