Научная статья на тему 'Применение алгоритмов проверки эквивалентности для оптимизации программ'

Применение алгоритмов проверки эквивалентности для оптимизации программ Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
421
74
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
ЭКВИВАЛЕНТНОСТЬ ПРОГРАММ / ОПТИМИЗИРУЮЩИЕ ПРЕОБРАЗОВАНИЯ / РЕАГИРУЮЩАЯ ПРОГРАММА / СХЕМА ПРОГРАММ / РАЗРЕШАЮЩИЙ АЛГОРИТМ / PROGRAM EQUIVALENCE / OPTIMIZING TRANSFORMATIONS / REACTIVE PROGRAM / PROGRAM SCHEME / DECISION PROCEDURE

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Захаров В. А., Подымов В. В.

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

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

On the application of equivalence checking algorithms for program minimization

Equivalence checking algorithms found vast applications in system programming; they are used in software refactoring, security checking, malware detection, program integration, regression verification, compiler verification and validation. In this paper we show that equivalence checking procedures can be utilized for the development of global optimization transformation of programs. We consider minimization problem for two formal models of programs: deterministic finite state transducers over finitely generated decidable groups that are used as a model of sequential reactive programs, and deterministic program schemata that are used as a model of sequential imperative programs. Minimization problem for both models of programs can be solved following the same approach that is used for minimization of finite state automata by means of two basic optimizing transformations, namely, removing of useless states and joining equivalent states. The main results of the paper are Theorems 1 and 2.

Текст научной работы на тему «Применение алгоритмов проверки эквивалентности для оптимизации программ»

Труды ИСП РАН, том 27, вып. 4, 2015 г..

Применение алгоритмов проверки эквивалентности для оптимизации программ

12, з, 4/j /i Захаров <[email protected]>

24В.В. Подъшое <valdus(a)vandex.ru>

1 IK II РАН, 109004, Россия, г. Москва, ул. А. Солженицына, дом 25 2119991 ГСП-1 Москва, Ленинские горы, МГУ имени М.В. Ломоносова, 2-й учебный корпус, факультет ВМК

3Московский физико-технический институт (государственный университет), 141700, Московская область, г. Долгопрудный, Институтский пер., 9 4НИУ ВШЭ, Россия, Москва, 101000, ул. Мясницкая, д. 20

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

Ключевые слова: эквивалентность программ; оптимизирующие преобразования; реагирующая программа; схема программ; разрешающий алгоритм.

1. Введение

В программировании задача проверки эквивалентности программ - для двух заданных программ выяснить, имеют ли эти программы одинаковое поведение, - играет двоякую роль. С одной стороны, эта задача служит индикатором сложности модели вычислений, в которой формализовано понятие программы: оценивая сложность проблемы эквивалентности, можно узнать, насколько выбранная формальная модель программ пригодна для практического применения при решении других задач анализа поведения программ. Именно с этой целью проблема эквивалентности изучается в теории схем программ (см. [41,50,51]). С другой стороны, к задаче проверке эквивалентности программ сводятся многие задачи верификации и

145

Trudy ISP RAN [The Proceedings of ISP RAS], vol. 27, issue 4, 2015.

оптимизации программ. Если проблема эквивалентности имеет эффективный алгоритм решения, то его можно использовать как универсальную вспомогательную процедуру для решения многих других задач системного программирования. Цель данной статьи - продемонстрировать, как можно использовать быстрые алгоритмы проверки эквивалентности в разных формальных моделях программ для эффективной оптимизации программ. Алгоритмы проверки эквивалентности программ имеют довольно широкую область применения в системном программировании. С их помощью удается решать некоторые задачи

• рефакторинга программ, связанные с выявлением фрагментов программного кода, реализующих известные алгоритмы [3,38];

• регрессионного анализа кода [5,11,16,21] для обнаружения ошибок, которые могут возникать в процессе модернизации программ;

• верификации и валидации оптимизирующих процедур в

компиляторах [13,17,18,20,22,28,30,33,43-45];

• композиции программ [39] для корректного объединения нескольких фрагментов кода, реализующих разные функциональности, в одну программу;

• проверки безопасности потоков данных [7,36], чтобы удостовериться в отсутствии уязвимостей;

• обнаружения вредоносных фрагментов кода (программных

«вирусов») [12,42].

Но наиболее важной областью применения алгоритмов проверки эквивалентности является разработка оптимизирующих преобразований программ. Исследования в этом направлении начались на рубеже 60-70 гг XX века (см. [1,6,10,14,19,46,50]) и привели к значительному прогрессу в развитии средств компиляции программ и повышении качества программного кода. Оптимизирующие преобразования программ нуждаются в проверке их корректности, и это можно осуществить лишь при помощи средств проверки эквивалентности программ. Методы, используемые на практике для этой цели, ограничиваются анализом ациклических фрагментов программ (линейных участков) [5,15,24], конечных разверток циклов [21,31,33], или программ, выполняющих специальные преобразования, для которых удается вычислять инварианты циклов [17,23,32].

Однако алгоритмы проверки эквивалентности программ можно использовать не только как средства контроля корректности оптимизирующих преобразований, но и как средства построения самих оптимизирующих 146

Труды ИСП РАН, том 27, вып. 4, 2015 г..

преобразований. Для пояснения этого тезиса обратимся к следующему примеру.

Одна из наиболее простых моделей вычислений - это детерминированные конечные автоматы. Задача оптимизации автоматов состоит в том, чтобы для заданного автомата А построить эквивалентный автомат В (т.е. автомат, распознающий тот же самый язык L(A) = L(B)), имеющий наименьшее число состояний. Решение этой задачи можно провести в три этапа.

1. Разбить состояния автомата на классы эквивалентности. Два состояния

q’ и q" считаются эквивалентными, если эквивалентны автоматы A[q'] и A[q"], имеющие эти состояния в качестве начальных. Именно для выделения классов эквивалентности состояний автомата А используется алгоритм проверки эквивалентности автоматов.

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

3. Удалить все бесполезные состояния вместе с входящими в них и исходящими из них переходами. Бесполезным считается всякое состояние, которое недостижимо из начального состояния или из которого недостижимо никакое финальное состояние. Для выявления бесполезных состояний достаточно воспользоваться общеизвестными алгоритмами теории графов.

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

В этой статье мы покажем, что та же самая стратегия решения задачи оптимизации может быть применена и к более сложным вычислительным системам, моделирующим программы. Мы ограничимся рассмотрением двух таких систем - конечных детерминированных автоматов-преобразователей и алгебраических моделей программ над полугруппами.

Автоматы-преобразователи (машины с конечным числом состояний, трансдьюсеры) возникли как обобщение конечных автоматов Рабина-Скотта. В отличие от конечных автоматов преобразователи вычисляют отношения на множествах конечных слов. Они находят применение в системном программировании для построения простейших компиляторов [2], драйверов,

147

Trudy ISP RAN [The Proceedings of ISP RAS], vol. 27, issue 4, 2015.

осуществляющих фильтрацию и преобразования строк, изображений, потоков данных [4,37], в системах автоматизированного проектирования управляющих систем для разработки контроллеров [29], в компьютерной лингвистике для создания программ распознавания речи [25] и др. Проблема эквивалентности для конечных детерминированных автоматов-преобразователей над строками была исследована в статьях [9,34,49]. В статье [26] для этого класса преобразователей был предложен алгебраический метод их минимизации. Преобразователи также могут служить простой моделью реагирующих программ, функция которых состоит в том, чтобы вырабатывать правильные отклики в ответ на внешние воздействия. К числу программ такого рода относятся операционные системы, сетевые протоколы, драйверы, контроллеры. В этих программах разные последовательности действий могут приводить к одному и тому же результату, поэтому элементарные (базовые) действия реагирующей программы можно рассматривать как порождающие элементы некоторой полугруппы. Для конечных детерминированных автоматов-преобразователей над полугруппами в статье [49] был разработан полиномиальный по времени алгоритм проверки эквивалентности. Именно с его помощью для этой разновидности автоматов-преобразователей в данной статье будет предложен алгоритм минимизации.

Алгебраические модели программ были впервые введены в статье [53] как результат синтеза двух моделей вычислений - схем программ Ляпунова-Янова [52] (синтаксическая компонента) и дискретных преобразователей Глушкова-Летичевского [47] (семантическая компонента). Эта простая модель последовательных программ может быть использована для решения широкого спектра задач анализа поведения императивных программ, включая задачи оптимизации. В частности, в статье [54] для одного класса алгебраических моделей программ был предложен метод минимизации схем программ, основанный на построении полной системы эквивалентных преобразований.

В статье [47] было замечено, что задача минимизации схем программ тесно взаимосвязана с задачей проверки эквивалентности. В этой работе была предложена рекурсивная процедура проверки эквивалентности схем программ, в которой преобразования, направленные на минимизацию числа ветвлений переходов в состояниях схемы программы, чередуются с проверкой эквивалентности схем программ, полученных в результате этих преобразований. В общих чертах этот метод подпадает под описанную выше схему минимизации моделей программ. Однако при отсутствии эффективного алгоритма проверки эквивалентности использовать этот метод для минимизации схем программ невыгодно - его сложность по времени экспоненциально зависит от размера оптимизируемой программы.

