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 всегда помещаются после любых других вызовов функций, вынесенных в конец предложения из его заголовка.



Содержание