lparse/clingo: 如何用紧凑的形式表达下面的内容?

lparse/clingo: How to express the following in a compact form?

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

我想用简洁的形式来表达:

F :- a(F).

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

简而言之ASP这是不可能的。有 HEX 可以使用变量作为谓词,但这不会直接使您的程序(或您的想法)工作。

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

true(F) :- true(a(F)).