Я должен написать формулы логики первого порядка (FOL) программы Prolog и не знаю, как выражать списки и операции над списками.
Предположим, у меня есть следующая игрушечная программа
:-use_module(library(clpr)).
family([
person(name(homer), age(A1)),
person(name(marge), age(A2)),
person(name(maggie), age(A3))
]):- {A1 = 55, A2 = 34, A3 = A1 - A2}.
Можно ли написать это в классическом FOL?И, что касается правил, как можно написать такие вещи, как Prolog member
и maplist
в FOL?Возможно ли это вообще?
Я знаю, что представленное ниже представление легче преобразовать в FOL, но мне нужно иметь структуру (аналогичную приведенной выше) с ограничениями, которые охватывают список переменной длины в моем описании
memberOf(simpsons, homer).
memberOf(simpsons, marge).
memberOf(simpsons, maggie).
ageOf(homer, 55).
ageOf(marge, 46).
ageOf(maggie, 12).
Большое спасибо заранее!