Compiler errors asp(clingo):为什么有序总和不起作用

Compiler errors asp(clingo):为什么有序总和不起作用,compiler-errors,answer-set-programming,clingo,Compiler Errors,Answer Set Programming,Clingo,考虑以下代码,在clingo中编译 文件test.lp。编译命令:clingo 0 test.lp col(("rot";"blau")). freq("rot","hell",2). freq("rot","dunkel",2). freq("rot","hell",5). freq("blau","hell",20). freq("blau","dunkel",30). freq("blau","hell",50). freq_sum(C,F) :- F = #sum{ X : freq

考虑以下代码,在clingo中编译

文件
test.lp
。编译命令:
clingo 0 test.lp

col(("rot";"blau")).

freq("rot","hell",2). freq("rot","dunkel",2). freq("rot","hell",5).
freq("blau","hell",20). freq("blau","dunkel",30). freq("blau","hell",50).

freq_sum(C,F) :- F = #sum{ X : freq(C,_,X) }, col(C).
%% does not work: >>error: syntax error, unexpected [, expecting {<<
% freq_sum(C,F) :- F = #sum[ X : freq(C,_,X) ], col(C).

#show freq_sum/2.
col((“rot”;“blau”))。
频率(“腐烂”,“地狱”,2)。频率(“rot”,“dunkel”,2)。频率(“腐烂”,“地狱”,5)。
频率(“布拉”,“地狱”,20)。频率(“blau”,“dunkel”,30)。频率(“布拉”,“地狱”,50)。
freq_sum(C,F):-F=#sum{X:freq(C,X)},col(C)。

%%不工作:>>错误:语法错误,意外[,期望{如果有人遇到此问题,我找到了解决方案。问题是版本4的clingo/gringo版本不支持多集。只能通过
{…}进入列表
。不过,有一种方法可以防止多个元素崩溃

freq_sum(C,F) :- F = #sum{ X,H : freq(C,H,X) }, col(C).

命名索引所涉及的对象,允许对列表中的每个项目进行唯一标记,防止重复值被视为单个元素。我在的§2中找到了此解决方案。

语言的正式定义在ASP-Core-2标准中……聚合(如#sum)在1.3和2.4中分别从语法和语义上进行了定义。事实上,在上面的解决方案中,求和是建立在元组“X,H”的第一个元素上的,因此“X”和“H”只是元组之间的一个区别元素。谢谢,是的,这基本上是我在文章的后半部分中写的。