Об одном обобщении подстановки применительно к задаче статического анализа программ

УДК 519.17

Е. В. Костылев, В. А. Захаров

ОБ ОДНОМ ОБОБЩЕНИИ ПОДСТАНОВКИ ПРИМЕНИТЕЛЬНО К ЗАДАЧЕ СТАТИЧЕСКОГО АНАЛИЗА ПРОГРАММ1

Одна из наиболее часто встречающихся задач, возникающих при проведении статического анализа и верификации программ, — это задача вычисления инвариантных соотношений в заданных точках программы, т.е. таких соотношений между данными, которые соблюдаются при любом прохождении произвольного вычисления через заданную точку программы. Инвариантные соотношения играют ключевую роль при доказательстве правильности программ методом индуктивных утверждений Флойда [1], аксиоматическим методом Хоара [2, 3], методом символьной верификации моделей (symbolic model-checking) [4]. Вычисление некоторых типов инвариантных соотношений является алгоритмически неразрешимой задачей [5]. Для получения простых инвариантов успешно применяются методы статического анализа, сводящие задачу вычисления инварианта программы к задаче вычисления неподвижной точки специальной функции, заданной на полурешетке абстрактных данных программы [6]. Выбор полурешетки абстрактных данных зависит от типа вычисляемого инварианта. Например, если нас интересуют инвариантные соотношения вида х = t, где t — арифметическое или логическое выражение (терм), то для вычисления таких соотношений можно воспользоваться полурешеткой подстановок. Подстановкой называется отображение в множества переменных V в множество термов Term. На множестве подстановок задана операция композиции, относительно которой можно определить отношения эквивалентности и предпорядка. Этот предпорядок в свою очередь порождает решетку на фактор-множестве подстановок. Устройство указанной решетки, а также алгоритмы вычисления точной верхней и нижней граней подробно описаны в [7-9]. Наиболее эффективный алгоритм вычисления точной нижней грани (алгоритмы антиунификации) описан в [10].

Эффективно вычислимые теоретико-решеточные операции позволяют воспользоваться полугруппой подстановок в качестве абстрактной интерпретации [11] для построения классической схемы решения ряда задач статического анализа программ, и в том числе для вычисления инвариантов программ. Эта схема сводит задачу вычисления инвариантов программ к вычислению наименьшего решения системы уравнений вида X = |_|.F(X), где |_| обозначает операцию взятия точной нижней грани. Наименьшая неподвижная точка оператора из правой части системы вычисляется итеративной процедурой, ядро которой составляет алгоритм вычисления точной нижней грани подстановок. Затем из полученной неподвижной точки легко извлекаются инварианты равенства. В тех случаях, когда анализируемая программа не содержит обращений к функциям и процедурам, решение указанной системы можно получить за полиномиальное время [12]. Если же в программе используется развитый аппарат процедур (в том числе рекурсивных), то решение такой системы оказывается значительно более трудной задачей, требующей в отдельных случаях экспоненциального времени.

Решение системы уравнений X = |_|.F(X) для задачи статического анализа программ с рекурсивным вызовом процедур можно было бы значительно упростить: получить решение этой задачи для каждой процедуры в отдельности и затем скомпоновать полученные результаты, воспользовавшись методами, описанными в [13]. Однако в случае использования подстановок такой подход нельзя осуществить, поскольку операция композиции подстановок не обладает свойством дистрибутивности относительно операции взятия точной нижней грани.

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

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

1 Работа выполнена при поддержке гранта РФФИ (проект 03-01-00132).

Пусть задан конечный алфавит Т = {/I"1',..., /^Г™'} функциональных символов фиксированной валентности (местности) и алфавит V переменных. Множество термов Term(V,.F) — это наименьшее множество выражений, удовлетворящих следующим двум условиям:

1) всякая переменная из V является термом;

2) если / — функциональный символ валентности п и t\,.. ,,tn — термы, то выражение f(t i,..., tn) является термом.