В данной статье мы описываем прямой (нерекурсивный) алгоритм минимизации схем программ, семантика операторов которых определяется полугруппами специального вида - левоскратимыми полугруппами с неразложимой единицей. В основу этого алгоритма положены идеи, высказанные в работе [47]. Высокая эффективность нашего алгоритма 148

Труды ИСП РАН, том 27, вып. 4, 2015 г..

обусловлена явным использованием известных эффективных алгоритмов проверки эквивалентности схем программ в полу групповых моделях программ [40,48,55].

Статья организована следующим образом. В разделе 2 приведено описание модели вычислений конечных автоматов-преобразователей над полугруппами. В разделе 3 описан алгоритм минимизации для преобразователей, работающих над разрешимыми группами, доказана его корректность. В разделе 4 приведено описание синтаксиса и семантики схем программ в алгебраической модели программ. В разделе 5 описан алгоритм минимизации схем программ над упорядоченными полугруппами и доказана его корректность. В заключении проводится обсуждение используемого в статье подхода к решению задачи оптимизации моделей программ и оцениваются перспективы развития этого подхода и его применения для оптимизации других моделей программ.

2. Автоматы-преобразователи: основные понятия

Пусть задан конечный алфавит 2. Записью 2* обозначим множество всех конечных слов над алфавитом 2, включая пустое слово Я. Буквы алфавита 2 могут быть истолкованы как элементарные события, происходящие во внешней среде и оказывающие влияние на информационную систему, взаимодействующую с этой средой. В этом случае слова можно понимать как возможный сценарий поведения внешней среды по отношению к информационной системе.

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

Конечным автоматом-преобразователем (далее просто преобразователем) над полугруппой S называется система п = {Y.,S,Q, q0, F, Т), в которой

• Q - конечное множество состояний;

• q0- начальное состояние, q0 е Q ;

• F - подмножество финальных состояний, F с Q ;

• Т с Q х 2х S х Q - конечное отношение переходов.

149

Trudy ISP RAN [The Proceedings of ISP RAS], vol. 27, issue 4, 2015.

