ИНФОРМАТИКА, ВЫЧИСЛИТЕЛЬНАЯ ТЕХНИКА И УПРАВЛЕНИЕ
УДК 681.324
С. А. Зинкин
СЕТИ АБСТРАКТНЫХ МАШИН ВЫСШИХ ПОРЯДКОВ В ПРОЕКТИРОВАНИИ СИСТЕМ И СЕТЕЙ ХРАНЕНИЯ И ОБРАБОТКИ ДАННЫХ (МЕХАНИЗМЫ ИНТЕРПРЕТАЦИИ И ВАРИАНТЫ ИСПОЛЬЗОВАНИЯ)
Предложен логико-алгебраический подход к определению операционной семантики распределенных систем хранения и обработки данных, основанный на описании данных систем сетями абстрактных машин, при определении которых используется логика предикатов высших порядков. Предлагаемые модели и методы служат цели создания новой объектно-ориентированной сетевой технологии построения распределенных систем хранения и обработки данных на основе согласованных взаимодействий объектов через общее пространство - коммуникационную среду или общее пространство информационных объектов, а также сетевых, в том числе метакомпьютерных приложений для систем хранения и обработки данных на основе непосредственной интерпретации формальных спецификаций.
Введение
Общая методология проектирования, предлагаемая в настоящей работе, основана на использовании новых парадигм сетевых информационных технологий и моделей согласования и координации объектов и процессов через общее пространство функций и предикатов. В процессе проектирования используются логико-алгебраические модели систем распределенной и параллельной обработки информации. В разработанных моделях используется логический язык многосортного исчисления предикатов первой и высших ступеней, представляющий декларативные знания о предметной области. Сигнатура при этом должна задавать структурные связи между понятиями предметной области, представленные предикатами и функциями. Логические связи должны задаваться формулами, которые записываются в сигнатуре. Необходимо также формально представить знания о процессах хранения и обработки структурированных данных в распределенных системах. В отличие от обычных логических моделей искусственного интеллекта, используется представление процедурных знаний на основе аппарата алгебр операторов и условий с расширенной темпоральными операциями сигнатурой операций.
Разработанные формальные методы предлагается использовать в качестве основы для новой объектно-ориентированной сетевой технологии построения распределенных систем хранения и обработки данных на основе согласованных взаимодействий объектов; в том числе на этой основе воз-
можно создание сетевой операционной среды, адекватной решаемой задаче, т.е. сетевому приложению.
Ранее в работе [1] автором предложен базовый формализм - сети абстрактных машин высших порядков, берущих свое начало от машин Колмого-рова-Успенского-Шёнхаге и Гуревича. При определении формализма использованы некоторые элементы алгебры алгоритмов Глушкова, отмеченные в [1]. Рассмотрим механизмы интерпретации данных машин с целью их использования при проектировании систем и сетей хранения и обработки данных.
Механизмы интерпретации сетей абстрактных машин
При использовании в правилах вывода операторов V и V!! возникает проблема согласования элементарных обновлений интерпретации сигнатуры Е . Рассмотрим следующее правило вывода:
('Vхе X, у е У)д(х, у), (Vг е г, г е Т)г(г, г)
/ (х, у, г )<-—— г
Пусть, например, в результате выполнения квантифицированных операторов выбора, или вычисления термов, получены два отношения:
{< Х1, У2 >, < Х3, У4 >} и {< 12, гз >, < 12, г4 >}.
После выполнения операции декартова произведения будет сформировано следующее отношение:
{< Х1, У2,12, гз >, < Х1, У2,12, г4 >, < хз, У4,12, гз >, < хз, У4,12, г4 >},
а затем выполнятся 4 обновления тернарной функции /:
/(x1, У2, г2) ^ г3, f (х1, У2, ъ£) ^ г4,
/(x3, У4, г2) ^ ^,
/(x3, У4, г2) ^ г4.
Последние обновления соответствуют случаю, когда в модуле СеАМ или РСеАМ при реализации правила (1) должен быть выполнен следующий блок:
В = {/ (х1, У2, г2) ^ гз, / (х1, У2, г2) ^ г4,
/ (Хз, У4, ^) ^ гз, / (хз, У4, ^) ^ г4},
где запятая, разделяющая элементарные обновления функции, соответствует символу темпоральной операции «|» (выполнить «возможно одновременно», в произвольно выбранном порядке). Далее необходимо реализовать конкретные механизмы выполнения элементарных обновлений в блоке В некоторого модуля СеАМ или РСеАМ.
Механизм реализации предполагает интерпретацию модуля (узла СеАМ или РСеАМ) специальным агентом-сервером. Этот агент вначале вычисляет а-выражения (условия), выполняя при этом проверку значений атомарных формул и реализуя квантифицированные операторы выбора. К моменту выполнения некоторого блока значения всех предметных переменных, используемых в записях выражений данного блока, должны быть вычислены. Затем
з8
агент выполняет модификацию (обновление) информационных объектов, представляющих функции и предикаты в некотором FS-пространстве (FS - Function Spaces). FS-пространство - это абстрактная структура данных, определенная функционально, посредством выполняемых над ней операций. Элементы FS-технологии подробно описаны в работах [2-5]. Особенностью предлагаемой технологии (FS-технологии) является то, что при необходимости несколько агентов могут интерпретировать один и тот же модуль, разделяя его локальную сигнатуру Zm с Z, проверяя в параллельно-конвейерном режиме a-выражения и в конечном итоге выполняя обновления функций и предикатов в блоках. Продолжим рассмотрение выполнения правила (1). Каждый информационный объект в один и тот же момент времени может модифицироваться только одним агентом, поэтому рассматриваемый нами блок B реализуется одним агентом, который в произвольном порядке выполняет элементарные обновления блока. Так, если после выполнения обновления f (xi, y2, ^2) ^ h агент выполнит обновление f (xi, y2, Z2) ^ t4, то после выхода агента из блока B сохранится, естественно, результат последнего обновления, а результат предыдущего обновления аннулируется. Таким образом, поскольку в явной форме не был указан порядок выполнения обновлений в блоке B, результаты работы блока и, следовательно, модуля в целом даже при одинаковых исходных условиях могут различаться. Поэтому необходимо заранее провести анализ, устраивает ли разработчика распределенного приложения результат работы модуля.
Согласованными, например, следует считать обновления различных функций, которые могут быть реализованы различными агентами. Например, блок Q элементарных согласованных обновлений трех различных унарных функций
может быть реализован тремя агентами (например, исходным агентом и двумя его копиями), причем временные интервалы работы данных агентов могут пересекаться в случае, если для исполнения агентов могут быть выделены три отдельных (физических) вычислительных узла.
Рассмотрим еще один пример выполнения согласованных обновлений функций и правил вывода. Пусть, например, некоторый запрос a1 к распределенной реплицированной базе данных требует для своего выполнения ресурсов всех четырех серверов баз данных. На каждом сервере размещена соответствующая копия базы данных. Далее допустим, что для доступа к каждому серверу необходимо иметь право доступа, или так называемый «жетон». Для учета занятости жетонов используется унарный предикат p: T ^ {true, false}, где T - множество жетонов. Для фиксации того факта, что для запросов выделены ресурсы, будем использовать бинарный предикат q: AX T ^ {true, false}, где A - множество запросов. Введем также унарный предикат g : A ^ {true, false}, определяющий готовность запроса к исполнению. Запишем выражение для модуля m, реализующего выделение четырех единиц ресурса для выполнения запроса:
Q = {qi(xi) ^ yi, q2(xi) ^ У2, q3(X2) ^ У4}
m = [(g(ai)]([(V!!tє T)p(t)]({q(ab t)<-----true, p(t)f
false,
(2)
В процессе выполнения данного модуля в соответствии с выражением (2) осуществляется проверка наличия запроса ai (проверяется, истинно ли
высказывание g(ai)), затем вычисляется терм (V!!tе T)p(t). В случае, если истинно высказывание (Vt е T)p(t), что означает доступность всех единиц ресурса, далее выполняются правила обновления предикатов:
* *
q(ai, t) <-true, p(t) <-true и g (ai) ^ false.
*
Оператор <------ реализует необходимые обновления предикатов, при-
чем в блоке модуля m выполняются следующие элементарные обновления:
{q(ai, ti) ^ true, q(ai, tj) ^ true, q(ai, t3) ^ true, q(ai, t4) ^ true, p(ti) ^ false, p(t2) ^ false, p(t^ ) ^ false, p(t4) ^ false, g(ai) ^ false}.
К терму (V !!t е T)p(t) применен оператор «подчеркивание» по умолчанию. Напомним, что данный оператор ставит в соответствие оператору V!! высказывание, истинное в том случае, если выполнение данного оператора успешно завершено. Символ «_» подчеркивания в a-выражениях модулей мы будем опускать, если a-выражение является единственным выражением в
*
квадратных скобках; будем также опускать и звездочку в операторе <----------- в
тех случаях, когда это не вызывает недоразумений.
В приведенном выше примере локальную сигнатуру модуля m образуют только предикаты. Заменим теперь предикат q функцией f : T ^ A и запишем новое выражение для модуля
m' = [g(ai)]([('V!!tе T)p(t)]
({f (t)<---ai, p(t)<----false, g(ai) ^ false} v RE) v RE). (3)
При условии истинности обоих проверяемых a-выражений в блоке модуля m выполняются следующие элементарные обновления:
{ f (ti) ^ ai, f (t2) ^ ai, f (t3) ^ ai, f (t4) ^ ai, p(ti) ^ false, p(t2) ^ false, p(t3) ^ false, p(t4) ^ false, g(ai) ^ false}.
Теперь уже функция f связывает каждый жетон с запросом к распределенной базе данных. Модифицируем поставленную выше задачу. В более общей постановке задачи клиенты распределенной базы данных формируют множество запросов. Модуль, описываемый представленным ниже выражением, реализует выбор запроса и «связывание» его с жетонами для последующего выполнения:
m" = [(i!xе A)g(x)]([(V!!tе T)p(t)]
({q(x, t)<-true, p(t)<------false, g(x) ^ false} v RE) v RE). (4)
Другой вариант записи модуля основан на использовании функции f для связывания значений предметных переменных x и t:
m" = [(i!xе A)g(x)]([('V!!tе T)p(t)]
({f (t)<--x, p(t)<--false, g(x) ^ false} v RE )v RE). (5)
Заметим, что a-выражения в каждом из выражений (2)-(5) не зависят друг от друга, поэтому порядок проверки условий в модулях можно изменять и данные модули могут быть описаны следующими эквивалентными выражениями:
m = [(g(ai) &(V!!tе T)p(t)]
(* * E \
{q(ai, t)<-true, p(t)<---false, g(ai) ^ false} v R ); (6)
m = [g(ai) &(V!!tе T)p(t)]
(* * 77 \
{f ( t) <-ai, p(t) <--false, g(ai) ^ false} v R ); (7)
m" = |^(i !xе A)g(x) & (V !!t е T)p(t)J
(* * E \
{q(x, t)<--true, p(t)<---false, g(x) ^ false} v R ); (8)
m" = [(i!xе A)g(x)&(V!!tе T)p(t)J
(* * 77 \
{f (t)<---x, p(t)<--false, g(x) ^ false} v R ). (9)
При физической реализации модулей (6)-(9) время выполнения модуля в реальной сетевой среде может в существенной степени зависеть от порядка проверки условий.
Сети СеАМ функционируют, переходя от одной интерпретации сигнатуры I(t) к другой - I(tj), (tj > t), начиная с какой-либо начальной интерпретации сигнатуры I(t0). Смена интерпретации соответствует модификации пространства функций и предикатов, или FS-пространства. Для инициирования сети должна быть выполнена серия обновлений некоторой стартовой функции fstart. Эти обновления выполняет стартовый агент as. Например, после выполнения серии обновлений/start(mi) ^ ai, /start(m2) ^ ai и/start(m3) ^ a2 агент-сервер ai сможет поочередно интерпретировать модули mi и m2, а агент-сервер a2 сможет интерпретировать модуль m3. Предполагается, что до начала стартового агента /^(mO = undef, /staгt(m2) = undefi и /start(m3) = undef, где undef - неопределенная константа. После выполнения указанных обновлений агенты-серверы ai и a2 будут интерпретировать специальным образом закодированные в виде команд некоторой виртуальной машины выражения для модулей, воспринимая эти команды как сценарии своей работы. В ряде случаев для повышения эффективности управления сетью абстрактных машин целесообразно осуществить декомпозицию функции fstart, разбив ее (горизонтально) на функции, число которых совпадает с числом модулей сети: /starti, fstart2 и /start3. Если теперь разместить информационные объекты, соответст-
вующие этим функциям, на различных физических узлах, то сеть из трех модулей начнет функционировать после того, как будут обновлены три различные стартовые функции: /^(mi) ^ ai, /^2^2) ^ ai и/^3^3) ^ a2. Пусть модули СеАМ mi, m2 и m3 будут размещены на физических узлах yi, y2 и y3 соответственно. Тогда агент-сервер ai будет интерпретировать модули mi и m2, поочередно перемещаясь между узлами yi и y2, а агент-сервер a3 будет постоянно находиться на узле у3 и интерпретировать модуль m3. Таким образом, агент-сервер ai должен обладать свойством мобильности. Возможно, такая организация управления работой сети окажется неэффективной, тогда целесообразнее организовать работу стационарных агентов-серверов, размещенных на тех же узлах, на которых размещены соответствующие модули.
Определение 1. Модули сетей СеАМ или РСеАМ эквивалентны, если они одинаковым образом модифицируют текущую интерпретацию одной и той же локальной сигнатуры Zm.
Последнее определение проиллюстрируем некоторыми примерами. Из представленного выше описания механизмов интерпретации следует, что для спецификации операционной семантики реализаций сетей абстрактных машин базового формализма из работы [i] недостаточно. Для полноты спецификации необходимо рассматривать и работу агентов-серверов, интерпретирующих выражения, которыми описываются модули СеАМ и РСеАМ. В этой связи рассмотрим работу некоторых модулей СеАМ и РСеАМ. Данные примеры будут также полезны для эквивалентных преобразований выражений для модулей СеАМ и РСеАМ.
Результат работы модуля СеАМ III рода
mi/ai = [(i !x е X )p(x)]({B; p(x) ^ false} v RE ai,
где дробной чертой отделено имя агента-сервера ai, интерпретирующего данное выражение, будет таким же, как и результат работы модуля того же рода:
m2/a2 = [(Vxе X)p(x)]({B; p(x)^—— false} v RE)yO^.
В обоих случаях предполагается, что в выражении B не выполняются действия, приводящие к изменению значений a-условий. Символы операции подчеркивания в обоих случаях могут быть опущены, т.к. подчеркнутые выражения - единственные в квадратных скобках.
Работа обоих модулей предполагает предварительную блокировку всех функций и предикатов, имена которых составляют одну и ту же локальную сигнатуру Zm. Под блокировкой функций и предикатов подразумевается, естественно, блокировка соответствующих информационных объектов, представляющих данные функции и предикаты в физической реализации FS-пространства. При работе модуля mi/ai происходит циклическое выполнение блока {B; p(x) ^ false} до тех пор, пока не станет пустой область истинности предиката p. Агент-сервер ai при этом многократно выполняет данный блок; на время выполнения цикла предикаты и функции с именами из локальной сигнатуры остаются заблокированными для других модулей.
Модуль m2/a2, работа которого завершается тем же результатом, выполняется иначе. Проверив a-условие (Vxе X)p(x), агент-сервер a2 одно-
временно «выберет» все значения предметной переменной x из области истинности предиката p, а затем выполнит множественные правила обновления
в блоке {B; p(x)— false}. Если агент-сервер a2 выберет не менее одного значения переменной x, то данный блок выполнится один раз. После выполнения множественного обновления p(x) <-----false логическое условие ста-
нет ложным, т.к. в области истинности предиката p не останется ни одного элемента, и работа модуля m2Ia2 завершится.
Двум описанным выше СеАМ-модулям эквивалентен следующий РСеАМ-модуль:
m3Ia3 =
-.((Зlxє X)p(x))
{B; p(x) ^ false} /a3 ,
построенный на основе операции a-итерации. Здесь блок {B; p(x) ^ false} выполняется циклически до тех пор, пока ложно условие !x е X )p(x)).
На основании приведенного выше описания сформулируем следующее уточненное определение модуля СеАМ или РСеАМ, дополнив тем самым определение 6.
Определение 2. Модулем в реализации сетей СеАМ или РСеАМ называется пара <m, a>, где m - СеАМ- или РСеАМ-выражение, a - интерпретирующий это выражение агент-сервер. В случае, когда несколько агентов-серверов ai, a2, ..., an интерпретируют одно и то же выражение m в параллельно-конвейерном режиме, модулем реализации сетей СеАМ или РСеАМ будем называть (п+^-арный кортеж < m, ai, a2, ..., an >, а кортеж < ai, a2, ..., an > назовем мультиагентом.
В дальнейшем чаще наличие агента-сервера, если это не противоречит контексту, будем только подразумевать, отождествляя для простоты модуль с интерпретируемым агентом выражением.
При анализе дискретных сетевых моделей широкого класса, как правило, полагается, что каждому состоянию FS-пространства соответствует вершина графа достижимых состояний (ГДС). Модификация текущей интерпретации I сигнатуры Z приводит к смене состояния. Графом достижимых состояний сетевой модели N (следуя, например, работе [6]) назовем ориентированный граф G = (X, U, R), где X - множество вершин, соответствующее (взаимно-однозначно) множеству достижимых состояний сетевой модели; U с XxX - множество дуг такое, что (xi, xj) е U, если состояние xj непосредственно достижимо из состояния xt; R: U——M - функция разметки дуг именами модулей такая, что R(xi, xj) = mk, если состояние xj непосредственно достижимо из состояния xi при выполнении модуля mk. Далее при необходимости производится автоматический или визуальный анализ свойств сетевой модели по графу G. Основой верификации сетевых моделей систем хранения и обработки данных может быть временная логика, в частности логика дерева вычислений (Computation Tree Logic, или, сокращенно, CTL). Вопросы верификации на базе временной логики достаточно полно представлены в отечественной и зарубежной литературе. Соответствующие методы и программные средства подробно описаны, например, в руководстве [6].
Декомпозиция сетей абстрактных машин
Сложные модули СеАМ удобно в ряде случаев представлять в виде совокупности простых модулей. Подобные представления часто используются при переходе к записям алгоритмов в виде систем продукций. Например, модуль
m0 = [a1]([a2](B1 v B2) v [a3](B3 v [a4](B4 v B5))) (10)
представим в виде совокупности M = {mi, m2, m3, m4, m5} модулей:
mi = [ai&a 2](Bi v RE), (11)
m2 = [ai&-a2](B2 v RE), (12)
m3 = [-ai&a3](B3 v Re), (13)
m4 = [-ai&-a3&a4](B4 v RE), (14)
m5 = [-ai&-a3&-a4](B5 v RE). (15)
В реальной сетевой среде, при наличии множества агентов-серверов, интерпретирующих многочисленные модули СеАМ, результаты работы исходного модуля и совокупности модулей могут различаться, т.к. различные, может быть и не входящие в совокупность M модули (ii)-(i5), могут изменять значения логических условий в различные моменты времени.
Подобное преобразование модуля СеАМ в общем случае не является эквивалентным, т.к. для интерпретации вновь полученных модулей, возможно, организуется новая распределенная операционная среда - физические узлы и агенты-серверы; в результате новые модули, возможно, будут иначе влиять на логику функционирования сети. Поясним сказанное на следующем примере. Представим модуль
mi = [a](ri, r2 v Re ) в виде совокупности двух модулей
mii = [a](ri v Re )
и
mi2 = [a](r2 v Re ),
которые могут выполняться «возможно одновременно», т.к. это было ранее предписано операцией «,» применяемой в блоке модуля mi (символ запятой в данном случае используется для простоты записи вместо символа темпоральной операции « | » - «выполнить возможно одновременно»). Однако режим выполнения модулей mii и mi2 может измениться. При реализации этих модулей в распределенной среде они конкурируют за право первоочередного вычисления и последующей проверки условия a, которое выступает в данном случае в роли неразделяемого ресурса. Выполняющееся затем правило обновления одного из модулей может так повлиять на условие a, что оно окажется ложным непосредственно до выполнения другого модуля. Кроме того,
условие а может стать ложным и в результате работы какого-либо третьего модуля. В результате одно из элементарных правил обновления не будет выполнено. Подобной проблемы не возникает для исходного модуля т1, поскольку к началу его выполнения специальный агент-сервер блокирует функции и предикаты с символами из локальной сигнатуры 2т1 данного модуля, и далее ничто не препятствует выполнению заранее согласованных обновлений г1 и г2. Это означает, что представление исходного модуля т1 в виде двух взаимодействующих модулей в общем случае нельзя назвать эквивалентным. Похожее явление наблюдается, например, и при декомпозиции модуля
т2 = [а]({71; г2} V ЯЕ),
и представлении его совокупностью двух выполняемых последовательно модулей
т21 = [а](г V ЯЕ)
и
т22 = [а](г 2 V ЯЕ), т.е. когда СеАМ-модуль т2 заменяется составным РСеАМ-модулем
т2 = (т21; т22) = (т^ Т т22),
где символ темпоральной операции «Т» для простоты может быть заменен символом «точка с запятой». Здесь возможна ситуация, когда после выполнения элементарного обновления г1 условие а станет ложным и модуль т12 не сможет выполниться. В распределенной среде его выполнение возможно спустя какое-то время, например, после того, как некоторый другой модуль изменит значение логического условия а на истинное.
Данная ситуация характерна и для многих других классов распределенных вычислительных систем, в которых реализуется система взаимодействующих алгоритмических модулей. Результат проведенной декомпозиции должен быть тщательно проанализирован разработчиком распределенной системы на предмет ее приемлемости и целесообразности с точки зрения правильного и эффективного решения системой общей задачи. Полученная в результате декомпозиции система может оказаться не эквивалентной исходной, но ее структура и результат функционирования могут удовлетворять потребителя.
Применение логики высших порядков к построению сетей абстрактных машин
Выше было отмечено, что в логиках высшего порядка допускается использование предикатных и функциональных переменных и кванторов по этим переменным. Здесь наряду с предметными константами и переменными определенных сортов (типов) используются функциональные и реляционные константы и переменные с определенной сигнатурой. Дополним приведенное ранее описание введенных нами СеАМ высших порядков конкретными примерами.
В работе [7] указывается, что преимуществами логики второго порядка со стандартной семантикой являются ясность и соответствие интуиции, а ее выразительные возможности в качестве оснований математики намного богаче выразительных возможностей логики первого порядка. Не случайно в «Рппс1р1а МаШешайса» Рассел и Уайтхед в основания математики положили логику второго и высшего порядков, а Гильберт и Аккерман в работе «Основы математической логики» дали четкое разделение ролей языка первого порядка и языков высших порядков. В этой же работе отмечается, что значительное число математических концепций, например таких, как математическая индукция, упорядочение, конечность, кардинальность и др., не могут быть выражены на языке первого порядка, но все эти понятия выразимы на языке второго порядка. В другой работе [8] отмечается, что вся теоретикомножественная проблематика может быть сформулирована во второпорядковых терминах. В работе [9] рассматривается многосортная первопорядковая логика в качестве переинтерпретации второпорядковой логики и логики высших порядков, что позволяет сделать вывод о перспективности использования многосортных логик различных порядков в качестве основы языка для определения абстрактных машин.
В выражениях для модулей СеАМ и РСеАМ (модуль в данном контексте можно назвать «локальным модификатором» интерпретации сигнатуры многоосновной алгебраической системы) важную роль играют предикаты сравнения, в том числе предикат равенства. Рассмотрим в качестве примеров выражения для модулей СеАМ и РСеАМ второго порядка, поясняющие специфику реализации квантифицированных операторов выбора 3! и V. Модуль СеАМ е1 заменяет значения функций на неопределенные в случае равенства их значений:
Здесь унарные предикаты pi и р2 выполняют роль характеристических функций множеств X и Y, по которым пробегают предметные переменные x и у соответственно, а функциональные переменные ф и у пробегают соответственно по множествам функций Ф и Т. В процессе выполнения модуля ei вначале первый оператор V формирует декартово произведение множеств X и Y. Затем второй оператор V выбирает все такие пары значений функциональных переменных ф и у, для которых ф(х) = у (у). Далее в единственном блоке модуля ei (выражение в фигурных скобках) выполняются множественные обновления выбранных функций. Унарный предикат q используется для того, чтобы блок модуля ei выполнился один раз. Оператор «_» («подчеркивание») ставит в соответствие выражению над чертой булеву переменную, принимающую значение true в случае, если оператор выполнен успешно.
Механизм пошаговой реализации квантифицированного оператора выбора V скрыт. Раскроем действие этого механизма на примере двух следую-
ei = q(ap)&(Vx е X, у е Y) (pi(x)&p2(y))
([('Vфе Ф, уе Т)p(x) = у(у))]
* E \ E
{ф(х)<----------undef, у(у)<-----------undef, q(ag) ^ false} v R ) v R
щих модулей. Модуль e2 выполняет такую же локальную модификацию интерпретации сигнатуры, что и модуль ei:
e2 = [(3!xе X, уе Y)(pi(x)&p2(у))]([(3!фе Ф, уе Т)p(x) = у(у))]
|{ф(х) <— undef, у(у) ^ undef, pi(x) ^ false, Р2(у) ^ false} v RE ) v RE).
Для того чтобы выполнение модуля e2 было эквивалентно выполнению модуля ei, модуль e2 должен выполняться многократно, пока не будет завершен перебор всех пар значений предметных переменных x и у. Многократное выполнение модуля e2 обеспечивается некоторым агентом-сервером, который «рассматривает» выражение для данного модуля как описание сценария своих действий. Выполняя первый из операторов 3!, агент-сервер выбирает очередную пару значений предметных переменных x и у. При этом он проверяет истинность конъюнкции p1(x)&p2(y). Далее при выполнении второго оператора 3! агент-сервер выбирает одну пару значений функциональных переменных ф и у, такую, что ф^) = у(у). В случае успешного выполнения обоих операторов выбора агент-сервер выполнит по одному обновлению функций, имена которых являются выбранными значениями функциональных переменных ф и у, а также по одному обновлению унарных предикатов pi и p2 (характеристических функций множеств X и Y соответственно). В результате двух последних обновлений выбранная ранее пара значений предметных переменных x и у исключается из дальнейшего рассмотрения, а агент-сервер снова переходит к проверке условий применимости квантифицированных операторов выбора. Неявно заданный подобным образом цикл повторяется до тех пор, пока не будет завершено рассмотрение последней пары значений предметных переменных x и у. Таким образом, обеспечивается совпадение результатов работы модулей ei и e2.
В ряде случаев может оказаться удобным использование расширенного варианта формализма РСеАМ, в котором более явно представлена процедурная компонента представления знаний о предметной области. Например, функцию СеАМ-модуля e2 может выполнить следующий РСеАМ-модуль:
e3 = -(3 !x е X, у е Y) {pi(x)&p2(y)) {[(3 !феФ, уеТ) p(x) = у(у))]
^(x) ^ undef, у(у) ^ undef v RE), pi(x) ^ false, Р2(y) ^ false}.
Здесь цикличность выполнения действий задана а -итерацией, причем в качестве а -условия используется следующее выражение:
-(3!xе X, уе Y)(pi(x)&p2(y)).
Выражения, которыми описывается функционирование модулей абстрактных машин, удобны для преобразований и непосредственной интерпретации и могут быть использованы в качестве основы для реализации языка непосредственно интерпретируемых спецификаций.
Приведенные примеры показывают, что использование многосортных логик и логик высших порядков позволяет плодотворным образом сочетать как декларативные, так и процедурные подходы к построению логико-алгебраических моделей распределенных систем хранения и обработки данных.
Особенности выполнения правил обновления текущей интерпретации сигнатуры
Рассмотрим следующее правило вывода:
(3!хе X)р(х), (3!у е У)д(у), (3!ге г)г(г)
/((3!хе X)р(х), (3!у е У)#(у)) ^ (3!г е 2)г(г).
(i6)
Это правило содержит термы, построенные на основе квантифицированных операторов выбора. Вывод в данном случае реализуется до конца лишь в том случае, если все операторы 3! выполнились успешно. Если в выражении для модуля СеАМ или РСеАМ хотя бы один из используемых в правиле (i6) термов принимает значение undef, то вывод не может быть завершен. В принятой интерпретации формализмов СеАМ и РСеАМ данный факт соответствует случаю, когда значением выражения, описывающего модуль, является тождественное (пустое) обновление RE интерпретации сигнатуры Z .
Допустим, что вычислены все термы в правиле (i6):
(3!xе X)p(x) = x', (3!у е Y)q(у) = у', (3!z е Z)r(z) = z,
тогда в блоке соответствующего модуля далее будет выполнено обновление функции f:
f (x , у') ^ z'.
Аналогично выполняется вывод и в случае применения оператора 3!!.
Рассмотрим далее случаи, когда в правилах вывода используются термы, построенные на основе операторов V и V!!. Результатом вычисления подобного терма является не константа или кортеж, а отношение, выбираемое из области истинности соответствующего предиката.
Пусть при работе некоторого модуля СеАМ или РСеАМ должно быть реализовано следующее правило вывода:
(3 !xе X, у е Y)q(x, у), ('Vz е Z, t е T)r(z, t) p(x, у, z, t)<-—— true
где q, r - бинарные, а p - 4-арный предикатные символы. В данном случае результатом вычисления терма (3 !x е X, у е Y)p(x, у) должен быть кортеж (например, < x , у > ), а результатом вычисления терма (Vzе Z, t е T)r(z, t) -некоторое отношение, или множество кортежей (например {< z', t' >, < z", t" >}). В процессе выполнения правила вывода (9) после вычисления термов реализуется операция декартова произведения результирующих отношений:
{< x , у > }X{< z', t' >, < z" , f > } = {< x', у', z', t' >, < x , у', z", t" > }.
Предварительно кортеж < x , у > - результат вычисления первого терма, преобразуется в одноэлементное множество с помощью функции /singleton ( < x , у > ) = { < x , у > }.
*
Далее выполняется правило p(x, у, z, t) <-----true обновления 4-арного
предиката p. Звездочка, поставленная на стрелке, означает, что должно быть выполнено несколько согласованных элементарных обновлений предиката p:
p(x', у', z , t') ^ true, p(x', у', z", t"') ^ true,
и на этом вывод завершается.
Выводы
1. Предложены методы интерпретации сетей абстрактных машин высших порядков со структурированной памятью. Данные сети при их применении в качестве базового формализма в существенной степени расширяют возможности общей методологии проектирования распределенных систем согласования и координации процессов и объектов, основанной на использовании новых парадигм сетевых информационных технологий.
2. Предлагаемые модели и методы могут быть использованы в качестве основы при создании новой объектно-ориентированной сетевой технологии проектирования распределенных систем хранения и обработки данных на основе согласованных взаимодействий объектов через общее пространство - коммуникационную среду или общее пространство информационных объектов.
3. Сети абстрактных машин высших порядков в качестве объектов непосредственной интерпретации особенно удобны при создании такого сетевого программного обеспечения реконфигурируемых систем хранения и обработки структурированных данных, в котором стираются грани между сетевой операционной системой, распределенной системой управления базой данных и распределенным приложением.
Список литературы
1. Зинкин, С. А. Сети абстрактных машин высших порядков в проектировании систем и сетей хранения и обработки данных (базовый формализм и его расширения) / С.А. Зинкин // Известия высших учебных заведений. Поволжский регион. Технические науки. - 2007. - № 3. - С. i3-22.
2. Zinkin, S. A. Distributed evolving algebras meet Java aglets: executable specifications of virtual mobile metacomputing on the Internet platform / S. A. Zinkin // New Information Technologies and Systems: Proceedings of the Third International Conference of Science and Technology. - i998. - P. 50-52.
3. Зинкин, С. А. Концептуальная схема реализации сетевой информационной технологии FUNCTION SPACES / С. А. Зинкин // Новые информационные технологии и системы : материалы VI Международной научно-технической конференции. - Пенза : Изд-во Пенз. гос. ун-та, 2004. - С. 208-2i7.
4. Зинкин, С. А. Алгебраические методы спецификации операционной семантики сетей хранения и обработки данных с изменяемой топологией / С. А. Зинкин // Актуальные проблемы науки и образования : труды Международного юбилейного симпозиума. - Пенза : Информационно-издательский центр ПГУ, 2003. - 2 т. -С. 409-4i8.
5. Зинкин, С. А. Интеграция сетевых и информационных технологий на основе парадигм искусственного интеллекта / С. А. Зинкин // Новые информационные технологии и системы : материалы VII Международной научно-технической конференции. - Пенза : Изд-во Пенз. гос. ун-та, 2006. - С. i08-ii7.
6. Дубинин, В. Н. Языки логического программирования в проектировании вычислительных систем и сетей / В. Н. Дубинин, С. А. Зинкин. - Пенза : Изд-во Пенз. гос. ун-та, i997. - 88 с.
7. Целищев, В. В. Язык математики и цели математического дискурса / В. В. Целищев // Философия науки. - 2003. - № i (i6). - С. i8-45.
8. Карпенко, А. С. Логика на рубеже тысячелетий / А. С. Карпенко // Logical Studies (online journal). - 2000. - № 5. - P. i-50.
9. Manzano, M. Extentions of first order logic. Cambridge tracts in theoretical computer science / M. Manzano. - Cambridge : Cambridge University Press, i996. - 4i0 p.