Подстановкой называется отображение 0 : V —> Term(V,.F). Если множество переменных Dom(#) = {и G V | 9(v) ф v} конечно, то подстановка называется конечной. Конечные подстановки 0 удобно представлять в виде множества связок {v\/ti,..., vn/tn}, где v\,.. ,,vn — все элементы множества Dom(#), и для каждого i, 1 ^ i ^ п, выполняется равенство ti = 0{vi). Если Dom(#) = 0, то подстановка 0 называется пустой. Применением t0 подстановки 0 к терму t называется терм, полученный одновременной заменой в t каждой переменной V{ на терм 0{vi). Композиция подстановок 0\02 определяется соотношением {0\02){v) = (0i(v))02- Подстановка р называется переименованием, если р является биекцией из V на V. Мы будем также рассматривать подстановки, преобразующие переменные из одного множества Vi в термы над другим множеством переменных Уг- Семейство всех таких подстановок будем обозначать Substy^TermCi^,^7)-

На множестве Subst^^.Term(y^, где множество X конечно, а множество У бесконечно, отношение предпорядка ^ определяется следующим образом: 0\ ^02, если равенство 02 = 0\i] выполняется для некоторой подстановки г] из Substy^Termfy,^) • Подстановки 0\ и 02 считаются эквивалентными, если 0\ ^ 02 и 02 Это означает, что 02 = 0\р для некоторого переименования р. Предпоря-

док ^ индуцирует на фактор-множестве Subst^^Termfy,^)/ ~ частичный порядок, который также обозначается Добавим к фактор-множеству Subst^^Termfy,^)/ ~ новый элемент т и тем самым пополним его до множества Subst^^Term^ ^ / при этом предполагается, что 0~ ^ т выполняется для любого класса эквивалентности 0~. Далее мы будем рассматривать все подстановки с точностью до переименований на множестве У. Поэтому, рассуждая о множестве подстановок Тегт(,У,-Т1"), мы будем подразумевать фактор-множество относительно указанного выше отношения эквивалентности, а саму подстановку будем соотносить с ее классом эквивалентности в этом множестве.

В [7, 9] показано, что множество Subst^^.Term(y^ с отношением частичного порядка ^ образует решетку с наименьшим элементом е = {x\/yi,...,хп/уп} и наибольшим элементом т, удовлетворяющую условию обрыва убывающих цепей. Обозначим символами и ^ соответственно операции взятия точной нижней и точной верхней граней в этой решетке.

Операция 0^1] взятия точной верхней грани легко сводится к задаче вычисления наиболее общего унификатора термов и может быть решена любым алгоритмом унификации [14]. Операция 0 г] взятия точной нижней грани соответствует задаче вычисления наименее общего шаблона термов (задаче антиунификации). Для ее решения в [8, 9] был предложен ряд алгоритмов. В [10] нами был разработан алгоритм антиунификации, имеющий почти линейную сложность. В нем было использовано представление подстановок в виде ациклических ориентированных графов.

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

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

Будем рассматривать конечное множество Z входных переменных, конечное множество X используемых переменных, бесконечное множество У вспомогательных переменных и конечное множество Т функциональных символов фиксированной валентности, в котором отдельно выделим множество констант С — функциональных символов нулевой валентности. Как было оговорено ранее, все подстановки определяются с точностью до переименования переменных из У. Также будем использовать бесконечное множество служебных переменных W = {Di, Пг, • • •}• В множестве Term(J; U Z U W, J-) выделим подмножество линейных термов LTerm(J; UZUW,/'):

1) всякая переменная и константа из У U Z U С является линейным термом;

2) если имеется функциональный символ /, / £ Т, валентности п, линейный терм t, t £ LTerm, и

список ¿1,..., , , • • •, Пг„ различных служебных переменных, не содержащихся в то выражение /(¿1, • • •, 5Пг4+1, • • •, Пг„) является линейным термом.

Тот единственный символ г из множества У и 2 и С, который содержится в линейном терме t, будем называть выделенным символом, и для обозначения этого факта будем использовать запись ¿(г).

Определение 1. Контекстом назовем всякую подстановку вида

