6.3.1. ИСПОЛНЕНИЕ ВЫЗОВА ПРЕДИКАТА
Общая схема исполнения вызова предиката (исполнения предиката) включает следующие действия:
- Выбор предложения, заголовок которого:
- Если следом за выбранным предложением в рассматриваемом мире расположены ещё не исследованные предложения, в исполняемом процессе создаётся новая точка выбора, обозначающая поиск иных предложений, соответствующих условиям пункта 1.
- Построение копии предложения, отличающейся от выбранного предложения тем, что все его переменные заменяются новыми уникальными именами, а все атрибуты заменяются значениями слотов мира, которому принадлежит предложение.
- Исполнение построенного предложения.
При этом исполнение вызовов предикатов различных типов осуществляется в соответствии со следующими дополнительными правилами и исключениями:
- Если значением целевого параметра в дальнем вызове предиката является спейсер #, исполнение подцели заканчивается успехом (без какого-либо связывания переменных).
- Если значением целевого параметра в дальнем вызове предиката является элемент данных, исполнение подцели осуществляется непосредственно в том мире, в котором исполняется рассматриваемое предложение. При этом целевой параметр добавляется в исполняемый предикат в качестве дополнительного аргумента перед другими аргументам предиката, но после аргумента, обозначающего возвращаемое значение функции (в случае если исполняемая подцель является вызовом функции).
- Исполнение дальних вызовов предикатов с инфиксами "<<" и "<-" всегда заканчивается успехом и заключается в подготовке соответствующих прямых сообщений, передача которых откладывается до (успешного) завершения рассматриваемой фазы исполнения процесса. Инфикс "<<" обозначает информационные прямые сообщения, а инфикс "<-" - переключающие прямые сообщения.
- Исполнение дальних вызовов предикатов, не имеющих инфикса "<<" или "<-", в мирах, не принадлежащих процессу, в котором исполняется рассматриваемое предложение, невозможно и заканчивается неудачей.
- Исполнение акторных вызовов предикатов осуществляется в соответствии с общей схемой, но при этом дополнительным необходимым условием успешного завершения доказательства любого актора P процесса G является существование производных значений общих переменных процесса G. Для того чтобы обеспечить существование требуемых производных значений, в момент (успешного) завершения доказательства предиката P осуществляется согласование акторов процесса G. Доказательство актора P считается успешным в том и только в том случае, если завершаются успехом исполнение соответствующего предиката, а также последующее согласование акторов, в противном случае происходит откат.
- Если атомарная формула исполняемого вызова предиката в составе метапредложения является метапеременной, данная подцель считается вызовом функции, если (и только если) рассматриваемое метапредложение поставлено в соответствие вызову функции.
- Действия, осуществляемые при исполнении предопределённых предикатов и встроенных управляющих операторов рассмотрены в главе 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.
Следующий:
6.3.2. ИСПОЛНЕНИЕ ПРЕДЛОЖЕНИЯ
Предыдущий:
6.3. СТРАТЕГИЯ УПРАВЛЕНИЯ
6.3. СТРАТЕГИЯ УПРАВЛЕНИЯ
КОРНЕВАЯ СТРАНИЦА
ОГЛАВЛЕНИЕ
СПИСОК ПОНЯТИЙ ЯЗЫКА (ИНДЕКС)