Задача состоит в том, чтобы написать правила для следующих отношений:
является_матерью(Х) /* X является матерью */
является_отцом(Х) /* X является отцом */
является_сыном(Х) /* X является сыном */
является_сестрой(Х,Y) /* X является сестрой Y */
дедушка(Х, Y) /* X является дедушкой Y */
общие_родители(Х,Y) /* X и Y имеют общих родителей*/
Например, мы могли бы написать правило для предиката тетя,при условии что у нас уже имеются правила для женщина, общие_родителии родитель.
тетя(Х,Y):- женщина(Х), общие_родители(X, Z), родитель(Z,Y).
Это можно также записать следующим образом:
тетя(Х,Y):- является_сестрой(Х,Z), родитель(Z, Y).
при условии что мы имеем правило для отношения является_сестрой.
Упражнение 1.4.Используя правило для отношения является_сестрой,определенное в тексте, объясните, каким образом становится возможным, что некто может быть своей собственной сестрой. Как можно было бы изменить это правило, если такое свойство нежелательно? Считайте, что предикат различныиз упр. 1.3 уже определен.
В данной главе приводится более полное описание тех элементов Пролога, которые были введены в предыдущей главе. Пролог предоставляет средства для структурирования данных, а также средства для структурирования той
Синтаксические правила языка описывают допустимые способы соединения слов. В соответствии с нормами английского языка предложение «I see a zebra» («я вижу зебру») является синтаксически правильным в отличие от предложения «zebra see I а» («зебра видит я»). В первой главе синтаксис Пролога явно не обсуждался, просто показывалось на примерах, как выглядят некоторые элементы Пролога. В данном разделе приводится краткое описание синтаксических правил для уже знакомых нам элементов Пролога.
Пролог-программы состоят из
ABCDEFGHIJKLMNOPQRSTUVWXYZ
abсdefghijklmnopqrstuvwxyz
0123456789
+-*/\^<>~:.?@#$&
Первая строка состоит из
Константами являются поименованные
нравится мэри джон книга вино имеет драгоценности может_украсть
Специальные символы, используемые Прологом для обозначения вопросов '?-' и правил ':-', также являются атомами. Есть два вида атомов: составленные из букв и цифр и составленные из спецзнаков. Первые, как мы видели в предыдущей главе, должны обычно начинаться со строчной буквы. Атомы, составленные из спецзнаков, как правило, состоят
а
свободный
=
'джордж-смит'
--›
джордж_смит
ieh2304
Следующие объекты не являются атомами:
2304ieh
джордж-смит
Пустой
_ альфа
Другой вид констант, целые числа, используется для представления числовых данных, что позволяет выполнять над ними арифметические операции. В предыдущей главе не обсуждались способы выполнения арифметических операций в Прологе, такие средства будут определены ниже. Целые числа состоят только из цифр и не могут содержать десятичной запятой. В этой книге будут использоваться сравнительно небольшие положительные числа, такие как
0 1 999 512 8192 14765 6224