Скачиваний:
19
Добавлен:
01.05.2014
Размер:
292.35 Кб
Скачать

Приложения

1. Основная терминология

Аксиома (axiom). В логике высказываний или в логике предикатов первого порядка аксиома - это ППФ, которая полагается истинной. Множество аксиом, описывающих структуру некоторой области знаний, называется теорией (см. разд. 0.4 и 0.5). Если Пролог-программа используется для описания структуры системы, то каждую фразу программы можно рассматривать как аксиому.

Аксиоматизация (axiomatization). В логике предикатов аксиоматизация (или аксиоматическое определение) отношения ~ это множество аксиом, из которых при помощи правил вывода могут быть получены все истинные конкретные реализации данного отношения.

"Аргументность" (arity). Количество аргументов структуры или предиката можно назвать его аргументностью.

atom (atom). Атом — это нечисловая константа. Он обычно записывается как одно слово без кавычек. Примеры атомов:

hello * '#$%' 'New York'

Апострофы (одиночные кавычки) употребляются при записи атомов, состоящих из нескольких слов, или атомов, начинающихся с заглавной буквы.

Встроенный предикат (built-in predicate). В каждой конкретной версии языка Пролог имеются определенные встроенные предикаты, перед использованием которых не требуется явного их просмотра интерпретатором Пролога. В разд. 3.3—3.10 рассматриваются наиболее часто встречающиеся в языке Пролог встроенные предикаты. Точный перечень встроенных предикатов для Вашей версии языка можно найти в справочных материалах по этой версии.

Вывод (inference). Процесс получения заключения из некоторых предположений называется выполнением вывода.

Детерминированный (determinate). Процедура является детерминированной, если она будет успешно выполнена только один раз. Составной запрос (или тело правила) будет детерминированным, если после его выполнения интерпретатор окажется не в состоянии осуществить поиск с возвратом ни для какой подцели этого запроса.

Запрос (Цель) (query (goal)). С позиции декларативной семантики Пролога запрос — это вопрос, который пользователь задает Пролог - системе о том, соблюдается ли конкретная реализация отношения. С позиции процедурной семантики Пролога запрос можно рассматривать как вызов процедуры.

Простой запрос записывается как имя предиката, за которым следуют аргументы внутри скобок и точка. Например, запрос

| ? отец (эдвард, ральф) .

обращается к предикату "отец/2".

Если запрос не содержит переменных, то система ответит на него либо да (yes), либо нет (по). Если же в запросе есть переменные, то система предпримет попытку найти такие значения этих переменных, при которых запрос будет истинным. После того как система найдет один из ответов, пользователь, набрав символ "; ", может попросить систему провести поиск дополнительных ответов.

Составной запрос состоит из двух или более простых запросов, связанных соединителями "и" (записывается как запятая) и "или" (записывается как точка с запятой). Каждая компонента составного запроса называется подцелью. Ниже приводится пример составного запроса, предназначенного для отыскания имени деда Ральфа:

| ? отец (Д, О), отец (О, ральф).

Поскольку обе подцели этого составного запроса связаны соединителем "и", то для истинности всего составного запроса должны быть истинными одновременно обе его подцели. Переменная "О" - это разделяемая неременная, которая ввиду необходимости унификации должна иметь одно и то же значение в каждой из двух подцелей.

Конкретизация (instantiation). Переменная в языке Пролог конкретизируется, когда при выполнении запроса она получает в качестве значения константу или структуру.

Константа (constant). Константа - это либо целое число (1, 20, - 10), либо число с плавающей точкой (3.1417) , либо атом.

Операция (operator). Операция - это имя предиката или структуры, которое может быть записано в инфиксной, префиксной или постфиксной форме (см. разд. 3.10). Например, символ "+" — это имя структуры, объявленное как инфиксная операция.

Переменная (variable). Переменная — это одна из разновидностей термов Пролога, значением переменной может быть константа или структура. Переменная обозначается словом, начинающимся с заглавной буквы или с символа подчеркивания. Это слово не заключается в кавычки. Примеры переменных:

Х Имя с __305

Правило (rule). Правило - это фраза Хорна с одним или более условий, например:

получить_по_шее (ральф) :—

хэкер (ральф).

В данном правиле « хэкер(ральф) » — это одно и единственное условие, а « получить_ по шее (ральф) » - это заключение.

Правило вывода (inference rule). В исчислении высказываний и в исчислении предикатов правило вывода специфицирует синтаксическую форму логически корректного вывода (см. разд. 0.4 и 0.5). Примером правила вывода является логическое правило modus ponens:

Из р —> q и р выводится q

В табл. 0.2 приведены и другие правила. Резолюция — это правило вывода для фразовой формы логики предикатов.

Предикат (predicate). Предикат - это отношение, существующее между некоторым фиксированным набором аргументов. Предикат идентифицируется по своему имени и количеству аргументов ("аргументности") . Обращение к предикату записывается так:

