Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Акторный Пролог.pdf
Скачиваний:
37
Добавлен:
01.05.2014
Размер:
1.91 Mб
Скачать

6.3. СТРАТЕГИЯ УПРАВЛЕНИЯ

61

?функтор(аргумент1,аргумент2),

где функтор знак операции, заключённый в апострофы, аргумент1 и аргумент2 — операнды, стоящие соответственно слева и справа от знака операции.

Выражение, построенное с помощью префиксного знака операции «−», эквивалентно вызову функции вида

?’−’(аргумент),

аргументом которой является операнд выражения. Пример. Правильно построенные выражения: 1+H −(E)/4+(W+"A4"−319e0), ’f’ X+(7−"t")−’r’

Ссылки: вызов функции 6.2.1, терм 3, функтор 3.

6.3Стратегия управления

Стратегия управления Акторного Пролога («акторный механизм») является расширением стандартной стратегии управления («поиск слева направо в глубину с возвратом»), соответствующей текстуальному упорядочению процедур и вызовов предикатов. Отличиями акторного механизма от стандартной стратегии управления являются возможности повторного доказательства акторов, а также задержки исполнения подцелей.

Ссылки: актор 7.1, акторный механизм 7, вызов предиката 6.2, исполнение предиката 6.3.1, механизм задержки 6.3.3, повторные доказательства 7.1, процедура 6.

6.3.1Исполнение вызова предиката

Общая схема исполнения вызова предиката (исполнения предиката) включает следующие действия:

1.Выбор предложения, заголовок которого:

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

62

Глава 6. ПРЕДЛОЖЕНИЯ КЛАССОВ

(b)Является метапеременной.

(c)Содержит метафунктор в качестве предикатного символа.

2.Если следом за выбранным предложением в рассматриваемом мире расположены ещё не исследованные предложения, в исполняемом процессе создаётся новая точка выбора, обозначающая поиск иных предложений, соответствующих условиям пункта 1.

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

4.Исполнение построенного предложения.

При этом исполнение вызовов предикатов различных типов осуществляется в соответствии со следующими дополнительными правилами и исключениями:

1.Если значением целевого параметра в дальнем вызове предиката является спейсер #, исполнение подцели заканчивается успехом (без какого-либо связывания переменных).

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

3.Исполнение дальних вызовов предикатов с инфиксами «<<» и «<−» всегда заканчивается успехом и заключается в подготовке соответствующих прямых сообщений, передача которых откладывается до (успешного) завершения рассматриваемой фазы исполнения процесса. Инфикс «<<» обозначает информационные прямые сообщения, а инфикс «<−» — переключающие прямые сообщения.

6.3. СТРАТЕГИЯ УПРАВЛЕНИЯ

63

4.Исполнение дальних вызовов предикатов, не имеющих инфикса «<<» или «<−», в мирах, не принадлежащих процессу, в котором исполняется рассматриваемое предложение, невозможно и заканчивается неудачей.

5.Исполнение акторных вызовов предикатов осуществляется в соответствии с общей схемой, но при этом дополнительным необходимым условием успешного завершения доказательства любого актора P процесса G является существование производных значений общих переменных процесса G. Для того чтобы обеспечить существование требуемых производных значений, в момент (успешного) завершения

доказательства предиката P осуществляется согласование акторов процесса G. Доказательство актора P считается успешным в том и только в том случае, если завершаются успехом исполнение соответствующего предиката, а также последующее согласование акторов, в противном случае происходит откат.

6.Если атомарная формула исполняемого вызова предиката в составе метапредложения является метапеременной, данная подцель считается вызовом функции, если (и только если) рассматриваемое метапредложение поставлено в соответствие вызову функции.

7.Действия, осуществляемые при исполнении предопределённых предикатов и встроенных управляющих операторов рассмотрены в главе 8.

Подцели копии предложения, построенной во время исполнения предиката, называются «подцелями доказательства».

Ссылки: актор 7.1, акторный вызов 6.2, атом 6.1, атрибут 4.1.1, встроенный оператор 8, вызов предиката 6.2, вызов функции 6.2.1, дальний вызов 6.2, данные 3, заголовок предложения 6, значение слота 5.1, значение терма 3, инфикс подцели 6.2, информационные сообщения 7.4.1, исполнение предложения 6.3.2, исполнение процесса 5.2, метапеременная 3, метапредложение 6, метафунктор 3, мир 5.1, общие переменные 7.2, объявление функции 6.1.3, откат 6.3.4, передача сообщения 7.4, переключающие сообщения 7.4.1, переменная 2.1.1, подцель предложения 6.2, предложение 6, предопределённый предикат 8, производные значения 7.2, процесс 5.2, прямые сообщения 7.4.2, связывание 3.3, согласование акторов 7.3, спейсер 3.1, фаза 5.2, функция 6.1.3, целевой параметр 4.1.3.

64

Глава 6. ПРЕДЛОЖЕНИЯ КЛАССОВ

6.3.2Исполнение предложения

Будем говорить, что переменная или слот имеют «задерживающее» («отключающее») значение, если они несвязаны или их значение равно спейсеру #.

Задержанными подцелями называются подцели доказательства, исполнение которых было отложено механизмом задержки исполнения подцелей. Списком задержанных подцелей называется вспомогательный список подцелей доказательства, используемый механизмом задержки исполнения подцелей.

Исполнение предложения включает:

1.Унификацию функтора и аргументов исполняемого вызова предиката с функтором и аргументами заголовка предложения или унификацию вызова предиката с метапеременной (если заголовком предложения является метапеременная). В случае если заголовок предложения является объявлением функции, а исполняемый вызов предиката не является вызовом функции, перед унификацией в начало списка аргументов исполняемого вызова добавляется фиктивный аргумент

анонимная переменная « ».

2.Пересмотр списка задержанных подцелей, осуществляемый механизмом задержки исполнения подцелей.

3.Исполнение соответствующих подцелей доказательства. При этом подцели доказательства, целевые параметры которых имеют задерживающие значения, пропускаются и добавляются в список задержанных подцелей.

Исполнение предложения заканчивается успехом тогда и только тогда, когда успехом заканчиваются все три названные операции.

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