lparse/clingo: как выразить следующее в компактной форме?

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

Я хочу выразить это в компактной форме:

F :- a(F).

Однако это синтаксическая ошибка. Как правильно это сделать?

1 ответ

Решение

В простом ASP это невозможно. Существует HEX, где можно использовать переменные для предикатов, однако это не приведет к прямой работе вашей программы (или вашей идеи).

Чтобы решить проблемы на практике, вы всегда можете добавить еще один слой предикатов вокруг него (это то, что HEX делает внутри):

true(F) :- true(a(F)).
Другие вопросы по тегам