0
b(X) :- a(b(X)).
c(X) :- a(c(X)).
d(X) :- a(d(X)).
etc.

我想以紧凑的形式表达它:

F :- a(F).

但是,这是一个语法错误。这样做的正确方法是什么?

4

1 回答 1

1

在普通的 ASP 中这是不可能的。在 HEX 中可以使用变量作为谓词,但这不会直接使您的程序(或您的想法)起作用。

为了解决实践中的问题,你总是可以在它周围添加另一层谓词(这就是 HEX 内部所做的):

true(F) :- true(a(F)).
于 2018-07-10T17:53:29.820 回答