{xl/Ui1,... ,хк_1/Пк_1,хк/г,хк+1/Пк+1,.. .,хп/П^}

из множества подстановок ЭиЬз^^тегтСУияиП',:'7) > обладающую следующими двумя свойствами: 1) любая переменная из множества УУ имеет не более одного вхождения в контекст; 2) £ Е ЬТегт(3;и

и^иУУ,^).

Множество контекстов, в каждом из которых используется свое подмножество Н" переменных из УУ и своя, не встречающаяся в других контекстах переменная у из У (если в линейном терме этого контекста г Е У), будем обозначать Соп^А', У, 2,

Контексты будем называть равными, если они совпадают с точностью до переименования служебных переменных из УУ. Поэтому в дальнейшем для обозначения контекста, имеющего линейный терм t, мы будем использовать запись {..., х/Ь,...}.

Определение 2. Два контекста^! и назовем согласованными, если существуют подстановки и /12 из зиьз^ия^тег^уия^) такие, что =

Определение 3. Всякое конечное или бесконечное множество (возможно, пустое) попарно согласованных контекстов из Сои 1(Х ,У, 2, Р) назовем метаконтекстом.

Обозначим ШС(Х, У, 2, Т) множество всевозможных попарно непересекающихся метаконтекстов. Два метаконтекста 51 и 52 назовем согласованными, если их объединение 5 = 51 и 52 состоит из попарно согласованных контекстов. В этом случае 5 также является метаконтекстом, т.е. принадлежит множеству МС (X ,У, 2, З7).

Композицию метаконтекстов 5 Е ШС(Х, У, 2, Т) и II Е МС (У,У, 2,^) определим следующим образом:

= {е | е = еч е' е 5, ^ е и, е е от^*,у, 2,?)}, а композицию метаконтекстов V Е ШС(Х, X, 2, Т) и 5 Е ШС(Х, У, 2,

™ = £ = /ЗеУ, ееСоп^Х,У,2,Т)}.

