Разрешимость проблемы эквивалентных преобразований в классе примитивных схем программ
А. Э. Молчанов <[email protected]> МГУВМК, 119333 Москва, Ленинские Горы, 1с52
Аннотация. В статье рассматриваются алгебраические модели программ с процедурами. Для специфического класса моделей, связанного с изученным классом моделей программ без процедур, строится полная система эквивалентных преобразований, позволяющая проводить структурный анализ формализованных программ.
Ключевые слова: алгебраические модели программ с процедурами; система эквивалентных преобразований; уравновешенная модель программ с левым сокращением.
1. Введение
Статья относится к теории алгебраических моделей программ, предназначенной для разработки эквивалентных преобразований программ на создаваемых для них схемах программ, и обобщает результат, полученный в [1].
Концепции, на основе которых строится теория, подробно изложены в [2]. Коротко перечислим их.
Программы берутся изначально формализованными. Схема программы по своей структуре совпадает с программой, для которой она создаётся. Отсюда всякое преобразование схемы одновременно является и преобразованием самой программы.
Моделью называется множество схем, построенных над некоторым базисом операторов, с введённым в нем отношением эквивалентности схем. Последнее вводится параметрически, что приводит к иерархии моделей. В теории рассматриваются только аппроксимирующие модели, т.е. такие, каждая из которых обладает свойством: из эквивалентности схем в модели следует эквивалентность программ, принадлежащих некоторому их классу, и совпадающих по структуре со схемами. В [2] описаны условия, налагаемые на параметры модели, при выполнении которых она является аппроксимирующей.
Обратимся теперь к вопросу о том, какое место в теории алгебраических моделей программ занимает рассматриваемая в статье задача. Изучаемые модели подразделяются на модели программ, не использующих процедур, и модели программ, использующих их. Первые называются простыми, вторыми они обобщаются. Ключевой является проблема эквивалентных преобразований (э.п.) схем в модели. Она состоит в поиске системы э.п. схем, обладающей свойством: какими бы ни были две эквивалентные схемы из этой модели, конечной цепочкой преобразований, принадлежащих системе, одна из схем алгоритмически транслируется в другую. Естественно, что исследование проблемы э.п. проводятся в моделях с разрешимой эквивалентностью схем.
Первоначально рассматривались простые модели, и для них получен богатый арсенал результатов как по проблеме эквивалентности в модели, так и по проблеме э.п. в модели. Возникла задача - использовать эти результаты в моделях программ с процедурами.
В этих целях в [3] среди последних выделены так называемые перегородчатые модели программ. Их характерной особенностью является то, что параметры такой модели индуцируются параметрами её простой подмодели. Существенно и то, что если простая подмодель - аппроксимирующая, то и индуцируемая ей модель тоже аппроксимирующая.
В [4] формулируется условие, когда проблема эквивалентности в перегородчатой модели сводится в её свободную подмодель; так называется множество принадлежащих модели схем, в которых нет бездействующих элементом (схемы этого множества называются свободными). Далее в [4] описан класс так называемых примитивных схем, принадлежащих свободной подмодели, и получен следующий результат: эквивалентность в этом классе разрешима, если она разрешима в индуцирующей его простой модели.
Рассматриваемая нами задача состоит в следующем: выбрав в качестве индуцирующей простую модель, называемую уравновешенной полугрупповой моделью программ с левым сокращением (она рассматривалась в [5]), решить проблему э.п. в классе примитивных схем программ. Отметим, что выбранная простая модель является аппроксимирующей, и в ней разрешимы проблема эквивалентности и проблема э.п.
В [1] требуемый результат получен для подкласса примитивных схем, обсуждающихся в данной статье. Это полностью определяет план её изложения.
В разделе 2 описывается общий вид алгебраической модели программ с процедурами и их частный случай - перегородчатые модели. Примитивные схемы программ определены в разделе 3. Здесь же формулируются факты, установленные для них в [4], и описываются свойства, присущие эквивалентным примитивным схемам.
Раздел 4 посвящен методу решения проблемы э.п. в алгебраических моделях программ - воспроизводится его изложение, данное в [1]. В разделе 5 даётся определение используемой нами уравновешенной полугрупповой модели программ с левым сокращением, формулируются полученные в [5] результаты и описываются свойства принадлежащих им эквивалентных схем.
Построение системы э.п., полной в классе примитивных схем, индуцируемых уравновешенными полугрупповыми моделями с левым сокращением, осуществляется в разделе 6. Описываются канонические формы примитивных схем и алгоритм, транслирующий эквивалентные примитивные схемы в каноническую форму. При изложении алгоритма выделяются э.п., входящие в полную систему. Они описываются содержательно со ссылкой на их формальное определение в [5].
2. Рассматриваемые алгебраические модели программ
2.1 Общего вида алгебраические модели программ с процедурами
Модели программ с процедурами строятся над четырьмя конечными и непересекающимися алфавитами Y, С, R и X. Элементы первых трёх алфавитов называются символами операторов, вызовов и возвратов соответственно, элементы алфавита X именуются наборами. Алфавиты Y,C,R,X называются базисом.
Элементы модели называются схемами программ.
Схема программы по своей структуре представляет размеченный конечный ориентированный граф следующего строения. Граф распадается на подграфы с непересекающимися множествами вершин. Один из подграфов называется главным, остальные - процедурными. В главном подграфе выделены вершина вход без входящих в неё дуг и вершина выход без исходящих из неё дуг. В любом процедурном подграфе тоже выделены две вершины - инициальная и финальная. В каяедом подграфе имеется специальная вершина loop без исходящих из неё дуг. Перечисленные вершины не имеют меток, а все остальные помечены символами из Y, С и R, называясь соответственно преобразователями, вызовами и возвратами. Всякому вызову соответствует свой персональный возврат, именуемый парным вызову; тот и другой принадлежат общему для них подграфу. Все вызовы перенумерованы. Из всякой вершины, отличной от выхода схемы, вызова, финальной и вершины loop, исходят дуги, каждая из которых помечена своим набором из X, в количестве, равном числу наборов в X. Из вызова исходит единственная дуга, которая ведёт в инициальную вершину некоторого подграфа (он называется ассоциированным с данным вызовом), и тогда из финальной вершины этого подграфа идёт дуга в парный вызову возврат, и это - единственная приходящая в него дуга. В инициальную вершину могут входить дуги только
из вызовов, а из финальной вершины могут исходить дуги только в возвраты. Так осуществляется связь между подграфами, ибо начало и конец дуги иного типа находятся в общем для них подграфе.
Рис. 1. Пример схемы программы
На рис. 1 приведён пример схемы программы. Здесь {у,, у2, у-л} с К, {с,, с2] с С, {^1.^2} £ = {ОД}. Схема содержит один процедурный подграф. Функционирование схемы осуществляется на функциях разметки. Функцией разметки называется отображение множества всех слов, построенных над У и С и Д (оно обозначается Я), в множество X. Множество всех функций разметки обозначается Ь.
Пусть ц 6 Ь. Выполнением схемы на функции ц называется процесс, состоящий в путешествии по схеме и сопровождающийся построением слова из Н: оно называется цепочкой.
Для однозначности выбора пути, кроме ¡л., используется магазин, в который загружаются номера вызовов в схеме. Путешествие начинается по дуге, исходящей из входа, при пустых магазине и цепочке. Переход через вершину с сопоставленным ей символом сопровождается приписыванием этого символа к текущей цепочке справа. Если переходимая вершина - вызов, то в магазин загружается его номер. При переходе через инициальную вершину и финальную вершину текущая цепочка не изменяется. Во втором случае из макушки магазина, который заведомо не пуст, извлекается номер, и путешествие продолжается по дуге, ведущей к возврату, парному вызову с этим номером. Из входа схемы путь идёт по дуге, помеченной набором /|(Л). где Л - пустая цепочка. При переходе через преобразователь, возврат, инициальную вершину тоже используется функция ц: в качестве следующей берётся дуга, несущая метку ¡л(К), где И - построенная к этому моменту
цепочка. При достижении выхода путешествие прекращается; говорим, что схема остановилась на ¡л, и построенную цепочку называем результатом её выполнения на /I. Альтернативным является случай бесконечного путешествия по схеме или случай попадания в вершину loop, когда путешествие прекращается без результата.
Пусть v - эквивалентность в множестве Н, и L Q L. Схемы С,, G2 назовём
V,L
(v, ^-эквивалентными (обозначим: С, ~ С2) тогда и только тогда, когда, какой бы ни была функция ц из L, всякий раз, как на ней останавливается с результатом одна из схем, останавливается с результатом и другая, и в этом случае результатами их выполнения являются v-эквивалентные цепочки. Множество всех схем над выбранным базисом, рассматриваемое вместе с (v,L)-эквивалентностью схем, называется (у,Ц)-моделъю, a v,L - её параметрами.
Схему из модели, не содержащую процедурных подграфов, назовём простой. Также простой именуем модель, построенную над базисом, в котором С и R пусты.
2.2 Перегородчатые модели программ
Определение перегородчатой модели программ в точности соответствует данному в [2].
Перегородчатая модель программ с процедурами представляет собой тот частный случай модели над базисом Y,C,R,X, в которой параметры v,L индуцируются параметрами т, I некоторой простой модели над Y, Р; последняя называется индуцирующей первую.
Эквивалентность v вводится следующим образом. Цепочки /?, и h2 из Н считаем v-эквивалентными в том и только том случае, когда совпадают их проекции на множество С U R, и, кроме того, если представить цепочки hL. i = 1,2, в виде
ht = hoib^bz... bkhki, k > 0,
где b1b2 ... bk есть общая проекция цепочек /? ,, h2 на множество С U R, то при всех j,j = 0,..., к, имеет место соотношение
Здесь т - эквивалентность цепочек gltg2 над алфавитом Y записывается в виде g±~g2-
Опишем, как строится множество L функций разметки.
Начнём с того, что задание отдельной функции разметки из L фактически сводится к разметке наборами из X вершин бесконечного дерева, в котором из всякой вершины исходят дуги в количестве, равном общему числу символов в алфавитах Y, С, R, причём каждая дуга помечена своим символом. Таким образом, всякой вершине дерева соответствует цепочка, полученная
выписыванием друг за другом символов, метящих дуги пути, идущего из корня дерева в данную вершину. Набор из X, сопоставленный этой вершине, воспринимается как значение функции разметки именно на этой цепочке, а разметка всех вершин дерева наборами из X определяет функцию разметки. Заметим теперь, что всякая вершина дерева является корнем его поддерева, все дуги которого помечены только символами из Y и всеми такими символами. Выделим поддеревья описанного типа, вырастающие из корня дерева или из вершины его, в которую ведёт дуга с меткой из С или R. Всякое выделенное поддерево разметим наборами из X так, чтобы это определило функцию разметки из I. По определению, выполненная разметка даёт функцию разметки из L, и иных функций в L нет. Итак, перегородчатая модель программ с параметрами v, L построена. Легко доказуемо следующее утверждение.
Утверждение 1 Перегородчатая модель программ является аппроксимирующей, если этим свойством обладает индуцирующая её простая модель.
Затронем проблему либеризации для перегородчатой модели программ. Схема из неё называется свободной, если в ней любая вершина, кроме loop, принадлежит реализуемому маршруту через схему.
Пусть G - схема из рассматриваемой модели. Маршрутом в G назовём ориентированный путь w, начинающийся во входе схемы и заканчивающийся в некоторой вершине. Если последняя - это выход схемы G, то w именуем
маршрутом через схему.
Маршрут в G назовём реализуемым, если в L существует функция разметки, которая его прокладывает при выполнении на ней схемы G. Проблема либеризации - поиск алгоритма, который, получив на свой вход схему из рассматриваемой модели, трансформирует её в эквивалентную ей свободную схему из той же модели. В [2] доказана
Теорема 1 Проблема либеризации разрешима в перегородчатой модели программ, если она разрешима в индуцирующей её простой модели. Перегородчатая модель называется специальной, если она индуцируется простой моделью с разрешимой проблемой либеризации. В [2] доказана
Теорема 2 В специальной перегородчатой модели программ разрешима проблема либеризации.
Назовём множество всех свободных схем в специальной перегородчатой модели программ её свободной подмоделью.
3. Примитивные схемы программ
Обозначим М свободную подмодель специальной перегородчатой модели над базисом Y, X, С, R ; М0- индуцирующую её простую модель с параметрами т, I. Пусть G - схема из М. Опорной в G назовём вершину типа вход, вызов, возврат, выход схемы. Преемником опорной вершины v. отличной от выхода, назовём опорную вершину и, достижимую из v ориентированным путём, который не содержит внутри опорных вершин. Отметим, что в силу свободности схемы G любая её опорная вершина имеет алгоритмически определяемые преемники.
Свободная схема из М называется примитивной, если преемники любой её опорной вершины не имеют повторяющихся меток. Легко увидеть, что класс примитивных схем из М является разрешимым, то есть всегда можно установить, принадлежит ему или нет схема из М. В [4] установлен факт, следствием которого является теорема 3, самостоятельно доказанная [1].
Теорема 3 Если в модели М0 разрешима проблема эквивалентности схем, то она разрешима в классе примитивных схем из М.
Опираясь на доказательство теоремы 3, приведённое в [1], опишем необходимые признаки эквивалентности примитивных схем. Пусть G - примитивная схема из М, v - опорная в ней вершина, и - преемник вершины v. Обозначим G(v,u) простую схему, построенную по следующим правилам. Сначала в ней оставляются все вершины, принадлежащие ориентированным путям из v в и. Если v - вход схемы G, то он объявляется входом создаваемой схемы, если и - выход схемы G, то он становится выходом создаваемой схемы. Если v - возврат, то он заменяется входом создаваемой схемы, если и - вызов, то он заменяется её выходом. Инициальную вершину всегда считаем входом создаваемой схемы, устраняя вызов v, из которого идёт дуга в данную инициальную вершину, а финальную - выходом, устраняя возврат и, в который из неё идёт дуга. Полагаем, что все оставленные преобразователи и наследуемые из G дуги сохраняют свои метки. Теперь введём в создаваемую схему вершину loop, если её там не было, устраним дуги, приходящие в оставленные вершины извне, а дуги, ведущие в вершины наружу, направим в вершину loop. Схема G(y,u) построена. Именуем её вырастающей из вершины v.
Маршруты в двух схемах из М назовём сочетаемыми, если они прокладываются при выполнении схем на общей и допустимой функции разметки. В эквивалентных примитивных схемах их опорные вершины назовём сочетаемыми, если ими оканчиваются сочетаемые маршруты, которые несут цепочки с равными проекциями на С U R. Несомая путём цепочка строится выписыванием друг за другом символов, метящих вершины этого пути при просмотре его от начала к концу. Отметим, что сочетаемые вершины, если помечены, то общим для них символом.
Пусть - сочетаемые вершины эквивалентных примитивных схем С,, С2 соответственно, и щ - преемник вершины у1 ,1 = 1,2. Если преемники имеют общую для них метку в случае, когда они отличны от выходов схем, то схемы С, (у±, щ ), С2 (у2,и2) называем сочетаемыми.
При доказательстве теоремы 3 установлен факт, формулируемый здесь как лемма 1.
Лемма 1 В эквивалентных примитивных схемах из модели М каждой опорной вершине в одной из них соответствует единственная сочетаемая с ней опорная вершина в другой, а вырастающие из них сочетаемые схемы эквивалентны.
Всякой опорной вершине V схемы из М сопоставим так называемую многовыходную схему 6(у), построенную над базисом V, X, О. где О -конечный алфавит, который будет описан ниже.
Многовыходная схема по своей конструкции отличается от простой схемы из М0 только тем, что в ней может быть больше одной вершины без исходящих из неё дуг и называемых ей выходами; при этом выходы помечаются символами из £> без повторений.
Такая схема выполняется на функции разметки, допустимой для М0, по тем же правилам, что и простая схема из М0. Если выполнение завершается в одном из выходов схемы, и только в этом случае, оно признаётся результативным, причём результатом объявляется цепочка, несомая проложенным маршрутом и завершаемая символом, сопоставленным достигнутого выхода. Эквивалентными, по определению, являются две схемы, удовлетворяющие требованию: какой бы ни была допустимая для М0 функция разметки, если выполнение на ней одной из схем результативно, то результативно и выполнение другой, и при этом результаты оканчиваются общим для них символом, а в остальном это т-эквивалентные цепочки.
Для опорной вершины V схемы из М сопоставляемая ей многовыходная схема строится объединением в один граф всех простых схем, вырастающих из V, сопровождаемая приписыванием выходу схемы метки преемника, для которого она построена; если же преемником является выход самой схемы из М, то в многовыходной схеме он помечается специальным символом у0. Таким образом, в качестве алфавита £> берётся сумма Си/?, дополняемая этим специальным символом. Будем говорить, что построенная многовыходная схема вырастает из V.
В [1] установлена справедливость утверждения 2
Утверждение 2 Какими бы ни были сочетаемые опорные вершины эквивалентных приведённых схем, вырастающие из них многовыходные схемы эквивалентны.
4. Методика решения проблемы э.п. в алгебраической модели программ
Для решения проблемы э.п. схем строится специального вида формальное исчисление, то есть описываются его элементы и вводятся действующие в нём правила вывода и аксиомы.
Здесь мы изложим концепции, которыми руководствуется такое построение, обобщая при этом результаты исследований, выполненных в [2] и [3]. Итак, пусть 5 - рассматриваемая алгебраическая модель программ или рассматриваемый класс принадлежащих ей схем программ, и в 5 разрешима проблема эквивалентности.
В самом начале построения формального исчисления для 5 независимо от типа выполняется следующее:
• вводится понятие фрагмента схемы, и фрагменты объявляются элементами создаваемого исчисления;
• определяется единственное в исчислении правило вывода, состоящее в допустимой подстановке во фрагмент вместо его подфрагмента некоторого другого фрагмента; при этом подстановка является обратимой операцией.
Далее используется отношение эквивалентности схем из 5 и, опираясь на него, выполняется следующее:
• определяется отношение эквивалентности фрагментов с классификацией на безусловную и условную эквивалентность;
• объявляется, что аксиомой исчисления может быть разрешимое множество пар эквивалентных фрагментов, причём состоящее либо из пар безусловно эквивалентных, либо из пар условно эквивалентных фрагментов;
• вводится конечное множество аксиом, и формальное исчисление считается построенным.
Отметим, когда оно служит решению проблемы э.п. в 5.
Применяя правило подстановки, каждой аксиоме сопоставляется множество э.п. схем, реализуемых её использованием; оно именуется индуцируемым аксиомой и является разрешимым. Таким образом, конечным числом аксиом в исчислении индуцируется в совокупности разрешимое множество э.п. схем. Если доказывается его полнота в 5, то в 5 решена проблема э.п. схем. Теперь - о поиске нужных для 5 аксиом. Он подчиняется стратегии, рекомендации которой состоят в следующем:
• ввести каноническую форму схем из 5, подчинив это требованию, чтобы каноническая форма была алгоритмически распознаваема и была единственной с точностью до изоморфизма в своём классе эквивалентных схем из 5;
• построить алгоритм, который, получив на свой вход две эквивалентные схемы из 5, трансформирует каждую в каноническую, применяя только эквивалентные преобразования их структуры;
• проанализировать этот алгоритм, переводя выполняемые им преобразования на язык фрагментных, и скомпоновать таким образом аксиомы.
Заметим, что анализ алгоритма сопровождает его построение. Если изложенные рекомендации реализованы, и получено конечное число аксиом, то в силу обратимости выполненных алгоритмом преобразований будет получено решение проблемы э.п. схем в 5.
Определения фрагмента, его вхождения в схему, согласованных фрагментов и подстановки фрагмента подробно представлены в [1]. Приведём здесь лишь содержательное описание.
Фрагментом называется часть схемы, для которой указана связь с остальной частью схемы.
Вхождение фрагмента F в схему С - это фрагмент схемы С, изоморфный Т7. Согласованность фрагментов обеспечивает корректную выполнимость правила подстановки вместо одного фрагмента согласованного с ним; корректность трактуется так: результатом подстановки является фрагмент, в частности, схема, если подставляемый фрагмент входил в неё. Описанная операция подстановки объявляется единственным правилом вывода в строящемся исчислении.
Согласованные фрагменты /71,/72 называются безусловно эквивалентными, если выполняется следующее: какой бы ни была схема из 5 и каким бы ни было вхождение в неё одного из фрагментов /71,/72, подстановка вместо этого вхождения другого фрагмента является эквивалентным в 5 преобразованием данной схемы. Условная эквивалентность этих фрагментов имеет место в том случае, когда существует алгоритм, определяющий допустимые вхождения подставляемого фрагмента.
В заключение отметим, что в разделе 6 данной статьи изучается решение проблемы э.п. в классе примитивных схем в случае, когда индуцирующая модель М0 - это уравновешенная полугрупповая модель программ с левым сокращением.
5. Уравновешенные полугрупповые модели программ с левым сокращением
Описывая эти модели, мы фактически даём аналитический обзор статьи [5]. Простая алгебраическая модель программ над базисом У, Р называется
уравновешенной полугрупповой моделью программ с левым сокращением, если её параметры т и I удовлетворяют следующим требованиям.
Эквивалентность т является полу групповой, то есть, какими бы ни были цепочки й1( к2,1г3, /?4 над У, выполняется импликация
(й1~/12)&(/1з~/14) =>
и обладающей левым сокращением, если для любых цепочек й1( /?2, /?4 над У выполняется импликация
Кроме того, эквивалентность т является уравновешенной, то есть т-эквивалентные цепочки равны по длине.
Множество / состоит из всех т-согласованных функций разметки. По-прежнему обозначаем М0 описанную модель программ. Легко доказуемо, что для модели М0 разрешима проблема либеризации. В [3] установлены факты, излагаемые ниже как теорема 4 и теорема 5.
Теорема 4 В модели М0 разрешима проблема эквивалентности схем. Теорема 5 В модели М0 разрешима проблема э.п. схем. Полагаем схемы в М0 свободными.
Остановимся на описании необходимых свойств эквивалентности схем из модели М0, формулируя их как утверждения 3-5
Утверждение 3 Равновеликие сочетаемые маршруты в эквивалентных схемах оканчиваются в вершинах общего типа.
Утверждение 4 Из сопряжённых и различно помеченных вершин эквивалентных схем вырастают кусты общего маркера. Пусть С - схема из М0, и V - преобразователь в ней. Кустом, произрастающим из V, называется фрагмент схемы С, состоящий из преобразователей, включая V, и удовлетворяющий следующим требованиям. Все вершины фрагмента распределены по уровням, на каяедом из которых находятся равноудалённые от V преобразователи, при этом, если к - число уровней, то дуги, исходящие из вершин, принадлежащих уровню I, I = ОД,..., к — 1, ведут в вершины I + 1-ого уровня; таким образом, из вершины V на к-ый уровень ведут простые ориентированные пути; требуется, чтобы все они несли эквивалентные цепочки. Класс эквивалентности этих цепочек называется маркером данного куста, а вершина V - его корнем. Здесь сопряжёнными в двух схемах называются преобразователи, в которых завершаются сочетаемые маршруты, несущие цепочки, которые являются т-эквивалентными по устранении из них последнего символа. Кусты, о которых говорится в утверждении 4, также называются сопряжёнными.
Утверждение 5 В эквивалентных схемах для любого набора х 6 X х-выходы сопряжённых кустов эквивалентны.
По определению, х-выходом куста в схеме называется вершина, в которую из последнего уровня куста ведёт дуга с меткой х; х 6 X. Введём отношение эквивалентности вершин в схеме из М0. Любой вершине v схемы G из М0 сопоставим простую и свободную схему G(v), построенную по следующим правилам. Берётся фрагмент схемы G, порожденный всеми её вершинами, достижимыми из v ориентированными путями. Среди них, в силу свободности схемы G, находится её выход, который будем считать выходом схемы G(v). Реконструируем этот фрагмент, внеся в него вершину loop, если её не было, затем устраним все входящие во фрагмент извне его дуги и направим в вершину loop все исходящие из него наружу дуги. В заключение добавим вершину, именуемую входом схемы G(v), отправив в вершину v все исходящие из неё дуги. Схема G (v) построена. Вершины v1: v2 схемы G из М0 назовём эквивалентными, если эквивалентны схемы Gtyi), G(v2).
Отметим, что доказательство теоремы 4 выполнимо проверкой утверждений 3-5 при просмотре пар сопряжённых вершин испытуемых схем.
6. Решение проблемы э.п. в классе примитивных схем, индуцированных моделью М0
Следуя методике, изложенной в разделе 4, определим каноническую схему в классе К примитивных схем, индуцированных моделью М0. Схему G из К назовём канонической, если выполнены условия:
• в G отсутствуют эквивалентные опорные вершины;
• какой бы ни была опорная вершина v схемы G, много выходная схема G(v) не содержит кустов и сильно эквивалентных вершин;
• для разных опорных вершин v±, v2 многовыходные схемы G(г^), G(v2) не имеют общих вершин, кроме опорных.
Определим используемые здесь понятия. Пусть G - схема из К. Опорной вершине v, являющейся вызовом, сопоставим схему VG(v). Эта схема строится следующим образом. Главный подграф G удаляется и заменяется на главный подграф следующего вида. Он содержит входную и выходную вершины, все дуги из входной вершины ведут в единственный вызов, который помечен тем же символом, что и v, и инцидентен тому же подграфу, что и v. Единственный возврат, принадлежащий главному подграфу, парен этому вызову, и все дуги из него ведут в выход. Других вершин в главном подграфе нет. В остальном схема VG(v) совпадает с G. Вершины-вызовы v±, v2 схемы G назовём эквивалентными, если эквивалентны схемы VG^), VG(v2).
Схемы С1( G2 из М0 назовём сильно эквивалентными, если они эквивалентны, и сочетаемые маршруты через них несут равные цепочки.
Вершины vt, v2 схемы G из М0 назовём сильно эквивалентными, если сильно эквивалентны схемы С (и ,), G (v2).
Лемма 2 Каноническая схема из К алгоритмически распознаваема и единственна с точностью до изоморфизма в своём классе эквивалентности. Proof. Очевидно, что в силу разрешимости отношений эквивалентности и сильной эквивалентности, свойства 1-2 канонической схемы алгоритмически распознаваемы.
Свойство 3 распознаваемо обходом графа схемы из каждой опорной вершины. Следовательно, каноническая форма является алгоритмически распознаваемой.
Пусть существует две канонические формы С1( G2, Gt~G2, не являющиеся изоморфными. Пусть в С, существует вершина v. не являющаяся опорной, которая не имеет сопряжённой в G2. В этом случае, в силу свободы схем, они не эквивалентны. Если вершина v схемы С, сопряжена более чем с одной вершиной G2, то эти вершины в G2 эквивалентны (тогда G2 - не каноническая форма), либо принадлежат различным схемам вида G2 (и,), G2 (v2) (тогда С, не является канонической формой, поскольку содержит пересекающиеся схемы, вырастающие из различных опорных вершин).
Если же схемы С1( G2 отличаются опорными вершинами, то они неэквивалентны в силу примитивности схем. Лемма доказана.
Теперь опишем алгоритм р, который, получив на свой вход две эквивалентные схемы С1( G2. строит эквивалентную им каноническую схему G. Сначала алгоритм р в каждой из схем G±, G2 просматривает пары одинаково помеченных вызовов и устанавливает, эквивалентны они или нет. В случае эквивалентности алгоритм р выполняет склеивание этих вершины путём переброса на оставляемую вершину дуг, приходящих в другую. Это преобразование поддерживается условной аксиомой В1, формальное определение которой совпадает с определением условной аксиомы А 6 в [5]. Здесь и далее мы будем ссылаться на аксиомы из [5], определяющие эквивалентные преобразования системы э.п., полной в М0, ограничиваясь лишь содержательным описанием самих преобразований. После применения аксиомы В1 схема перестаёт быть свободной, и поэтому применяется преобразование, описываемое безусловной аксиомой В2. Оно состоит в удалении из схемы вершин, не достижимых из её входа; это преобразование обобщает описанное в [5] аксиомой А1.
Обозначим GlnG2, схемы, эквивалентные исходным схемам С,, С2. и не содержащие эквивалентных вызовов.
Далее, алгоритм р работает с каждой парой многовыходных схем, вырастающих из сочетаемых опорных вершин схем GlnG2,. При этом, если существует преобразователи, принадлежащие нескольким многовыходным схемам, они расклеиваются, то есть, создаются копии преобразователей так,
чтобы каждая копия принадлежала своей многовыходной схеме. Это преобразование поддерживается безусловной аксиомой А1 из [5]. Обозначим рл выполняемый для каждой пары многовыходных схем алгоритм. Пусть х>1,х>2 - рассматриваемая пара вершин схем С1;,С2, соответственно. Поскольку многовыходные схемы С,, (и,) и С2,(и2) эквивалентны, то известны принадлежащие им сопряжённые вершины, следовательно, и сопряжённые кусты в них. На основании утверждения 5 справедлива
Лемма 3 Если Р1,Р2 - сочетаемые кусты из схем С,,(и,) и С2,(1?2), то при любом х 6 X все х-выходы этих кустов находятся в сочетаемых схемах, вырастающих из у2 соответственно.
Для каждой пары сочетаемых кустов проводится трансформация, подробно описанная в [1]. Приведём её кратко.
В первую очередь, сопряжённые кусты переводятся в чистые кусты, то есть, кусты, в которых все входящие извне дуги ведут в корень куста. Эта трансформация проводится путём отклеивания подкуста с формированием новой пары сопряжённых кустов. Это преобразование обеспечивается аксиомой А1.
Далее обеспечивается следующее свойство сопряжённых кустов: для каждого х 6 X все х-выходы куста ведут в одну и ту же вершину. Это требование выполняется путём склеивания х-выходов кустов при помощи аксиомы В1. После этого кусты трансформируется в линейные, то есть, просто в цепочки преобразователей, несущие операторные символы, соответствующие маркерам кустов. Преобразование проводится при помощи безусловной аксиомы А7 из [5].
В процессе преобразований могли получаться несвободные схемы, поэтому алгоритм повторяет трансформацию схем в свободные согласно аксиоме В2. В результате имеет место следующее утверждение.
Утверждение 6 Преобразованные многовыходные схемы сильно эквивалентны.
Здесь сильно эквивалентными называются эквивалентные схемы, составными частями которых являются сильно эквивалентные простые схемы. Осталось применить аксиому А6, склеивающую сильно эквивалентные вершины.
Алгоритм рЛ описан.
Применением алгоритма р пара схем приводится к паре изоморфных канонических схем, следовательно, верна
Теорема 6 Система э.п., индуцируемая аксиомами
В1,В2,А1 - А1,
является полной в классе К.
7. Заключение
Дальнейшие исследования в этой области можно вести в следующих
направлениях:
• исследование других простых моделей программ, в которых разрешима проблема эквивалентных преобразований, для применения решения к многовыходным схемам и, соответственно, к перегородчатым моделям программ;
• поиск представлений схем из перегородчатых моделей, которые могут быть альтернативой многовыходным схемам; результаты в этой области помогут решать проблему эквивалентных преобразований для схем, которые не являются примитивными;
• исследование многовыходных схем как самостоятельного объекта. Список литературы
[1]. Подповченко Р.И. Исследование примитивных схем программ с процедурами // Моделирование и анализ информационных систем, т. 21, 4, 2014, с. 116-131.
[2]. Подповченко Р.И., Молчанов А.Э. О теории алгебраических моделей программ с процедурами // Моделирование и анализ информационных систем, т.19, №5, 2012, с.100-114.
[3]. Подповченко Р.И. Специальные перегородчато-автоматные модели рекурсивных программ // Программирование, 1994, №3, с.З - 26.
[4]. Молчанов А.Э. Разрешимость эквивалентности в двухпараметрических перегородчатых моделях программ // Моделирование и анализ информационных систем, т.21, №4, 2014, с. 104-115.
[5]. Подповченко Р.И. Полные системы эквивалентных преобразований в уравновешенных полугрупповых моделях программ с левым сокращением // Программирование, 2010, № 3, с. 3-18.
A Solution to the Equivalent Transformation Problem in a Class of Primitive Program
Schemes
A. Molchanov <guruxl [email protected]> MSU, CMC, lb52, Leninskie Gory str., Moscow, 119333, Russian Federation
Abstract. The article belongs to the theory of program schemes, which are objects designed for the analysis of formalized programs. The structure of such schemes is represented as graphs. Programs schemes with procedures are considered. A subclass of program schemes, called primitive, is defined. A methodology for the construction of full systems of equivalent transformations (E.T.) is given. This methodology is then successfully applied to construct a full system of E.T. in the primitive subclass of balanced gateway program models with left cancellation. The construction is based on the known system of E.T. for similar program models without procedures. An auxiliary type of schemes, called multiexit schemes, is used. Further research topics are given in the conclusion.
Keywords: algebraic program models; equivalent transformations; gateway program models; primitive program models; left cancellation.
References
[1]. Podlovchenko R.I. Primitive program schemata with procedures. Automatic Control and Computer Sciences, Allerton Press, 2014, vol.48, N 7, pp. 615-622.
[2]. Podlovchenko R.I., Molchanov A.E. About algebraic program models with procedures. Automatic Control and Computer Sciences, Allerton Press, 2013, vol. 47, N 1, pp. 385-392.
[3]. Podlovchenko R.I. Special'nie peregorodchato-avtomatnie modeli rekursivnikh programm [Special gateway-automaton models of recursive programs], Programmirovanie [Programming], 1994, No. 3, pp. 3-26 (in Russian).
[4]. Molchanov A.E. Razreshimost' ekvivalentnosti v dvuhparametricheskich peregorodchatikh modelyah programm [Equivalence Problem Solvability in Biparametric Gateway Program Models]. Modelirovanie I analiz informacionnikh sistem [Information systems analysis and modelling], 2014, vol.21, No. 4, pp. 104-115 (in Russian).
[5]. Podlovchenko R.I. Complete Systems of Equivalent Transformations in Balanced Semigroup Models of Programs with Left Cancellation. Programming and Computer Software, 2010, vol. 36, No. 3, pp. 125-137