Теория:

База знаний в системе логического программирования делится на две части: описание фактов и описание правил вывода.
Как это делается, разберем на небольшом примере большой семьи. В этой семье есть:
  • мама (ее имя Нина);
  • папа (его имя Саша);
  • сын (его имя Андрей);
  • сын (его ими Павел);
  • дочь (ее имя Вера);
  • сестра мамы (ее имя Ирина);
  • брат папы (его имя Юрий);
  • брат папы (его имя Игорь);
  • отец мамы (его имя Егор);
  • мать мамы (ее имя Анна);
  • отец папы (его имя Петр);
  • мать папы (ее имя Софья);
  • жена Андрея (ее имя Татьяна);
  • дочь Андрея и Татьяны (ее имя Мария);
  • муж Веры (его имя Антон);
  • сын Веры и Антона (его имя Виктор).
Остановимся на этом. Видно, что здесь присутствуют следующие отношения:
  • быть_отцом \((x,y)\),
  • быть_ сыном \((x,y)\),
  • быть_братом \((x,y)\),
  • быть мужем \((x,y)\)
  • быть_матерью \((x,y)\),
  • быть_дочерью \((x,y)\),
  • быть_сестрой \((x,y)\),
  • быть_женой \((x,y)\).
Каждому из этих отношений соответствует предикат, который принимает значение Истина в том и только в том случае, если значения его переменных таковы, что соответствующие им объекты (в нашем случае — субъекты) находятся в данном отношении. Например, если предикат, соответствующий отношению быть_отцом \((x,y)\), обозначить как Father\((x,y)\), то Father(Саша, Андрей) = Истина, а Father(Саша, Мария) = Ложь. Введем нужные нам предикаты:
  • быть_отцом \((x,y)\) — Father\((x,y)\)
  • быть_матерью \((x,y)\) — Mother\((x,y)\)
  • быть сыном \((x,y)\) — Son\((x,y)\)
  • быть_дочерью \((x,y)\) — Daughter\((x,y)\)
  • быть братом \((x,y)\) — Brother\((x,y)\)
  • быть_сестрой \((x,y)\) — Sister\((x,y)\)
  • быть_мужем \((x,y)\) — Husband\((x,y)\)
  • быть_женой \((x,y)\) — Wife\((x,y)\)
Известная нам информация
  • Father(Саша, Андрей);
  • Father(Саша, Павел);
  • Father(Саша, Вера);
  • Son(Андрей, Нина);
  • Son(Андрей, Саша);
  • Son(Павел, Нина);
  • Son(Павел, Саша);
  • Father(Егор, Нина);
  • Father(Петр, Саша);
  • Husband(Антон, Вера);
  • Son(Виктор, Вера);
  • Sоn(Виктор, Антон);
  • Sister(Ирина, Нина);
  • Mother(Нина, Андрей);
  • Mother(Нина, Павел);
  • Mother(Нина, Вера);
  • Daughter(Вера, Нина);
  • Daughter(Вера, Саша);
  • Brother(Юрий, Саша);
  • Brother(Игорь, Саша);
  • Mother(Анна, Нина);
  • Mother(Лидия, Саша);
  • Wife(Татьяна, Андрей);
  • Daughter(Мария, Андрей);
  • Daughter(Мария, Татьяна).
Это факты нашей базы знаний. А теперь запишем правила. Вот первое: Grandfather(x,y):=Father(x,z),Father(z,y).
В переводе на обычный язык это правило означает: если \(x\) — папа для некоторого \(z\) и тот же \(z\) — папа для \(y\), то \(x\) — дедушка для \(y\). На языке логики предикатов то же самое запишется так: xyzFather(x,z)&Father(z,y)Grandfather(x,y).
Как видите, вместо знака конъюнкции пишется запятая, вместо импликации пишется знак присваивания, причем правая и левая части поменялись местами.
Предикат, стоящий в левой части правила, называется головой правила, а предикаты, стоящие в правой части, образуют тело правила.
А вот с кванторами немного сложнее. В языке Пролог кванторы не пишутся, а только подразумеваются. При этом если переменные встречаются в голове правила, то к ним применяются кванторы всеобщности, а если переменные встречаются только в теле правила, то к ним применяются кванторы существования. У многих, наверно, возник недоуменный вопрос: ведь дедушка — это не только папин папа, но и мамин папа. На языке предикатов это записывается так:
xyzFather(x,z)&Father(z,y)Father(x,z)&Mother(z,y)Grandfather(x,y).
Иными словами, нам нужна операция дизъюнкции. А ее в правилах Пролога нет. Давайте вспомним, как обошлись с дизъюнкцией разработчики СУБД Access. Очень просто: разнесли в разные строки запрашиваемые параметры. Также и в Прологе: предикаты, соединенные дизъюнкцией, разносятся в разные правила. Значит, мы должны просто записать еще одно правило:
Grandfather(x,y):=Father(x,z),Mother(z,y).

Теперь, когда все условности оговорены, мы будем записывать все утверждения по правилам Пролога. Можно, к примеру, определить предикат, соответствующий отношению быть_бабушкой или отношению быть_внуном. Совокупность правил, которые вы здесь напишете, и создает «интеллектуальную» начинку разрабатываемой базы знаний в «Семья».
Источники:
Гейн А. Г., Ливчак А. Б., Сенокосов А. И. Информатика и ИКТ.  10 класс. М. : Просвещение, 184 с.