6.1 Атомарные формулы
Атомарными формулами (атомами) в языке являются следующие обозначения:
атом =
простой_атом |
бинарное_отношение |
объявление-функции
6.1.1 Простые атомы
Простой атом — это функтор с соответствующим количеством
аргументов, недоопределённое множество или переменная:
простой_атом =
функтор [ "(" [ термы_и_выражения [ "*" ] ] ")" ]
недоопределённое_множество |
метапеременная
Последний аргумент атомарной формулы может быть помечен «*»
только тогда, когда он является переменной. В этом случае атомарная формула
обозначает предикат с переменным числом аргументов («предикат переменной арности»),
а помеченная переменная — список аргументов, не определённых явно в составе атомарной
формулы. Во время трансляции арность такого предиката неопределена, однако в ходе
исполнения программы эта атомарная формула может быть унифицирована, в общем случае,
с атомом любой арности большей или равной R — 1, где R — количество аргументов,
заданных в составе рассматриваемого предиката (включая помеченную переменную).
Переменные, помеченные «*», а также переменные, используемые
в качестве атомов и функторов, называются «метапеременными». Предикаты переменной
арности, метапеременные, используемые в качестве атомов, а также атомы, в качестве
функторов которых используются метапеременные, называются «метапредикатами»
(«метаатомами»).
Переменная в атомарной формуле подцели предложения может
быть помечена «*» лишь в том случае, если она таким же образом помечена в
заголовке предложения и не является анонимной переменной «_». Для обозначения
списка аргументов предиката переменной арности не разрешается использовать
метафункторы.
Атомарная формула вида
Ao{x1:A1,x2:A2--xn:An|Rest}
эквивалентна
"({O:Ao,X1A1X2:A2.....xn:An|Rest}),
где " — символ, состоящий из пустой цепочки графем.
Пример.
Предложение, имитирующее правило 2-го порядка. Для
обозначения данных в примере используются недоопределённые множества, в состав
которых входит признак чётности «is_even».
P{is_even:'any' | Rest}:-
P{is_even:'yes'|Rest},
P{is_even:'no'|Rest}.
Приведённое утверждение означает, что любой предикат Р является
истинным при чётных и нечётных значениях аргумента, если его
истинность удаётся доказать отдельно для чётных и нечётных значений этого аргумента.
6.1.2 Бинарные отношения
«Бинарным отношением» называется атомарная формула,
состоящая из двух аргументов, соединённых оператором отношения:
бинарное_отношение =
терм_или_выражение оператор_отношения терм_или_выражение
В качестве знаков операций в бинарных отношениях
используются имена встроенных предикатов '==' и ':=', а также некоторые знаки операций сравнения:
оператор_отношения =
"= =" | ":=" | " < " | " > " | " < > " | ">="
Бинарное отношение, в состав которого входит
такой знак операции, эквивалентно обозначению вида
функтор(аргумент1,аргумент2),
где функтор — знак операции, заключённый в апострофы,
аргумент! и аргументг — операнды, стоящие соответственно слева и справа
от знака операции.
6.1.3 Объявления функций
Функциями называется разновидность предикатов,
предназначенная для имитации подпрограмм-функций, возвращающих
выходное значение. Определение функций осуществляется с помощью
специальных синтаксических конструкций, называемых «объявлениями функций».
объявление-функции = простой_атом "=" терм_или_выражение
В качестве простых атомов в составе объявлений
функций не разрешается использовать метапеременные.
В результате трансляции объявления функций преобразуются в предикаты.
В ходе трансляции предложения, имитирующего объявление функции,
p(A1,A2,... ,Аn) = Е :- Конъюнкция. ,
оно преобразуется к виду
p(E,A1,A2,..., Аn):- Конъюнкция, S.
При этом все вызовы функций S, входящие в состав
терма Е, выносятся в конец предложения, после подцелей «Конъюнкция».
Вызовы функций S всегда помещаются после любых других вызовов функций,
вынесенных в конец предложения из его заголовка.
Содержание