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

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

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

F :- a(F).

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


person Sid Datta    schedule 09.07.2018    source источник


Ответы (1)


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

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

true(F) :- true(a(F)).
person peschü    schedule 10.07.2018
comment
Не могли бы вы помочь мне с stackoverflow.com/questions/51275421/? - person Sid Datta; 11.07.2018