имя (арг1, арг2, ... , apгN)

В языке Пролог предикаты определяются при помощи процедур.

Просматривать (consult). Во время сеанса работы интерпретатор Пролога просматривает файл с фразами, написанными на этом языке, после чего данные фразы становятся частью текущей Пролог - программы. В большинстве версий Пролога для выполнения этого действия имеется встроенный предикат "consult /1 ".

Процедура (procedure). Процедура —это множество фраз, в котором в заголовке каждой фразы присутствует одно и то же имя предиката и имеется одинаковое количество аргументов. Например, нижеследующие две фразы из гл. 1:

предок (А, Б) :- % (1)

родитель (А, Б).

предок (А, Б) :- % (2)

родитель (В, Б),

предок (А, В).

образуют процедуру "предок/2". Этой процедурой определяется предикат "предок/2".

Подцель (subgoal). Подцель — это условие в теле правила или в составном запросе.

Поток (stream). Данные, организованные последовательно, называются потоком. В программе можно интерпретировать как поток канал ввода-вывода, используемый для связи с дисковыми файлами или с внешней средой. Рекурсивную структуру данных, такую как список, также можно считать потоком.

Словарь (lexicon). Словарь формального языка — это множество символических обозначений, используемых для написания предложений этого языка.

Сократить (cut). Встроенный предикат "сократить" (записывается в виде символа "!") всегда является истинным. Его применение останавливает поиск с возвратом (см. разд. 3.2).

Список (list). Список — это особый тип структуры, записываемый как множество из нуля или более элементов, заключенных в квадратные скобки. Если список не содержит элементов, то говорят, что он пуст. Пустой список записывается как [ ]. Ниже приведены примеры списков, все элементы которых заданы явно:

[аа,bb,сс] [X, Y] [Имя] [[x,y],z]

В следующих примерах явно задаются только первые несколько элементов каждого списка. Остальная часть списка представляется переменной, стоящей справа от символа " ] ":

[X;Y] [a,b,c]Y] [[x, у] [Остаток]

Символ " [ " называется конструктором списка. Элементы, стоящие слева от символа " [ ", называются началом списка. Переменная, расположенная справа от символа " [ ", называется остатком списка; она представляет список любой длины.

Структура (structure) (называется также составным термом). Структура — это сложный объект данных, идентифицируемый своим именем и количеством аргументов. Структура записывается как имя, за которым следует один или большее число аргументов, заключенных в скобки. Пример структуры "отец/1":

отец (джордж).

Здесь "отец" — это имя структуры, а "джордж" — это первый и единственный ее аргумент. Аргументом структуры может служить другая структура, например:

отец (отец (джордж) ).

Атом можно рассматривать как структуру, не имеющую аргументов.

Теория (theory). Теория в логике высказываний или в логике предикатов — это множество аксиом, описывающих область знаний (см. разд. 0.4 и 0.5). Если программа на Прологе используется для описания структуры некоторой системы, то такую программу можно рассматривать как теорию.

Терм (term). Аргументом предиката или структуры должен быть терм. Терм — это либо константа, либо переменная, либо структура.

Унификация (unification). Унификация — это процесс согласования подцели с заголовком фразы при выполнении запроса. Подцель унифицируется с заголовком фразы, если выполняются три следующие условия:

1) у них одинаковые имена; 2) они имеют одинаковое количество аргументов; 3) все их аргументы можно унифицировать. Унификация аргументов осуществляется в соответствии со следующими правилами:

1. Две константы унифицируются друг с другом, если они идентичны.

2. Переменная унифицируется с константой или со структурой. В результате унификации переменная конкретизируется, получая значение константы или структуры.

3. Переменная унифицируется с другой переменной. В результате они становятся одной и той же переменной.

4. Структура унифицируется с другой структурой, если у них одинаковые имена, они имеют одинаковое количество аргументов и все их аргументы могут быть унифицированы.

Факт (или единичная фраза) (fact (or unit clause)). Факт — это фраза Хорна, не имеющая условий, т.е. обладающая пустым телом (см. разд. 1.2). Примеры фактов:

король (людовик, Франция).

имеют_ клюв (птицы).

служащий (нэнси, обработка _ данных, 55000).

Фраза (clause) . См. фраза Хорна.

Фраза Хорна (Horn clause). Фраза Хорна — это либо факт, либо правило, либо запрос (цель).

Функтор (functor). Функтор — это имя и связанное с ним количество аргументов структуры. Некоторые исследователи употребляют термин "функтор" в менее строгом смысле для обозначения лишь имени структуры или имени предиката (см. работу [82]). Ученые, специализирующиеся в области невычислительной логики, используют термин "функтор" по-другому. Например, Ходжес в работе [45] называет логические соединители "and" (и), "or" (или), "not" (не) функторами истинности.

Цель (goal). См. запрос.

Соседние файлы в папке Гл.6,7,Прилож.,Допол