Для обеих композиций верно, что 5С/ Е ШС(Х, У, 2, Т) и У 5 Е ШС(Х, У, 2,

Отметим четыре очевидных свойства операций композиции, которые нам понадобятся в дальнейшем: для любых метаконтекстов 51, 52, 5 из ШС(Х, У, 2, Т) таких, что 51 и 52 согласованы, для любых Уь У2, V из МС (Х,Х,2,Т) и С/ь и2, и из МС (У,У, 2,?) верно:

(51и52)С/ = 51С/и52С/, у (51 и52) = У 51 иУ52, (5С/1)С/2 = 5(С/1С/2), (^1/2)5 = ^(^5). Введем бинарное отношение ^ на МС{Х,У,2,Т\.

5*1 ^ 52 311 Е МС{У,У,2,Т) : 5^ Э 52.

Утверждение 1. Отношение ^ задает на МС(Х ,У, 2, Т) частичный порядок.

Доказательство. Рефлексивность отношения ^ очевидна: для всякого метаконтекста 5 из множества МС(Д', У, 2, Т) верно, что 5^5.

Для обоснования транзитивности предположим 51 ^ 52 и 52 ^ 5з. Покажем, что 51 ^ 5з. По определению найдутся такие [/', С/", что

51 и' 2 52, 52С7" Э 53.

Пользуясь свойствами операции композиции, можно записать соотношение

51 и'и" Э 52С/" Э 53,

которое доказывает транзитивность отношения

Для обоснования антисимметричности предположим, что 51 ^ 52 и 52 ^ 51. Покажем, что 51 совпадает с 52. По определению найдутся [/', II" такие, что

51 и' Э 52, 52С/" Э 5Ь

Но тогда 51II'II" Э 51, откуда следует, что II' и II" — переименования и 51 = 52. Доказательство завершено.

Пополним множество ШС(Х, У, 2, Р) двумя новыми элементами _1_ и Т и потребуем, чтобы для любого метаконтекста 5 £ ШС(Х, У, 2, Р) выполнялись соотношения 1 ^ 5 и 5 ^ Т.

У т в е р ж д е н и е 2. Множество (X, У, 2, Т) = МС(Х, У, Т) и {_1_, Т} с частичным поряд-

ком ^ образует нижнюю полурешетку.

Операцию взятия точной нижней грани в этой решетке мы будем обозначать символом I}.. В дальнейшем в записи мы будем опускать для простоты символы _1_, Т в МС"*""1", но подразумевать под этим уже расширенное множество.

Доказательство. Пусть есть два метаконтекста 51 и 52 из ШС(Х, У,2,Р). Построим из них метаконтекст 5 и покажем, что он является точной нижней гранью 51 и 52, т.е. 5 ^ 51, 5 ^ 52, и для любого 5' такого, что 5' ^ 51, 5' ^ 52, верно 5' ^ 5.

Пусть в каком-нибудь из этих метаконтекстов, например в 51, содержится контекст

где г £ У и 2 и С. По определению этот контекст согласован со всеми элементами из 51. Возможны два случая:

1) контекст £ согласован также со всеми контекстами из 52, в этом случае он содержится и в 5;

2) контекст £ не согласован с некоторыми £1,.. из 52. Выберем произвольно один из них, например Пусть он имеет вид

& =

Тогда в 5 содержится контекст

£' = {...,*/*'(У), •••},

где терм — максимальный по длине линейный терм такой, что ¿(г) = ¿'(¿"(г)), tj(rj) =

= а переменная у £ У — новая переменная, еще не встречавшаяся в контекстах и метакон-

текстах. Заметим, что терм не зависит от выбора так как они все согласованы между собой.

В соответствии с построением получившийся метаконтекст 5 удовлетворяет всем свойствам точной нижней грани: 5 ^ 51, 5 ^ 52 и для любого 5' такого, что 5' ^ 51, 5' ^ 52, верно 5' ^ 5. Доказательство завершено.

Следствие 1. Для любых 5', 5" из МС(Х ,У, 2, Р) верно:

5' ^ 5" Ш-

Доказательство. Из описания точной нижней грани метаконтекстов следует, что для любого согласованного множества контекстов {£1,... ,£т} верно: {^1} ^ ... ^ = {£1} и ... и

Пусть теперь 5' = {£,..., и 5" = {£',..., £,"}• Но тогда

-Ц 5" = ({£} и ... и {&}) ^ ({£'} и ... и {£»}) = ({£} Ш ^ ({£'} ^ • • • ^ {£,"}) =

Доказательство завершено.

