Пролог: создание вселенной Herbrand и базы Herbrand

У меня есть серьезные проблемы с пониманием концепции Пролога и соответствующей вселенной Гербранда, базы Гербранда и так далее. Например, если у меня есть программа Prolog:

p(X,Y) :- q(X,Y), q(Y,X).
s(a).
s(b).
s(c).
q(a,b).
q(b,a).
q(a,c).

Я имею в виду - я знаю, что должна делать программа Пролог, но я не могу придумать соответствующую вселенную Хербранд или Базу Хербранд.

Для Вселенной Herbrand я должен искать все термины конструктора без переменных.

  1. Какие конструкторы в этом контексте?

  2. Я бы просто предположил, что HU = {a,b,c, s(a), s(b), s(c), q(a,a), q(a,b), q(b,a)... p(a,a), p(a,b), ... s(s(a))....}

  3. Как придумать базу Хербранд?

Я прошу прощения за все вопросы, но я думаю, что я смешиваю очень много разных вещей "Herbrand":-(.

Может ли кто-нибудь помочь мне и объяснить мне вещи?

Спасибо.

1 ответ

Решение

Википедия говорит: "Вселенная Гербранда... определяется, начиная с набора констант и функциональных символов в наборе предложений".

Так что, если мы будем следовать этому определению, здесь он будет состоять из атомов a, b, c и сложные термины с функторами s/1, q/2, p/2 и аргументы, которые находятся в самой вселенной Herbrand:

hu(a).
hu(b).
hu(c).
hu(s(Y)):- hu(Y).
hu(q(Y,Z)):- hu(Y), hu(Z).
hu(p(Y,Z)):- hu(Y), hu(Z).

"Набор всех основных атомов, которые могут быть сформированы из предикатных символов из S и членов из H, называется базисом Хербранда":

hb(s(Y)):- hu(Y).
hb(q(Y,Z)):- hu(Y), hu(Z).
hb(p(Y,Z)):- hu(Y), hu(Z).
Другие вопросы по тегам