XSB Prolog部分订单表格

时间:2011-11-20 03:21:29

标签: prolog xsb prolog-tabling

我正在尝试使用XSB版本3.3.5手册(来自“部分订单回答包含”)的示例:

:- table sp(_,_,po(</2)).
sp(X,Y,1):- edge(X,Y).
sp(X,Z,N):- sp(X,Y,N1),edge(Y,Z),N is N1 + 1.

我正在接受

++Error[XSB/Runtime/P]: [Syntax] :- table sp ( _ , _ , po ( >/  <--- HERE? ************ 
++                                                    2 ) ) 

任何想法有什么不对?

此外,

没有错误
:- table sp(_,_,lattice(min/3)).

2 个答案:

答案 0 :(得分:2)

我会尝试这个(因为它是语法错误)

:- table sp(_,_,po('<'/2)).
sp(X,Y,1):- edge(X,Y).
sp(X,Z,N):- sp(X,Y,N1),edge(Y,Z),N is N1 + 1.

答案 1 :(得分:0)

操作员在错误消息中“反转”(或错误消息松散1个字符?),这很奇怪。 table指令可以生成错误'inside'(指令是库谓词调用),或者可以在咨询之前生成错误。

由于操作符声明的更改(即某些声明,如op(N,xfx,&lt;)或op(M,xfy,/)更改N关于M),可能是语法错误,或者样本可能未对齐当前表/ 3规范。

我会尝试(类似于thanosQR建议的),最简单的事情,更改指令并删除(冗余?)arity指示:

:- table sp(_,_,po(<)).