Теперь рассмотрим две решетки (МСс(Л'с) У, =4) и (МСь(Дх, У, 2^, Р), =<;). Элементы этих

решеток будем обозначать соответственно 5с и 5^.

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

{7 I 7 : xg —> XL},

а через А — множество функций

Содержательно решетки метаконтекстов (MCg, =4) и (МС^, соответствуют вызываемому (L от local) и вызывающему (G от global) модулям, а функции у и S соответствуют преобразованиям формальных результатов к фактическим на выходе из вызываемого модуля в вызывающий и фактических параметров к формальным на входе из вызывающего в вызываемый.

Также рассмотрим множество метаконтекстов МСа{Ха,У, Xg, , элементы которого будем обозначать Sx Заметим, что для любых у, Sl и 5 метаконтекст уSl$ £ МСо(Хо,У, Х&, IF). Положим у= Т, если Sl = Т, и уSl$ = -L, если Sl = -L, для любых у и S. Можно определить композицию метаконтекстов Sx G МС о(Хо,У, Х&, IF) и So G МС Zq,T) как множество всех попарных композиций элементов этих метаконтекстов, которые являются контекстами. Но в этом случае мы не можем утверждать, что SxSq будет метаконтекстом. Поэтому будем пользоваться другой композицией о, которую определим так:

Sx ° Sg =Meie = ce', CgSx, е eSG, ¿eCont(x,y,z,f)}.

Если Sq или Sx равны особым элементам Т или 1, то и композиция будет равна Т или _L соответственно, вне зависимости от значения второй подстановки. В то же время положим _LoT = To_L = T.

Утверждение 3. Для любых метаконтекстов из МСа{Ха,У, Zq, , для любых

метаконтекстов sj2' из MCL(XL,y, Zl,J-), для любых функций согласования у из Г и 5 из А

верно:

(у(<£> ^ S{l2))S) о (5g> -Ц sg>) =^,je{1,2} ((yS^S) о <$>). Доказательство. Рассмотрим произвольный контекст который входит в множество

(7(5^' JJ- S^)5) о (5^' JJ- Sq^). Покажем, что он входит и в -U-j,jg{i,2} ((7Sl^S) о 5^').

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

1. Существуют контексты ^ £ JJ- Sj2' и ^g £ JJ- такие, что £ = ут-е- £ согласован со всеми элементами этого множества.

В зависимости от того, по какому варианту того же утверждения в метаконтексте JJ- sj2' появился контекст снова возможны два варианта.

1.1. G U Sj*\ т-е- согласован со всеми контекстами из и

В этом случае нам важно, по какому варианту того же утверждения в метаконтексте JJ-появился контекст ^g- Снова возможны два варианта.

1.1.1. Если £ U т.е. ^g согласован со всеми контекстами из и то контекст

I^lS^g содержится в множестве Uij^sj^) о 5^'), где i = 1,2, j = 1,2, и согласован со всеми элементами этого множества, т.е. принадлежит правой части равенства.

1.1.2. Если ^g получается из несогласованных множеств контекстов (£g)i> • • • > (£<?)р из и

(£g)i> • • • > из то в u((7sl^<5) о где г = 1,2, j = 1,2, входят несогласованные мно-

i,j

жества контекстов • • , из которых получается контекст

1.2. получается из несогласованных множеств контекстов (£l)i> • • • > (£ь)р из и (£l)i>---

... , (£ь)д из sj2'. В этом случае ^ содержит в себе переменную у из множества У, и поэтому £ = у= 7£l> т-е- значение £ не зависит от £g (который можно выбрать произвольным образом).

Но тогда £ получается из содержащихся в U^T^l'^) 0 ^g')' где ^ = 1,2, j = 1,2, несогласованных

i,j

множеств контекстов 7(£l)i<^g, • • •, и • • •,

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

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

Покажем теперь, что если некоторый контекст входит в правую часть равенства, то он входит

и в левую. Если контекст согласован со всеми контекстами из U^T^l'^) где -i = 1, 2, j = 1, 2,

i,j

то он, очевидно, должен входить и в левую часть.

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

В зависимости от того, каким из метаконтекстов ((7S^5) о 5g'), где г = 1,2, j = 1,2, принадлежат эти множества, контекст получается в разных подслучаях случаев 1 и 2 первой части доказательства.

Утверждение доказано.

Следствие 2. Для любых метаконтекстов из MCg{Xq, У, для любых

метаконтекстов S{LI], M, из МСь(Хь,У, -2х> , для любых функций согласования у из Г и

S из А верно:

mi S{Liy)S) о Wj S{Jy) ((7S^S) о s(/>).

Следствие 3 (законы левой и правой дистрибутивности). Пусть Sq, S'g, Sq — произвольные метаконтексты из семейства МСо(Хо,У, 2q, Т) и Sl, S'l, S" — произвольные метаконтексты из семейства МСь(Хь,У, -2х> . Тогда для любых функций согласования параметров у из Г и 5 из А справедливы соотношения

(7SLS) о (S'G -Ц Sq) = ((ySLS) о S'L) -Ц ((ySLS) о S'[), (y(S'L ^ S'[)S) о SG = ((7 S'LS) о S g) -U ((7 S'[5) о SG).

Подчеркнем, что выполнимость законов дистрибутивности для метаконтекстов объясняется тем, что в метаконтекстах (в отличие от подстановок) допускается вхождение сколь угодно большого числа различных связок x/t для одной и той же выходной переменной, однако все связки применяются независимо друг от друга.

Определение 4. Метаконтекст S назовем метаподстановкой, если выполняются следующие требования:

1) для любого контекста

= W/Пъ • • ,xk_i/Uk_i,xk/t'l,xk+i/Uk+i,.. .,£„/„} из 5 и для любого номера I ф к в S существует контекст

= {Xl/Ui,. . .,Ж;_1/П;_1,Ж;Д",Ж;+1/П;+1, . . .,£„/„};

2) для любого номера к и для любого контекста

е2 = {• • • , x/fh (.../,,(!,..., 4, Пг + 1, ..., Пт) ...),.. .}

из 5 и для любого номера j ф i в S существует контекст

$ = {. . . , x/fh (. (!,..., , t'i, , + !, ..., Dm) ...),.. .}.

Метаконтексты Т и _L также будем считать метаподстановками. Множество метаподстановок будем обозначать MS(A', У, 2, Т). Легко убедиться в том, что не каждый метаконтекст является метаподстановкой, т.е. MS(A', У, 2, Т) С ШС(Х, У, 2, Т). Однако при этом справедливо следующее утверждение.

Утверждение 4. Для любых S', S" из MS(X, У, 2, Т) метаконтекст S' JJ- S" является метаподстановкой.

Последнее утверждение легко обосновывается непосредственно на основании определения мета-подстановки.

Следствие 4. Множество MS(X, У, 2, Т) с отношением предпорядка ^ образует подрешетку решетки (МС(Х, У, 2, Т), =4).

Следствие 5. Пусть задана произвольная пара метаподстановок So и Sl из множеств МЗа{Хо,У, и MSl{Xl, У, -2х> соответственно. Тогда для любых функций согласования

у из Г и S из А метаконтекст

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

СПИСОК ЛИТЕРАТУРЫ

1. Floyd R. W. Assigning meaning to programs // Mathematical Aspects of Computer Science. 1967. 19. P. 19-32.

2. Ho are C. A. R. An axiomatic basis for computer programming // Communications of the ACM. 1969. 12. N 10. P. 576-580.

3. Apt K., Olderog E.-R. Verification of Sequential and Concurrent Programs. Berlin: Springer-Verlag, 1997.

4. Clarke E.M., Grumberg O., Peled D. Model checking. Cambridge, MA: The M.I.T. Press, 1999.

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

6. Nielson F., Nielson H.R., Hankin С. Principles of Program Analysis. Berlin: Springer-Verlag, 1999.

7. Eder E. Properties of substitutions and unifications // J. of Symb. Comput. 1985. 1. N 1. P. 31-46.

8. Lassez J.L.,Maher M.J.,Marriot K. Unification revisited //Foundations of Deductive Databases and Logic Programming. Los Altos: Morgann Kaufmann, 1988.

9. Palamidessi C. Algebraic properties of idempotent substitutions // Lecture Notes in Computer Science. 1990. 443. P. 386-399.

10. Захаров В.А., Костылев E.B. Быстрые алгоритмы антиунификации и их применение при анализе программ // Материалы XIII Междунар. школы-семинара "Синтез и сложность управляющих схем". Ч. 1. М., 2002. С. 76-81.

11. Cousot P., Сои sot R. Automatic synthesis of optimal invariant assertions: mathematical foundations // SIGPLAN Notices. 1977. 12. N 8. P. 1-12.

12. Emelianov P. G. Analysis of equality relations: proofs and examples // Joint bulletin of the Novosibirsk Computing Center and A. P. Ershov Institute of Informatics Systems. Issue 11. Novosibirsk: NCC Publisher, 1999. P. 15-38.

13. Reps T. Program analysis via graph reachability // Proc. of ILPS '97: Int. Logic Progr. Symp. Cambridge, MA: The M.I.T. Press, 1997. P. 5-19.

14. Кривый С. JI. Проблема унификации в эквациональных теориях // Кибернетика и системный анализ. 1997. № 6. С. 150-180.

15. Костылев Е.В., Захаров В.А. Об одном обобщении подстановок применительно к задаче синтеза инвариантов программ // Материалы VIII Междунар. школы-семинара "Дискретная математика и ее приложения". М., 2004. С. 134-137.

Поступила в редакцию 03.05.05