Четверки (q,a,s,q') из множества T называются переходами; для их

a/s

обозначения используем запись q —» q’. Для каждого состояния q,q Е Q, запись n[q] будет обозначать преобразователь (X, S, Q, q, F, Т). в котором состояние q играет роль начального состояния. Размером преобразователя л называется число, равное сумме числа состояний |Q| и длин полу групповых выражений, задающих элементы s, которые приписаны переходам преобразователя.

Вычислением преобразователя л на входном слове w = а1а2 ... ап называется всякая последовательность переходов

al/sl a2ls2 an-l/sn-l an/sn

run = qt-----> qi+1---»---------» qi+n-i----» Ri+n ■

Конечный преобразователь может служить моделью последовательной

a/s

реагирующей программы. Каждый переход q —» q' означает, что при получении внешнего воздействия а в состоянии управления q эта программа совершает переход в состояние управления q' и выполняет последовательность операторов s. Последовательность таких переходов образует вычисление реагирующей программы. Элемент s = s1-s2---sn полугруппы 5 называется образом входного слова w, а пара (w, s) называется

w/s

меткой вычисления run. Запись qt —> qi+n ,будет использоваться для сокращенного обозначения вычисления преобразователя на входном слове w. Если qt = q0 , то вычисление run называется начальным вычислением. Если Ri+n е F; т0 вычисление run назьшается финальным вычислением. Полным вычислением называется всякое вычисление преобразователя, которое является как начальным, так и финальным. Записью Lab (л) обозначим множество меток (w, s) всех полных вычислений преобразователя л; это множество является отношением, которое реализует преобразователь л. Запись Lang (л') будем использовать для обозначения множества всех слов, на которых преобразователь л имеет полное вычисление, т.е. Lang (л) = {w : (w, а) £ Lab (л)}. Очевидно, для любого конечного автомата-преобразователя л множество Lang (л) является регулярным языком.

Преобразователи л’ и л" считаются эквивалентными (и обозначаются записью 7г' ~ л"), если Lab (л') = Lab(n"). Образ входного слова представляет собой результат вычисления реагирующей программы в ответ на последовательность воздействий среды. Внешний наблюдатель регистрирует результаты лишь тех вычислений, которые достигают финальных состояний управления. Поэтому наблюдаемое поведение реагирующей программы л полностью определяется множеством меток Lab (л). Таким образом, эквивалентность преобразователей означает, что соответствующие реагирующие программы имеют одинаковое наблюдаемое поведение. Преобразователь считается минимальным (по числу состояний), если не существует эквивалентных ему преобразователей с меньшим числом состояний.

150

Труды ИСП РАН, том 27, вып. 4, 2015 г..

Состояние q преобразователя п считается полезным, если хотя бы одно полное вычисление проходит через это состояние. В противном случае состояние будем называть бесполезным. Преобразователь считается детерминированным, если для любой буквы а и для любого состояния q

a/s

множество Т содержит не более одного перехода вида q —> q'. Для детерминированного преобразователя п введем обозначение

г ^ _ (s, если (w,s) Е Lab(п)

^ J ~ 1 неопределено иначе '

Таким образом, два детерминированных преобразователя л' и л" эквивалентны в том и только том случае, если равенство 7r'(w) = 7r"(w) выполняется для любого слова w.

В статье [49] предложен общий метод построения разрешающих процедур для задач проверки эквивалентности детерминированных преобразователей на полугруппами 5 , вложимыми в конечно порожденные разрешимые группы. Полугруппа S называется вложимой в группу G, если эта группа содержит подполугруппу S' , изоморфную полугруппе 5. Полугруппа называется разрешимой, если в ней разрешима проблема равенства слов, т.е. существует алгоритм, который для любой пары выражений, составленных из порождающих элементов полугруппы, может определить, представляют ли эти выражения один и тот же элемент полугруппы. В статье [49] также показано, что если проблема равенства слов в группе G разрешима за полиномиальное время, то и проблема эквивалентности конечных детерминированных преобразователей над полугруппой 5 разрешима за полиномиальное время. Опираясь на этот результат, мы покажем, как можно эффективно решить задачу минимизации конечных детерминированных преобразователей, применяя ту же самую стратегию, какую используют для минимизации детерминированных конечных автоматов. В этой статье при решении этой задачи мы будем полагать, что полугруппа S является группой, те. S = G. Для всякого элемента s группы G запись s~ будет обозначать элемент группы G, обратный элементу s.

3. Минимизация детерминированных автоматов-преобразователей над группами

В предложенном методе минимизации автоматов преобразователей используется процедура проверки эквивалентности, однако, конкретный вид этой процедуры не имеет существенного значения. Фактически, эта процедура используется как «черный ящик» или оракул.

Пусть задан конечный детерминированный автомат-преобразователь л ( Е, G, Q, q0, F, Т). Два состояния q' и q" назовем подобными, если существует такой элемент s группы С, что для любого слова w выполняется равенство s • n[q'](w) = Tt[q”](w'). Этот элемент s будем называть балансиром для пары

151

Trudy ISP RAN [The Proceedings of ISP RAS], vol. 27, issue 4, 2015.

подобных состояний q' и q". Состояния q' и q” назовем сбалансированными, если они подобны с балансиром е. Алгоритм минимизации конечных детерминированных автоматов-преобразователей над группой определяется на основании следующих утверждений.

Утверждение 1. Отношение подобия и отношение сбалансированности на множестве состояний автомата-преобразователя п являются отношениями эквивалентности.

Доказательство. Рефлексивность отношений подобия и сбалансированности очевидна. Симметричность отношения подобия имеет место ввиду того, что 5 • n[q’](w) = n[q”](w) Ф> n[q’](w) = s~ ■ 7r[<7"](w). Поскольку e~ = e, отсюда следует симметричность отношения сбалансированности. Транзитивность отношения подобия следует из соотношения

Si • n[q’](w) = tt[(?"](w) Л s2 • tt[<7"](w) = n[q'"](w) => s2s1 ■ n[q'](w) =

n[q'"](w).

Поскольку e ■ e = e, отсюда следует транзитивность отношения сбалансированности. QED

Утверждение 2. Если q' и q" - пара подобных состояний с балансиром s, и при этом состояние q' является финальным, то состояние q" также является финальным, as- нейтральный элемент е группы G.

Доказательство. Следует из того факта, что всякое состояние q является финальным тогда и только тогда, когда значение n[q](X) определено и при этом равно е. QED

Утверждение 3. Если группа G является разрешимой, то отношение подобия состояний автомата-преобразователя также разрешимо. Более того, если проблема равенства слов в группе G разрешима за полиномиальное время, то и подобие состояний конечного детерминированного автомата-

преобразователя можно проверить за полиномиальное время.

Доказательство. Пусть q' и q" — пара состояний конечного детерминированного автомата-преобразователя л = {Y.,G,Q,q0,F,Т). Если Lang(n[q']) Ф Lang (л [(/"]), то состояния q' и q", очевидно, не являются подобными. Если Lang(n[q']) = Lang(n[q"J) = 0, то состояния q' и q", очевидно, являются подобными, и любой элемент группы G (в т.ч. нейтральный) может служить балансиром пары q', q". В заключение рассмотрим случай, когда Lang(n[q'J) = Lang(n[q"]) = L Ф 0. Возьмем произвольное слово w 6 L. Пусть n[q'](w) = a,n[q"](w) = /?. Тогда состояния q' и q" могут быть подобными в том и только том случае, когда равенство /3 ■ а~ ■ n[q'](u) = n[q"](u) выполняется для любого слова и. Чтобы проверить это равенство, обратимся к следующей паре преобразователей л' = (Z, S, Q U {q}, q, F, Т) и л" = {1, S, Q U {q}, q, F, Т"), где q 0 Q, Т’ = Т U {(q, а, /3 ■ а~, q')}, Т" = Т U {(<7, а, е, q")}, и а - произвольная

152

Труды ИСП РАН, том 27, вып. 4, 2015 г..

буква алфавита £. Из определения этих преобразователей видно, что Lang{n') = Lang(n") = aL, и для любого слова и справедливы равенства л'(аи) = р ■ а~ ■ 7г[<?'](и) и л"{аи) = n[q"](u). Таким образом, для проверки подобия состояний q' и q" достаточно проверить эквивалентность преобразователей п' и п". Проверку эквивалентности преобразователей, работающих над разрешимой группой G, можно провести, используя метод, описанный в статье [49].

QED

Пусть имеются преобразователь п, состояние q этого преобразователя и элемент s группы G. Обозначим записью Tr^n.q.s) преобразователь, получающийся из л следующим образом:

х/з

• каждый переход вида р —» q, где р Ф q, заменяется на переход

x/gs~

р----->q;

y/h

• каждый переход вида q —»р, где р Ф q, заменяется на переход

y/sh

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

я—>р;

x/h y/s-h-s~

• каждый переход вида q —> q заменяется на переход q----> q.

Утверждение 4. Каковы бы ни были преобразователь л = {E,G,Q, q0, F, Т), состояние q, не являющееся ни начальным, ни финальным (т.е. q £ F и {<?0}), и элемент s,sEG, для преобразователя n1 = Tr1(ji,q,s) справедливы соотношения

Lab (л) = Labin-P), т.е. Гг, - эквивалентное преобразование трансдьюсеров; 7n[<?](w) = s ■ n[q](w) для любого слова w;

л1 [p](w) = л[р](w) для любого слова w и состояния р, отличного от q.

Доказательство. Поскольку состояние q не является ни начальным, ни финальным, каждое финальное вычисление преобразователя л±, проходящее

“i/*i x/g-s~ y/sh

через состояние q, имеет вид р--->-------> q---> ••• . Поэтому для любого

слова w и состояния р, отличного от q, добавленные элементы s' и s на переходах, инцидентных состоянию q, взаимно поглощаются, и верно равенство 7Ti [p](w) = л [p](w). Поскольку состояние q не является начальным, отсюда следует равенство Lab (л) = ЬаЬ{лг). Однако для финального вычисления, начинающегося из состояния q, добавленный элемент s в первом переходе не будет компенсирован, и поэтому имеет место равенство TrJqKw) = s • л\Д](т~). QED

Следствие. Предположим, что q' и q" - пара подобных состояний с балансиром s в преобразователе л, и при этом состояние q' не является ни

153

Trudy ISP RAN [The Proceedings of ISP RAS], vol. 27, issue 4, 2015.

начальным, ни финальным. Тогда q' и q" сбалансированы в преобразователе Tr^n.q'.s),

Пусть имеются преобразователь л и пара состояний q'. q" этого преобразователя. Обозначим записью Tr2(jz,q',q") преобразователь,

х/а .

получающийся из л заменой каждого перехода р —> q , ведущего в состояние

, х/9 „

q , на переход р —> q .

Утверждение 5. Если состояния q' и q" сбалансированы в преобразователе л, то 7Г ~ Tr2(n,q',q”).

Доказательство. Пусть n1 = Tr2(n,q',q"). Рассмотрим произвольное состояние q и покажем, что для любого слова w выполняется равенство n[q](w) = л, [q](w). Для этого воспользуемся индукцией по длине слова w. Базис индукции (случай w = А) очевидным образом следует из утверждения 2. Рассмотрим случай w = хи. Если в преобразователе л имеется переход q

р, где р Ф <?', то этот переход сохраняется в преобразователе лг. Поэтому n[q](xu) = д ■ л[р](и) = д ■ лДр^и) = л, [q](хи). Если в преобразователе л

имеется переход q —> q', то в преобразователе л2 вместо этого перехода

х/д

используется переход q—> q". Учитьшая, что л[^](и) = л[^"](и), можем получить следующую цепочку равенств л^](хи) = д • л[^](и) = д • 7zq "u=g-7zlq "и=тг1 [q](xu). QED

Пусть имеются преобразователь л = (Z,G,Q,q0,F,T) и состояние q, q 6 Q\ {q0}. Обозначим записью Tr3(ji,q) преобразователь, получающийся из л удалением состояния q и всех переходов, входящих в это состояние и исходящих из него. Очевидно следующее

Утверждение 6. Если преобразователь л имеет бесполезное состояние q, отличное от начального, то л ~ Тг3(л, q).

Назовем автомат-преобразователь приведенным, если он не содержит бесполезных состояний, отличных от начального, а также различных подобных состояний.

Утверждение 7. Автомат-преобразователь минимален по числу состояний тогда и только тогда, когда он приведен.

Доказательство. Необходимость. Если преобразователь л содержит бесполезное состояние q, отличное от начального, то согласно утверждению 6 эквивалентный ему преобразователь Т г3 (л, q) имеет меньшее число состояний. Предположим, что преобразователь л содержит различные подобные состояния q' и q" с балансиром s. Тогда хотя бы одно из этих состояний (например, q') не является начальным. Если хотя бы одно из состояний q' и q" является финальным, то согласно утверждению 2 оба состояния являются финальными и при этом сбалансированными (т.е. s = ё). Тогда согласно утверждениям 5 и 6 преобразователь Tr3(Tr2(ji,q',q"),q') 154

Труды ИСП РАН, том 27, вып. 4, 2015 г..

эквивалентен преобразователю л и имеет меньшее число состояний. Если оба состояния q' и q" не являются финальными, то согласно утверждениям 4-6 преобразователь Tr3(Tr2(Tr1(n,ql ,s),q’ ,q"),q’) эквивалентен

преобразователю л и имеет меньшее число состояний.

Достаточность. Предположим противное: существуют два таких

эквивалентных преобразователя л = (S,G,Q, q0, F, Т) и

л' = (S,G,Q’,q’ ,F',T’), что л является приведенным, л' является минимальным и при этом |<2'| < |Q|. Коль скоро преобразователь л' минимальный, у него нет бесполезных состояний. Так как |<2'| < |Q|, существует такая пара слов w1,w2 и три состояния q1 6 Q’ и q1,q2 £ Q, для которых имеют место начальные вычисления

, w1/g1 w2/g2 , Wi/hi w2/h2

Чо-----> Ч , Чо--> Ч , Чо---> <?i- Чо-> Чг ■

Поскольку л — л\ для любого слова w верны равенства g^'[q’](w) = МЫО) и g2n'[q'](w) = h2n[q2](w). Значит,

glh^lq-tliw) = g2 h^[q2\(w) и, следовательно, состояния 4f Ч2 преобразователя л подобны вопреки условию утверждения. Полученное противоречие свидетельствует о справедливости утверждения. QED

Итеративный алгоритм минимизации конечных детерминированных автоматов-преобразователей работает следующим образом. Для заданного преобразователя л = (£, G, Q, q0, F, Т) до тех пор, пока это возможно, в произвольном порядке выполняются следующие действия.

1. Выделить бесполезное состояние q, q Ф q0, и применить преобразование Тг3 (л, q).

2. Выделить пару различных сбалансированных состояний q', q", где q' Ф q0, и применить преобразование Tr3(Tr2(ji,q',q"),q').

3. Выделить пару различных подобных состояний q', q" с балансиром s, где ч' ^ Чо и s Ф е, и применить преобразование Tr3(Tr2(Tr1(n,q’,s),q’,q”),q’).

Каждое из применяемых преобразований сокращает число состояний в преобразователе л. Поэтому алгоритм обязательно завершает работу спустя не более |0| шагов. Утверждения 2, 4-6 гарантируют, что преобразователь, полученный в результате работы алгоритма, будет эквивалентен исходному, а утверждение 1 - приведенность полученного преобразователя. Поэтому, согласно утверждению 7, по окончании работы описанного алгоритма будет построен минимальный по числу состояний автомат-преобразователь, эквивалентный исходному. Для сведения проверки подобия состояний преобразователя к проверке равенства слов в группе С, а также для

155

Trudy ISP RAN [The Proceedings of ISP RAS], vol. 27, issue 4, 2015.

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

Теорема 1. Если проблема равенства слов в группе G разрешима за полиномиальное время, то существует полиномиальный по времени алгоритм минимизации конечных детерминированных преобразователей над группой G.

4. Схемы последовательных программ: основные понятия

Схемы последовательных программ, являющиеся основным объектом исследований теории схем программ, допускают разные формы представления; для их описания можно использовать алгебраические формулы [52], размеченные графы или системы переходов специального вида [47,51,53]. Схемы программ также можно рассматривать как детерминированные автоматы-преобразователи с конечным числом состояний, имеющие особую семантику. Как раз в таком виде схемы программ были представлены в работах [46,47]. Для поддержания синтаксического единообразия анализируемых моделей вычислений мы воспользуемся в данной статье именно этой формой представления схем программ. Детерминированный автомат-преобразователь л = (I.,S,Q,q0,F,Т) с входным алфавитом £. работающий над полугруппой S, может расцениваться как схема программ (далее просто схема), если полагать, что

• множество состояний Q - это множество точек ветвления (или просто

точек) программы, в которых проводится проверка логических условий;

• состояние q0 - это точка входа в программу, или просто вход программы;

• в схеме имеется не более одного финального состояния / - это точка выхода из программы, или просто выход программы; из этой точки не исходит ни одного перехода, и в ней завершаются все результативные вычисления программы;

• алфавит £ - это множество значений логических условий, в зависимости от которых осуществляется передача управления в ту или иную точку программы;

• полугруппа S - это множество состояний данных, с которыми работает программа;

156

Труды ИСП РАН, том 27, вып. 4, 2015 г..

• образующие полугруппы S - это элементарные операторы программы, осуществляющие преобразования данных: если s £ S и а -это образующий элемент полугруппы S, то элемент s' = s ■ а нужно рассматривать как результат применения элементарного оператора а к состоянию данных s;

• полугрупповые выражения д = а1- а2.....ак - это последовательные

композиции элементарных операторов программы, которые мы будем называть операторными цепочками;

х/з

• каждый переход р —> q преобразователя помечен непустой

операторной цепочкой д и описывает линейный участок программы, в

котором цепочка д выполняется в том случае, когда в точке ветвления

р логические условия принимают значение х, и после выполнения этой

цепочки операторов управление передается в точку ветвления q.

Вычисление схемы - это чередующаяся последовательность проверок логических условий в точках ветвления, сопровождающихся выбором соответствующих линейных участков, и выполнений операторных цепочек, приписанных этим участкам. Успешные вычисления схемы начинаются в ее входе и завершаются в ее выходе. Состояние данных, которое достигается по завершении успешного вычисления, считается результатом вычисления. Приведенные соображения, определяющие, по сути дела, основные принципы устройства и функционирования императивных программ, могут быть более строго формализованы следующим образом. Пусть заданы алфавит (множество значений логических условий) £ и полугруппа (множество состояний данных) S. Интерпретацией называется всякая функция /: S -»2, которая ставит в соответствие каждому состоянию данных некоторое значение логических условий. Вычислением схемы п в интерпретации / называется последовательность переходов этой схемы

, л ai/9i al! 92 an-ll9n-l ап!9п

run(n,I) = q0---> q1--->----------> <7„_i-->

удовлетворяющая двум условиям:

1. q0- вход схемы л;

2. для любого i,i>l, выполняется равенство aL = 1(е ■ дЛ ■ д2..

9i-1).

157

Trudy ISP RAN [The Proceedings of ISP RAS], vol. 27, issue 4, 2015.

Вычисление, оканчивающееся в выходе qn = f, называется терминальным

вычислением', состояние данных sn = дг ■ д2..дп, с которым завершается

терминальное вычисление гип(л,1), считается результатом вычисления схемы л в интерпретации I и обозначается записью л(1). Если схема л не имеет терминальных вычислений в интерпретации I, то результат вычисления 7г(/) считается неопределенным. Схемы л1 и л2 считаются эквивалентными (и обозначаются записью л1 ~л2), если равенство л1(1) = л2 (/) выполняется для любой интерпретации /. Схема считается минимальной (по числу точек ветвления), если не существует эквивалентной ей схемы с меньшим числом точек ветвления.

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

Полугруппа S называется упорядоченной, если для любой пары ее элементов h, g выполнено соотношение g-h = g^h = e, и левосократимой (или обладающей свойством левого сокращения), если для любой тройки g, h±, h2 ее элементов выполнено соотношение д • hх = д • h2 => h± = h2. В следующем разделе приводятся описание и анализ алгоритма минимизации схем программ над разрешимыми упорядоченными левосократимыми полугруппами. Некоторые конструкции и технические приемы этого алгоритма были предложены в работе [47], однако авторы этой работы осуществляли минимизацию схем программ по другому параметру -быстродействию схемы. Кроме того, предложенный ими перекрестно-рекурсивный метод проводит совместное решение двух задач - минимизации и проверки эквивалентности схем программ. Процедура минимизации обращается к процедуре проверки эквивалентности при выполнении упрощающих преобразований, а для проверки эквивалентности нужно, в свою очередь, осуществить минимизацию схем программ. Такой рекурсивный алгоритм имеет экспоненциальную сложность и не представляет практической ценности. Вместе с тем, в целом ряде статей (см., например [40-42,48,55]) были предложены полиномиальные по времени алгоритмы проверки эквивалентности схем программ, работающих над упорядоченными полугруппами. Опираясь на них, мы предлагаем более простое и эффективное решение задачи минимизации схем программ. Фактически, для этого нам пришлось вычленить процедуру минимизации из решения, описанного в статье [47], совместить ее с классической процедурой минимизации конечных автоматов-распознавателей и адаптировать к явному использованию алгоритмов проверки эквивалентности схем программ.

158

Труды ИСП РАН, том 27, вып. 4, 2015 г..

5. Минимизация схем программ над упорядоченными левосократимыми полугруппами

В этом разделе мы рассматриваем схемы программ, работающие над разрешимой упорядоченной левосократимой полугруппой S. Как и в случае автоматов-преобразователей, процедура проверки эквивалентности схем программ используется в виде «черного ящика». Ранее мы отметили, что принадлежность точки ветвления какому-либо пути из входа в выход, вообще говоря, еще не свидетельствует о ее полезности. Однако следующее утверждение показывает, что для рассматриваемых нами полугрупп эти понятия оказываются равносильными.

Утверждение 8 [38]. Пусть S - упорядоченная левосократимая полугруппа, и в схеме n = (Z,G,Q, q0, F, Т) имеется последовательность переходов q0

aildi аг/Л2 an-ildn-i an/9n

----* q1--->---------* qn-1--> •••. Тогда существует интерпретация, в

которой эта последовательность переходов является вычислением.

Следствие. Точка q схемы п полезна тогда и только тогда, когда она лежит на каком-либо пути из входа в выход.

Пусть имеются схема п и точка q этой схемы. Обозначим записью Мо<1Л (n, q) схему, получающуюся из п удалением точки q и всех переходов, начинающихся или оканчивающихся в этой точке. Тогда очевидно

Утверждение 9. Если q - бесполезная точка схемы д, отличная от входа, то n * Mod1(n,q').

Точка q называется существенной в схеме п, если существуют такие интерпретации /,. /2, отличающиеся только значением ^(е) Ф /2(е) в нейтральном элементе полугруппы 5 (начальном состоянии данных), что результаты вычислений схемы n[q] в этих интерпретациях различны: 7r[qf] (/i) Ф тг [<?] (^2) • В противном случае точка q называется фиктивной. Пусть имеются схема п, точка q этой схемы и логическое условие а. Обозначим записью Mod2(n,q,a) схему, получающуюся из п следующим образом:

afh

• если в схеме п содержится переход вида q —> q1. то каждый переход

b/g b/h

q —> q", начинающийся в точке q. заменяется на переход q —> q';

• в противном случае из схемы удаляются все переходы, начинающиеся в точке q.

Утверждение 10 [45]. Пусть a - произвольное логическое условие. Тогда точка q схемы п фиктивна в том и только том случае, если n * Mod2(ji, q, a).

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

159

Trudy ISP RAN [The Proceedings of ISP RAS], vol. 27, issue 4, 2015.

Пусть имеются схема тг, состояние q этой схемы и логическое условие а. Обозначим записью Mod3(n,q,a) схему, получающуюся из л следующим образом:

a/h ,

• если в схеме п содержится переход вида q —> q , то каждый переход

Ъ/д „ b/gh

р —>q, оканчивающийся в точке q, заменяется на переход р —> q ;

• в противном случае из схемы удаляются все переходы, оканчивающиеся в точке q.

Утверждение 11. Пусть q - фиктивная точка схемы л, отличная от выхода, а а - логическое условие. Тогда л ~ Mod3(n, q, а).

Доказательство. Согласно утверждению 10, достаточно показать эквивалентность схем п' = Mod2(n,q,a) и л" = Mod-Дл, q, а). Рассмотрим произвольную интерпретацию /. Если схема л не содержит перехода, начинающегося в точке q и помеченного буквой а, то ни одно из вычислений гип(л',1), гип(л",1) не достигает выхода. В противном случае вычисление гип(л",1) получается из вычисления гип(л',1) заменой каждой пары

b/h с/д

соседних переходов q' —> q —> q”, проходящих через точку q, на переход

b/hg

q' —> q". Легко видеть, что в обоих случаях л'(0 = п"(/). QED

Точки q-l, q2 схем щ, л2 назовем эквивалентными (и обозначим записью q1 *(ге1,ге2) q2), если эквивалентны схемы л3 [^у] и л2 [q2]. Если л1 = л2 = л, то для краткости вместо ~(ПъП2) будем писать ~п.

Утверждение 12. Пусть точки q, q' эквивалентны в схеме тт. Тогда точка q существенна в том и только в том случае, если существенна точка q'. Доказательство. Допустим, что точка q существенна, а точка q' - нет. Тогда существуют интерпретации 1г, 12, отличающиеся только значением в начальном состоянии данных (1Де) Ф /2(е)), для которых верно соотношение n[q]0i) ^ тг[^?](^г)- При этом nW]0i) = n[q'](I2) вопреки условию эквивалентности точек q, q'. QED

Схему назовем безызбыточной, если:

• она не содержит бесполезных точек, кроме, быть может, входа;

• она не содержит фиктивных точек, кроме, быть может, входа и выхода;

• если ее вход фиктивен, то в него не ведет ни одного перехода.

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

160

Труды ИСП РАН, том 27, вып. 4, 2015 г..

a/h

Утверждение 13. Пусть л - безызбыточная схема, q —> р - переход этой

a/h

схемы, и (j q', Тогда в схеме п имеется также переход q' —>р, причем

V Р'-

Доказательство. Если вход схемы п бесполезен, то схема не содержит других точек, и справедливость утверждения очевидна. Далее полагаем, что вход схемы полезен. Из полезности точки q и утверждения 8 следует, что существует такая интерпретация /, что вычисление run(n[q\, /) результативно

и начинается с перехода q—»р. Так как q ~п q', вычисление run(n[q’], /) также результативно. Пусть вычисление run(n[q’], /) начинается с перехода

Ъ/д

q' —> р'. Тогда b = 1(e) = а. Осталось обосновать два соотношения: h = д и

р ~п р'.

Предположим, что h Ф д. Возможен один из трех случаев: 1) существует такое состояние данных и, что hu = д; 2) существует такое состояние данных и, что h = дщ 3) для любого состояния данных и верны соотношения hu Ф д и h Ф ди. Рассмотрим подробно только первый случай: h Ф д, hu = д; те же самые рассуждения можно провести и в двух других случаях. Если р - выход, то в силу упорядоченности полугруппы 5 вычисления run(n[q], /), run(n[q'],I) не могут иметь одинаковый результат. Значит, точка р не является ни входом, ни выходом и существенна. Тогда существуют две такие интерпретации 1Ъ /2, различающиеся только значением в начальном состоянии данных (/Де) Ф /2(е)), что л[р](1Д Ф п{р](12). Рассмотрим интерпретации /{, /2 со следующими свойствами: для любого состояния данных s верно I'i(hs) = lL(s): l[(e) = Г2(е) = а. Такие интерпретации можно корректно определить для любой упорядоченной левосократимой полугруппы

S. Тогда 7r[q](T[) = h ■ п[р](1Л) Ф h ■ п\р](12) = л[<?](/2). Заметим, что

а/д

вычисления run(n[q'], /{) и run(n[q'], /2) начинаются с перехода q' —>р', и для рассматриваемого случая верно равенство run(n[q'], /{) = run(n[q'], /2). Поэтому n[q'](I[) = 7г[<7'](/2). Но коль скоро q ~к q'„ справедливы также равенства n[q](I[) = n[q'](l\) = n[q'](l'2) = n[q](l2) вопреки полученному вьппе соотношеншо n[q](I[) Ф n[q](l2). Этим противоречием обосновывается равенство h = д.

Теперь обоснуем соотношение р ~п р'. Предположим противное: точки р, р' не эквивалентны в схеме п. Тогда существует такая интерпретация /, что л\р](1) Ф п[р'](1). Основываясь на этой интерпретации, построим интерпретацию /', обладающую следующими свойствами: для любого состояния данных s верно равенство I'Qis) = /(s); /'(е) = а. Из

эквивалентности точек q, q' следует цепочка равенств h ■ л[р](1) = n[q](l') = n[q'](I') = д • л\р'](/). Ввиду того что h = д и полугруппа S является левосократимой, должно быть справедливо равенство л[р](1) = л[р'](1). которое противоречит установленному ранее соотношению л[р](1) Ф л[р'}(1). QED

161

Trudy ISP RAN [The Proceedings of ISP RAS], vol. 27, issue 4, 2015.

Пусть имеется схема и, содержащая точки q и q'. Обозначим записью

a/h

Mod4(ji,q,q') схему, получаемую из л заменой каждого перехода р—>q,

a/h

оканчивающегося в точке q, на переход р —> q'.

Утверждение 14. Пусть л - безызбыточная схема, и q, q' - ее различные эквивалентные существенные точки. Тогда л ~ Mod4(n, q, q'). Доказательство. Пусть п' = Mod4(n,q,q'). Рассмотрим произвольную интерпретацию I и вычисления

гип(л, I) ai/hi аг/Лг аз/^з

= Яо *4i ><72 >

гип(л',1) bi/gi bll9i

= Ро *Pi >P2 >

Для обоснования утверждения достаточно показать, что эти вычисления имеют одинаковую длину и при этом для любого i, i > 1, справедливы соотношения ht = gt и qt ~п pt. Воспользуемся индукцией по индексу i, предварительно заметив, что ввиду того, что схема л безызбыточна, точки q1,q2,..., Pi,P2> ■■■ существенны в этой схеме.

Базис индукции. Если в схеме л не содержится переход, начинающийся в точке q0 = р0 и помеченный буквой 1(e), то оба вычисления гип(п,1), гип(п',1) имеют длину 0. Иначе оба этих вычисления непусты, аг = 1(e) = Ьъ и согласно определению преобразования Mod4 верно равенство h4 = дг.

ai/hi

Если переход q0-----> qt содержится в схеме п', то q4 = р4. Иначе q4 = q и

Рх = q'. В любом случае справедливо соотношение q1 ~к р4.

Индуктивный переход. Предположим, что qi ~к Pi„ h4 = дг, ..., ht = gt., и длина хотя бы одного из вычислений run(n,I), гип(п',1) превышает i. Для определенности будем считать, что таковым является вычисление гип(п,1),

al+i/hi+i ,

содержащее переход qt--------> qi+1 (аналогичные рассуждения применимы,

если предполагать, что длина вычисления гип(п',1) превышает i). Согласно

ai+i/^i+i

утверждению 13 схема п содержит переход р;---------->р, где р ~п qi+1. Из

, , , “i+lAi+l

равенств ai+1 = п± ■ ... ■ ht= дг- ... ■ gt следует, что если р Ф q, то р;-> р

- (i + 1)-й по порядку переход вычисления гип(п',1), а иначе таковым

ai+l/hi+i у

является переход ---------»q’. В любом случае длина вычисления гип(п',1)

превосходит i и справедливы соотношения gi+1 = hi+1, qi+1 ~п pi+1. QED Безызбыточную схему назовем приведенной, если она не содержит различных эквивалентных точек.

Утверждение 15. Схема программ минимальна тогда и только тогда, когда она является приведенной.

Доказательство. Необходимость. Если схема п содержит бесполезную точку q, отличную от входа, то согласно утверждению 9 схема Mod1(n, q) эквивалентна п и содержит меньшее число точек. Если схема п содержит

162

Труды ИСП РАН, том 27, вып. 4, 2015 г..

фиктивную полезную точку q, отличную от входа и выхода, то согласно

a/h

утверждению 8 в схеме л содержится переход q—> q’. где q Ф q'. Тогда согласно утверждениям 8, 9, 11 схема Mod1(Mod3^, q, a),q) эквивалентна л и содержит меньшее число точек. Если схема л безызбыточна и содержит различные эквивалентные точки q', q", то по утверждению 12 обе эти точки существенны, и хотя бы одна из них (скажем, q') отлична от входа. Тогда согласно утверждениям 8, 9, 14 схема Mod1(Mod4(n,q',q"),q') эквивалентна л и содержит меньшее число точек. Осталось рассмотреть следующий случай. Схема л: не содержит бесполезных точек, отличных от входа q0; не содержит фиктивных точек, отличных от входа и выхода; содержит различные эквивалентные точки q', q": не является безызбыточной. Тогда по

a/h

утверждению 12 схема л содержит переход qQ —> q, где q Ф qf). и используя утверждение 11, получим безызбыточную схему Mod3(ji,q0,a), эквивалентную л, имеющую столько же точек и содержащую различные эквивалентные точки q', q". Способ получения из нее эквивалентной схемы с меньшим числом состояний описан ранее.

Достаточность. Пусть л = {S.G.Q.qQ.F,Т) - произвольная приведенная схема. Рассмотрим произвольную эквивалентную ей минимальную схему л' = (X,G,Q',q'0,F',T'). Как было показано выше, схема л' является приведенной. Так как л ~ л', справедливо соотношение qQ ~(П:П') q'0- Тогда, используя утверждение 13, нетрудно показать, что для каждой точки схемы л существует эквивалентная ей точка схемы л', и для каждой точки схемы л' существует эквивалентная ей точка схемы л. Если схема л' содержит точку q', эквивалентную двум различным точкам q±, q2 схемы л, то q4 ~л q2, что противоречит приведенности схемы л. Значит, отношение эквивалентности между точками схемы л и точками схемы л' является взаимно-однозначным соответствием. Таким образом, |Q| = |Q'|. QED

Итеративный алгоритм минимизации схем программ работает в два этапа: вначале для исходной схемы строится эквивалентная ей безызбыточная схема, а затем построенная безызбыточная схема преобразуется к приведенному виду.

На первом этапе, пока это возможно, для заданной схемы л = (£, S, Q, q0, F, Т) выполняются следующие действия.

1. Выделить бесполезную точку q, q Ф q0, и применить преобразование Mod±(jt,q).

2. Выделить полезную фиктивную точку q, q £ F U {<?0}, выбрать

a/h

произвольный переход q —> q', где q' Ф q, и применить

преобразование Mod^Mod^, q, a), q).

163

Trudy ISP RAN [The Proceedings of ISP RAS], vol. 27, issue 4, 2015.

a/h

3. Если вход схемы полезен и фиктивен, то выбрать переход q0 —» q, где q Ф q0, и применить преобразование Mod3(n, q0,а).

4. Если вход схемы бесполезен, то удалить все переходы, начинающиеся во входе.

Действия 3, 4 выполняются не более одного раза. Каждое из действий 1, 2 сокращает число точек схемы. Поэтому первый этап минимизации завершается спустя не более |(?| шагов. Согласно утверждениям 8, 9 и 11 в результате выполнения действий первого этапа будет построена безызбыточная схема, эквивалентная исходной схеме. На основании утверждения 8 проверка полезности точки сводится к проверке достижимости вершин в графе переходов схемы. Также утверждением 8 гарантируется наличие переходов, требуемых в действиях 2 и 3. Из утверждения 10 следует, что проверка фиктивности точки q в схеме л сводится к проверке эквивалентности схем л и Mod2(л, q, а).

На втором этапе для безызбыточной схемы л = (Z,S,Q,q0,F,T) выполняется одно и то же действие, пока оно может быть выполнено: выделить пару различных эквивалентных точек q', q", где q' ^ q0, и применить преобразование Mod^Mod^.q' ,q"),q'). Согласно определению безызбыточности и утверждению 12 обе точки q'. q" отличны от входа и выхода и существенны. Утверждения 9 и 14 гарантируют эквивалентность исходной и преобразованной схем. Применяемое преобразование сокращает число состояний в схеме. Поэтому второй этап минимизации схемы завершается спустя не более |(?| шагов. По завершении второго этапа получается приведенная схема. Ее минимальность гарантируется утверждением 15. Таким образом, справедлива

Теорема 2. Если проблема эквивалентности схем программ над упорядоченной левосократимой полугруппой S разрешима за полиномиальное время, то существует полиномиальный по времени алгоритм минимизации схем программ над полугруппой S.

6. Заключение

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

164

Труды ИСП РАН, том 27, вып. 4, 2015 г..

следующем этапе исследований можно предпринять попытку усилить утверждения теорем 1 и 2 настоящей статьи. В разделе 3 описан алгоритм минимизации конечных детерминированных автоматов-преобразователей, работающих над разрешимыми группами. Вероятно, этот алгоритм можно распространить и на класс автоматов-преобразователей, работающих над полугруппами, вложимыми в разрешимые группы. Именно для этого класса преобразователей в статье [49] была доказана разрешимость проблемы эквивалентности, и поэтому здесь для решения задачи минимизации также можно воспользоваться процедурами проверки эквивалентности. В разделе 5 предложен алгоритм минимизации схем программ, работающие над разрешимой упорядоченными левосократимыми полугруппами. Однако в статьях [40,42,48] были предложены полиномиальные по времени алгоритмы проверки эквивалентности схем программ, работающих над другими классами полугрупп; эти алгоритмы также можно было бы использовать в качестве вспомогательного средства для разработки эффективных процедур минимизации схем программ.

Список литературы

[1] . Abel N.E., Bell J.R. Global optimization in compilers. Proceedings of the First USA-

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

Japan Computer Conference. 1972.

[2] . Aho A.V., Sethi R., Ullman J.D. Compilers: principles, techniques, and tools. Addison-

Wesley, Reading, MA, 1986.

[3] . Alias, C., Barthou, D. On the recognition of algorithm templates. Proceedings of the 2-

nd International Workshop on Compiler Optimization Meets Compiler Verification, Electronic Notes in Theoretical Computer Science, 2004, v. 82, N 2, p. 395—409.

[4] . Alur R., Cemy P. Streaming transducers for algorithmic verification of single-pass list-

processing programs. Proceedings of 38th ACM SIGACT-SIGPLAN Symposium on Principles of Programming Languages, 2011, p. 599-610.

[5] . Arons T., Elster E., Fix L., Mador-Haim S., Mishaeli M., Shalev J., Singerman E.,

Tiemeyer A., Vardi M. Y., Zuck L. D. Formal verification of backward compatibility of microcode. CAV, 2005, p. 185-198.

[6] . Allen F.E., Cocke J.L. A catalogue of optimizing transformations. Design and

Optimization of Compilers, Prentice-Hall, Englewood Cliffs, N.J., 1972.

[7] . Barthe, G., D’Argenio, P.R., Rezk, T. Secure information flow by self-composition.

Proceedings of the 17th IEEE Workshop on Computer Security Foundations, 2004, p. 100.

[8] . Benton, N. Simple relational correctness proofs for static analyses and program

transformations. Proceedings of the 31st ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, 2004, ACM, New York.

[9] . Blattner M, Head T. The decidability of equivalence for deterministic finite transducers.

Journal of Computer and System Sciences, 1979, v. 19, p. 45-49.

[10] . Busam V.A., England D.E. Optimization of expressions in Fortran. Communications of

the Association for Computing Machinary. 1969, v. 12, N 12, p. 666-674.

[11] . Chaki, S., Gurfinkel, A., Strichman, O. Regression verification for multi-threaded

programs. Proceedings of the 13th International Conference on Verification, Model Checking, and Abstract Interpretation, 2012, p. 119-135.

165

Trudy ISP RAN [The Proceedings of ISP RAS], vol. 27, issue 4, 2015.

[12] . Christodorescu M., Jha S., Seshia S. A., Song D., Bryant R. E. Semantic-aware malware

detection. Proceedings of the 2005 IEEE Symposium on Security and Privacy, Oakland, 2005.

[13] . Dissegna, S., Logozzo, F., Ranzato, F. Tracing compilation by abstract interpretation.

Proceedings of the 41st ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, 2014, p. 47-59.

[14] . Ershov A.P. Alpha - an automatic programming system of high efficiency. Journal of the

Association for Computing Machinary. 1966. v. 13, N 1. p. 17-24.

[15] . Feng X., Hu A. J. Cutpoints for formal equivalence verification of embedded software.

Proceedings of the 5-th ACM International Conference on Embedded Software, 2005, p. 307-316.

[16] . Godlin, B., Strichman, O. Regression verification. Proceedings of the 46th Annual

Design Automation Conference, 2009, IEEE Computer Society, Washington.

[17] . Goldberg, B., Zuck, L., Barrett, C. Into the loops: practical issues in translation

validation for optimizing compilers. Theoretical Computer Science, 2005, v. 132, N 1, p. 53-71.

[18] . Guo, S.-Y., Palsberg, J. The essence of compiling with traces. Proceedings of the 38th

Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, 2011, p. 563-574.

[19] . Kildall G. A unified approach to global program optimization. Conference Record of the

Annual ACM SIGPLAN-SIGACT Simposium on Principles of Programming Languages, 1973, p. 194-206.

[20] . Kundu, S., Tatlock, Z., Lemer, S. Proving optimizations correct using parameterized

program equivalence. Proceedings of the 2009 ACM SIGPLAN Conference on Programming Language Design and Implementation, 2009, p. 327-337.

[21] . Lahiri S. K., Hawblitzel C., Kawaguchi M., Rebelo H. SYMDIFF: A language-agnostic

semantic diflf tool for imperative programs. Proceedings of the 24th International Conference on Computer Aided Verification, 2012, p. 712-717.

[22] . Le V., Afshari, M., Su, Z. Compiler validation via equivalence modulo inputs.

Proceedings of the 35th ACM SIGPLAN Conference on Programming Language Design and Implementation, 2014, ACM, New York.

[23] . Lopes N. P., • Monteiro J. Automatic equivalence checking of programs with

uninterpreted functions and integer arithmetic. International Journal on Software Tools for Technology Transfer, 2015, N 1, p. 1-16.

[24] . Matsumoto, T., Saito, H., Fujita, M. Equivalence checking of C programs by locally

performing symbolic simulation on dependence graphs. Proceedings of the 7-th International Symposiumon Quality Electronic Design, 2006, p. 370-375.

[25] . Mohri M. Finite state transducers in language and speech processing. Computer

Linguistics, 1997, v. 23, N 2.

[26] . Mohri M. Minimization algorithms for sequential transducers. Theoretical Computer

Science, 2000, v. 234, p. 177-201.

[27] . Namjoshi, K.S., Zuck, L.D. Witnessing program transformations. Proceedings of the

20th International Conference on Static Analysis, 2013, Springer, Berlin, Heidelberg.

[28] . Necula, G.C. Translation validation for an optimizing compiler. Proceedings of the

ACM SIGPLAN 2000 Conference on Programming Language Design and Implementation. 2000, p. 83-94.

[29] . Nerode A., Kohn W. Models for hybrid systems: automata, topology, controllability,

observability. Cornell University, Technical Report 93-28, 1993, MIT Press, Cambridge.

166

Труды ИСП РАН, том 27, вып. 4, 2015 г..

[30] . Pnueli, A., Siegel, М., Singerman, Е. Translation validation. Proceedings of the 4th

International Conference on Tools and Algorithms for Construction and Analysis of Systems, 1998, p. 151-166.

[31] . Ramos D. A., Engler D. R. Practical, low-effort equivalence verification of real code.

CAV, 2011, p.669-685.

[32] . Sharma R., Schkufza E., В/ Churchill, A. Aiken. Data-driven equivalence checking.

Proceedings of the 2013 ACM SIGPLAN international conference on Object oriented programming systems languages & applications, 2013, p. 391-406.

[33] . Shashidhar, K.C., Bruynooghe,M., Catthoor, F., Janssens, G. Verification of source code

transformations by program equivalence checking. Proceedings of the 14th International Conference on Compiler Construction. Springer, 2005, Berlin, Heidelberg.

[34] . de Souza R. On the decidability of the equivalence for к-valued transducers.

Proceedings of 12th International Conference on Developments in Language Theory, 2008, p. 252-263.

[35] . Stepp, M., Tate, R, Lemer, S. Equality-based translation validator for LLVM.

Proceedings of the 23rd International Conference on Computer Aided Verification,

201 l,p. 737-742.

[36] . Terauchi, T.: Aiken, A. Secure information flow as a safety problem. Proceedings of the

12th International Conference on Static Analysis. 2005, p. 352-367.

[37] . Veanes M., Hooimeijer P., Livshits B., et al. Symbolic finite state transducers:

algorithms and applications. Proceedings of the 39th ACM SIGACT-SIGPLAN Symposium on Principles of Programming Languages, 2012.

[38] . Verdoolaege, S., Janssens, G., Bruynooghe, M. Equivalence checking of static affine

programs using widening to handle recurrences. Proceedings of the 21st International Conference on Computer Aided Verification, 2009, Springer, Berlin, Heidelberg.

[39] . Yang W., Horowitz S., Reps T. A program integration algorithm that accommodates

semantics-preserving transformations. ACM Transactions of Software Engineering and Methodology, 1992, v. 1,N 3, p. 310-354.

[40] . Zakharov V.A. An efficient and unified approach to the decidability of equivalence of

propositional program schemes. Lecture Notes in Computer Science. 1998, v. 1443, p. 247-258.

[41] . Zakharov V.A.. The equivalence problem for computational models: decidable and

undecidable cases. Lecture Notes in Computer Science, 2001, v. 2055, p. 133-153.

[42] . Zakharov V.A., Kuzurin N.N., Podlovchenko R.I., Shcherbina V.V. Using algebraic

models of programs for detecting metamorphic malwares. Труды Института Системного программирования, Том 12,2007. с. 77-94.

[43] . Zaks, A., Pnueli, A. CoVaC: Compiler validation by program analysis of the cross-

product. In: Proceedings of the 15th International Symposium on Formal Methods. Springer, 2008, Berlin, Heidelberg.

[44] . Zhao, J., Nagarakatte, S., Martin, M.M.K., Zdancewic, S. Formal verification of SSA-

based optimizations for LLVM. Proceedings of the 34th ACM SIGPLAN Conference on Programming Language Design and Implementation, 2013, ACM, New York.

[45] . Zuck, L., Pnueli, A., Goldberg, B., Barrett, C., Fang, Y., Hu, Y. Translation and run-

time validation of loop transformations. Formal Methods for System Design, 2005, v. 27, N 3, p. 335-360.

[46] . Глушков B.M. К вопросу о минимизации микропрограмм и схем алгоритмов.

Кибернетика. 1966, N 5, с. 1-3.

167

Trudy ISP RAN [The Proceedings of ISP RAS], vol. 27, issue 4, 2015.

[47] . Глушков B.M., Летичевский A.A. Теория дискретных преобразователей.

Избранные вопросы алгебры и логики: сб. статей. Новосибирск:Наука, 1973, с. 5-39.

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

[48] . Захаров В.А. Быстрые алгоритмы разрешения эквивалентности

пропозициональных операторных программ на упорядоченных полугрупповых шкалах. Вестник Московского университета, сер. 15, Вычислительная математика и кибернетика. - 1999, N 3. с. 29-35.

[49] . Захаров В.А. Моделирование и анализ последовательных реагирующих программ.

Труды Института системного программирования РАН, том 27, выпуск 2,2015. стр. 221-250. DOI: 10.15514Я8РКА8-2015-27(2>13

[50] . Касьянов В.Н. Оптимизирующие преобразования программ. М.: Наука, 1988. 336

с.

[51] . Котов В.Е., Сабельфельд В.К. Теория схем программ. М.:Наука, 1991. 348 с.

[52] . Ляпунов А.А. О логических схемах программ. Проблемы кибернетики, выл. 1,

М.:Физматгиз, 1958, с. 46-74.

[53] . Подловченко Р.И. О минимизации схем программ с перестановочными блоками.

Программирование, 2008, N 4, с. 72-77.

[54] . Подловченко Р.И. Полу групповые модели программ. Программирование. 1981, N

4, с.3-13.

[55] . Подымов В.В., Захаров В.А. Полиномиальный алгоритм проверки

эквивалентности в модели программ с перестановочными и подавляемыми операторами. Труды ИСП РАН, 2014, выл. 3, с. 145-166. DOI: 10.15514Л8Р1ГА8-2014-26(3)-8

168

Труды ИСП РАН, том 27, вып. 4, 2015 г..

On the application of equivalence checking algorithms for program minimization

t, 2,3,4уд Zakharov <[email protected]>

2' 4V. V.Podymov <[email protected]> fSP RAS, 25, Alexander Solzhenitsyn st., 109004, Moscow, Russia 2Lomonosov Moscow State University, 2nd Education Building, Faculty CMC, GSP-1, Leninskie Gory, Moscow, 119991, Russian Federation 3Moscow Institute of Physics and Technology, 9 Institutskiy per., Dolgoprudny, Moscow Region, 141700, Russia

4Higher School of Economics, National Research University, 20 Myasnitskaya Ulitsa, Moscow 101000, Russia

Annotation. Equivalence checking algorithms found vast applications in system programming; they are used in software refactoring, security checking, malware detection, program integration, regression verification, compiler verification and validation. In this paper we show that equivalence checking procedures can be utilized for the development of global optimization transformation of programs. We consider minimization problem for two formal models of programs: deterministic finite state transducers over finitely generated decidable groups that are used as a model of sequential reactive programs, and deterministic program schemata that are used as a model of sequential imperative programs. Minimization problem for both models of programs can be solved following the same approach that is used for minimization of finite state automata by means of two basic optimizing transformations, namely, removing of useless states and joining equivalent states. The main results of the paper are Theorems 1 and 2.

Theorems 1. If G is a finitely generated group and the word problem in G is decidable in polynomial time then minimization problem for finite state deterministic transducers over G is decidable in polynomial time as well.

Theorem 2. If S is a decidable left-contracted ordered semigroup of basic program statements and the word problem in S is decidable in polynomial time then minimization problem for program schemata operating on the interpretation over S is decidable in polynomial time as well.

Keywords: program equivalence, optimizing transformations, reactive program, program scheme, decision procedure.

169

Trudy ISP RAN [The Proceedings of ISP RAS], vol. 27, issue 4, 2015.

References

[1] . Abel N.E., Bell J.R. Global optimization in compilers. Proceedings of the First USA-

Japan Computer Conference. 1972.

[2] . Aho A.V., Sethi R., Ullman J.D. Compilers: principles, techniques, and tools. Addison-

Wesley, Reading, MA, 1986.

[3] . Alias, C., Barthou, D. On the recognition of algorithm templates. Proceedings of the 2-

nd International Workshop on Compiler Optimization Meets Compiler Verification, Electronic Notes in Theoretical Computer Science, 2004, v. 82, N 2, p. 395^109.

[4] . Alur R., Cemy P. Streaming transducers for algorithmic verification of single-pass list-

processing programs. Proceedings of 38th ACM SIGACT-SIGPLAN Symposium on Principles of Programming Languages, 2011, p. 599-610.

[5] . Arons T., Elster E., Fix L., Mador-Haim S., Mishaeli M., Shalev J., Singerman E.,

Tiemeyer A., Vardi M. Y., Zuck L. D. Formal verification of backward compatibility of microcode. CAV, 2005, p. 185-198.

[6] . Allen F.E., Cocke J.L. A catalogue of optimizing transformations. Design and

Optimization of Compilers, Prentice-Hall, Englewood Cliffs, N.J., 1972.

[7] . Barthe, G., D’Argenio, P.R., Rezk, T. Secure information flow by self-composition.

Proceedings of the 17th IEEE Workshop on Computer Security Foundations, 2004, p. 100.

[8] . Benton, N. Simple relational correctness proofs for static analyses and program

transformations. Proceedings of the 31st ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, 2004, ACM, New York.

[9] . Blattner M, Head T. The decidability of equivalence for deterministic finite transducers.

Journal of Computer and System Sciences, 1979, v. 19, p. 45-49.

[10] . Busam V.A., England D.E. Optimization of expressions in Fortran. Communications of

the Association for Computing Machinary. 1969, v. 12, N 12, p. 666-674.

[11] . Chaki, S., Gurfinkel, A., Strichman, O. Regression verification for multi-threaded

programs. Proceedings of the 13th International Conference on Verification, Model Checking, and Abstract Interpretation, 2012, p. 119-135.

[12] . Christodorescu M., Jha S., Seshia S. A., Song D., Bryant R. E. Semantic-aware malware

detection. Proceedings of the 2005 IEEE Symposium on Security and Privacy, Oakland, 2005.

[13] . Dissegna, S., Logozzo, F., Ranzato, F. Tracing compilation by abstract interpretation.

Proceedings of the 41st ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, 2014, p. 47-59.

[14] . Ershov A.P. Alpha - an automatic programming system of high efficiency. Journal of the

Association for Computing Machinary. 1966. v. 13, N 1. p. 17-24.

[15] . Feng X., Hu A. J. Cutpoints for formal equivalence verification of embedded software.

Proceedings of the 5-th ACM International Conference on Embedded Software, 2005, p. 307-316.

[16] . Godlin, B., Strichman, O. Regression verification. Proceedings of the 46th Annual

Design Automation Conference, 2009, IEEE Computer Society, Washington.

[17] . Goldberg, B., Zuck, L., Barrett, C. Into the loops: practical issues in translation

validation for optimizing compilers. Theoretical Computer Science, 2005, v. 132, N 1, p. 53-71.

[18] . Guo, S.-Y., Palsberg, J. The essence of compiling with traces. Proceedings of the 38th

Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, 2011, p. 563-574.

170

Труды ИСП РАН, том 27, вып. 4, 2015 г..

[19] . Kildall G. A unified approach to global program optimization. Conference Record of the

Annual ACM SIGPLAN-SIGACT Simposium on Principles of Programming Languages, 1973, p. 194-206.

[20] . Kundu, S., Tatlock, Z., Lemer, S. Proving optimizations correct using parameterized

program equivalence. Proceedings of the 2009 ACM SIGPLAN Conference on Programming Language Design and Implementation, 2009, p. 327-337.

[21] . Lahiri S. K., Hawblitzel C., Kawaguchi M., Rebelo H. SYMDIFF: A language-agnostic

semantic diff tool for imperative programs. Proceedings of the 24th International Conference on Computer Aided Verification, 2012, p. 712-717.

[22] . Le V., Afshari, M., Su, Z. Compiler validation via equivalence modulo inputs.

Proceedings of the 35th ACM SIGPLAN Conference on Programming Language Design and Implementation, 2014, ACM, New York.

[23] . Lopes N. P., • Monteiro J. Automatic equivalence checking of programs with

uninterpreted functions and integer arithmetic. International Journal on Software Tools for Technology Transfer, 2015, N l,p. 1-16.

[24] . Matsumoto, T., Saito, H., Fujita, M. Equivalence checking of C programs by locally

performing symbolic simulation on dependence graphs. Proceedings of the 7-th International Symposiumon Quality Electronic Design, 2006, p. 370-375.

[25] . Mohri M. Finite state transducers in language and speech processing. Computer

Linguistics, 1997, v. 23, N 2.

[26] . Mohri M. Minimization algorithms for sequential transducers. Theoretical Computer

Science, 2000, v. 234, p. 177-201.

[27] . Namjoshi, K.S., Zuck, L.D. Witnessing program transformations. Proceedings of the

20th International Conference on Static Analysis, 2013, Springer, Berlin, Heidelberg.

[28] . Necula, G.C. Translation validation for an optimizing compiler. Proceedings of the

ACM SIGPLAN 2000 Conference on Programming Language Design and Implementation. 2000, p. 83-94.

[29] . Nerode A., Kohn W. Models for hybrid systems: automata, topology, controllability,

observability. Cornell University, Technical Report 93-28,1993, MIT Press, Cambridge.

[30] . Pnueli, A., Siegel, M., Singerman, E. Translation validation. Proceedings of the 4th

International Conference on Tools and Algorithms for Construction and Analysis of Systems, 1998, p. 151-166.

[31] . Ramos D. A., Engler D. R. Practical, low-effort equivalence verification of real code.

CAV, 201 l,p. 669-685.

[32] . Sharma R., Schkufza E., В/ Churchill, A. Aiken. Data-driven equivalence checking.

Proceedings of the 2013 ACM SIGPLAN international conference on Object oriented programming systems languages & applications, 2013, p. 391-406.

[33] . Shashidhar, K.C., Bruynooghe,M., Catthoor, F., Janssens, G. Verification of source code

transformations by program equivalence checking. Proceedings of the 14th International Conference on Compiler Construction. Springer, 2005, Berlin, Heidelberg.

[34] . de Souza R. On the decidability of the equivalence for k-valued transducers.

Proceedings of 12th International Conference on Developments in Language Theory, 2008, p. 252-263.

[35] . Stepp, M., Tate, R., Lemer, S. Equality-based translation validator for LLVM.

Proceedings of the 23rd International Conference on Computer Aided Verification, 2011, p. 737-742.

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

[36] . Terauchi, T.: Aiken, A. Secure information flow as a safety problem. Proceedings of the

12th International Conference on Static Analysis. 2005, p. 352-367.

171

Trudy ISP RAN [The Proceedings of ISP RAS], vol. 27, issue 4, 2015.

[37] . Veanes M., Hooimeijer P., Livshits B., et al. Symbolic finite state transducers:

algorithms and applications. Proceedings of the 39th ACM SIGACT-SIGPLAN Symposium on Principles of Programming Languages, 2012.

[38] . Verdoolaege, S., Janssens, G., Bruynooghe, M. Equivalence checking of static affine

programs using widening to handle recurrences. Proceedings of the 21st International Conference on Computer Aided Verification, 2009, Springer, Berlin, Heidelberg.

[39] . Yang W., Horowitz S., Reps T. A program integration algorithm that accommodates

semantics-preserving transformations. ACM Transactions of Software Engineering and Methodology, 1992, v. 1, N 3, p. 310-354.

[40] . Zakharov V.A. An efficient and unified approach to the decidability of equivalence of

propositional program schemes. Lecture Notes in Computer Science. 1998, v. 1443, p. 247-258.

[41] . Zakharov V.A.. The equivalence problem for computational models: decidable and

undecidable cases. Lecture Notes in Computer Science, 2001, v. 2055, p. 133-153.

[42] . Zakharov V.A., Kuzurin N.N., Podlovchenko R.I., Shcherbina V.V. Using algebraic

models of programs for detecting metamorphic malwares. Труды Института Системного программирования, Том 12,2007. с. 77-94.

[43] . Zaks, A., Pnueli, A. CoVaC: Compiler validation by program analysis of the cross-

product. In: Proceedings of the 15th International Symposium on Formal Methods. Springer, 2008, Berlin, Heidelberg.

[44] . Zhao, J., Nagarakatte, S., Martin, M.M.K., Zdancewic, S. Formal verification of SSA-

based optimizations for LLVM. Proceedings of the 34th ACM SIGPLAN Conference on Programming Language Design and Implementation, 2013, ACM, New York.

[45] . Zuck, L., Pnueli, A., Goldberg, B., Barrett, C., Fang, Y., Hu, Y. Translation and run-

time validation of loop transformations. Formal Methods for System Design, 2005, v. 27, N 3, p. 335-360.

[46] . Glushkov V.M. К voprosu о minimizatcii microprogram i skhem algoritmov [On the

minimization of microprograms and algorithm schemata]. Kibemetika [Cybernetics].

1966, N 5, p. 1-3.

[47] . Glushkov V.M., Letichevskii A.A. Teoriya diskretnyh preobrazovateley [Theory of

discrete transducers], Izbranniye voprosy algebry i logiki [Selected issues in algebra and logics], NaukaPubl., 1973, p. 5-39.

[48] . Zakharov V.A. Bystriye algoritmy razresheniya ekvivalentnosti propozicionalnyh

operatomyh program na uporyadochennyh polugruppovyh shkalah [Fast equivalence checking algorithms for propositional sequential programs on the ordered semigroup frames], Vestnik Moskovskogo Universiteta. Vychislitelnaya matematika i kibemetika [Moscow University Computational Mathematics and Cybernetics] . 1999, N 3. p. 29-35.

[49] . Zakharov V.A. Modelirovanije i analiz posledovatelnyh i reagimjuschih program

[Modelling and analysis of sequential reactive programs]. Trudy ISP RAN [The Proceedings of ISP RAS], v. 27, issue 2, 2015, pp. 221-250. DOI: 10.15514fiSPRAS-2015-27(2)-13

[50] . Kasyanov V.N. Optimizirujuschije preobrazovanija program [Optimizing

transformations of programs], Nauka Publ., 1988. 336 p.

[51] . Kotov V.E., Sabelfeld V.K. Teorija shem program [Theory of program schemata],

NaukaPubl., 1991. 348p.

[52] . Lyapunov A.A. О logicheskih shemah program [On logical program schemata].

Problemy kibemetiki [Problems of Cybernetics], 1958, v. 1, p. 46-74.

172

Труды ИСП РАН, том 27, вып. 4, 2015 г..

[53] . Podlovchenko R.I. Minimization problem for schemes of programs with commutative

blocks. Programming and computer software, 2008, v. 34, N 4, c. 237-241.

[54] . Podlovchenko R.I. Polygruppovije modeli program [Semigroup models of programs],

Programmirovanije [Programming and computer software] 1981, N 4, c.3-13.

[55] . Podymov V.V., Zakharov V.A. Polynomialnij algoritm proverki ekvivalentnosti

program s perestanovochnimi I podavlyaemymi operatorami [A polynomial algorithm for checking the equivalence in models of programs with commutation and vast operators], Trudy ISP RAN [The Proceedings of ISP RAS], v. 26, N 3, c. 145-166. DOI: 10.15514dSPRAS-2014-26(3)-8

173

i Надоели баннеры? Вы всегда можете отключить рекламу.