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)).