Об одной полугрупповой модели последовательных программ, определяемой при помощи двухленточных автоматов

УДК 519.71

ОБ ОДНОЙ ПОЛУГРУППОВОЙ МОДЕЛИ ПОСЛЕДОВАТЕЛЬНЫХ ПРОГРАММ, ОПРЕДЕЛЯЕМОЙ ПРИ ПОМОЩИ ДВУХЛЕНТОЧНЫХ АВТОМАТОВ

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

Одной из таких моделей является пропозициональная модель программ (см. [1]); семантика программ в этой модели определяется на основе динамических шкал Крипке [2] или полугрупп [з, 4]. Полугрупповые модели программ интересны тем, что в терминах полугрупповых тождеств удобно описывать алгебраические свойства программных операторов, которые необходимо учитывать при проверке эквивалентности программ. Если в процессе работы любой программы ни одно состояние данных не вычисляется дважды (все вычисления являются строго прогрессивными), то семантика таких программ может быть описана посредством детерминированных двухленточных автоматов [3]. В серии работ [1, 3, 5-7] показано, что этот способ описания семантик программ удобен для построения алгоритмов проверки эквивалентности программ. В связи с этим возникает следующая задача: для полугруппы программных операторов с заданным множеством определяющих соотношений (тождеств) выяснить, существует ли двухленточный детерминированный автомат, проверяющий равенство слов в этой полугруппе. В настоящей работе проведено полное исследование этой задачи для полугрупп, определяемых тождествами двух видов: аЬ = Ьа (закон коммутативности) и аЬ = Ь (закон поглощения).

Московский

государственный

университет

им. М.В. Ломоносова

e-mail:

zakh@cs.msu.su

В.В. ПОДЫМОВ В. А. ЗАХАРОВ

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

Ключевые слова: программа, эквивалентность, полугруппа операторов, перестановочные операторы, поглощаемые операторы, двухленточный автомат.

Серия История. Политология. Экономика. Информатика. 2010. № 7 (78). Выпуск 1 4/1

2. Полугруппы операторов. Мы будем рассматривать полугруппы

¥ = ,X,о^ с множеством образующих А = {ааг} . Элементы этого множества

можно рассматривать как программные операторы. Нейтральному элементу полугруппы X отвечает пустой оператор, а полугрупповая операция о соответствует последовательной композиции операторов. Конечную последовательность операторов будем называть А - цепочкой. Множество всех А -цепочек обозначим А * . Для каждой А -цепочки к = а1а2...ак запись Щ будет обозначать длину к цепочки к, запись

к [г] будет обозначать г-ый член а1 этой цепочки, а запись к |>(. будет обозначать суффикс аьа1+1...ак этой цепочки, начинающийся г-ым ее членом. Значением указанной А -цепочки является элемент полугруппы [к]¥ = а1 о а2 о... о ак. В полугруппе ¥ определим бинарное отношение Р : будем полагать, что [Щ ]¥ Р [к2 ]¥ в том и только том случае, когда существует А -цепочка к , для которой верно равенство [к1к]¥ = [к2]Р. Если отношение Р является отношением частичного порядка, то такую полугруппу будем называть упорядоченной.

Наиболее распространенным способом задания полугрупп служат определяющие соотношения (тождества). В свете операторной интерпретации полугрупп мы будем рассматривать системы тождеств специального вида, отражающие некоторые алгебраические свойства композиций программных операторов. С каждым программным оператором а ассоциируются два множества переменных и$е(а) и Бе/(а) : первое множество состоит из всех тех переменных, значения которых должны быть определены для успешного выполнения оператора а, а второе - из всех тех переменных, значения которых изменяются в результате выполнения а . Например, и$е(у = х + +) = {х}, Бе/(у = х + +) = {х, у}. В том случае, если верны равенства и$е(а) пБе/(Ь) = 0, Бе/(а) п и$е(Ь) = 0, Бе/(а) п Бе/(Ь) = 0, результат выполнения операторов а и Ь не зависит от того порядка, в котором они выполняются. Такие операторы называются коммутативными, и это свойство задается тождеством аЬ = Ьа. В том случае, если Бе/(а) с Бе/(Ь), Бе/(а) п изе(Ь) = 0 , последовательное выполнение операторов а и Ь дает такой же результат, что и выполнение оператора Ь . Тогда говорят, что оператор Ь поглощает оператор а, и это свойство задается тождеством аЬ = Ь . Нас интересуют полугруппы операторов, определяемые системами тождеств коммутативности и поглощения.

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

Двухленточной детерминированной машиной (2^М) называется система

Б = ^ А, Ql, Q2, д0, Qaccept, <р^, состоящая из алфавита А , двух непересекающихся множеств состояний Ql и Q2, начального состояния д0, д0 е Ql и Q2, множества допускающих состояний , С а и а, и функции переходов

Серия История. Политология. Экономика. Информатика. 2010. № 7 (78). Выпуск 1 4/1

р : ^ и Q2) х А ^ Q1 и Q2. Машина Б прочитывает пару А -цепочек и w2, записанных на лентах 1 и 2. Когда машина Б пребывает во внутреннем состоянии д, д е Qа ,а е {1,2}, она прочитывает очередной оператор х (если таковой есть) цепочки , помещенной на ленте а, и переходит в состояние д' = р(д, х). Пара А -цепочек ^,ш2} допускается машиной Б, если она прочитывает ш1 и ш2 и оказывается по прочтении этих слов в допускающем состоянии. Более формально поведение машины Б определяется следующим образом.

Прогоном 2-БМ Б называется конечная или бесконечная последовательность пар а = (д1,х"),(д2,х2),...,(д{,х1),..., удовлетворяющая соотношениям д1 е Q1 и Q2,

х е А, и д1+1 = р(д1, х) для всех 1, г > 1. Если эта последовательность оканчивается парой (дп, хп), то говорят, что прогон а начинается в состоянии дх и достигает состояния дп+1 = р(дп, х) . Для а е{1,2} рассмотрим подпоследовательность аа = (д^,х ),(д¡2,хч ),... ,состоящую из всех тех пар (д{ ,хи ) последовательности а , которые удовлетворяют условию е Qа. Тогда а -проекцией прогона а будем называть слово а[а] = х( х( .... Функцию переходов 2-БМ Б можно распространить на

множество пар слов А * х А * следующим образом: р* (д, ш1, ш2 ) = д', если существует прогон а машины Б, который начинается в состоянии д, достигает состояния д', и при этом а[1] = ш1, а[2] = ш2; в противном случае значение р * (д, ш1, ш2) неопределе-

но. Каждая 2-БМ Б = ^А,Q1,Q2,д0,Qaccept,р порождает бинарное отношение Еб = {(ш1,ш^--р* (Чо , ш1, ш2 )е Qaccepí}. Будем говорить, что 2-БМ Б описывает полугруппу ¥, если для любой пары Л*-цепочек к и к2 имеет место соотношение

[к1 ]¥ = [к2 1? ^ {к1, кт) е ЕБ

Теорема 1. Полугруппа ¥ может быть описана некоторой 2^М тогда и только тогда, когда ¥ - упорядоченная полугруппа.

Доказательство (^) Для любой полугруппы ¥ отношение достижимости Р¥ рефлексивно и транзитивно. Если бы оно не было антисимметричным, то нашлась бы такая пара Л-цепочек к", к" , что к "ф X, [ к 'к" ]¥ =[ к' ]¥. Поскольку полугруппу ¥ описывает 2-БМ Б, в этом случае нашлась бы пара допускающих состояний д ” = р* (д0, к ”, к ”) и д " = р* (д0, к ”, к 'к" ). Но это означало бы, что д ” е Q2 и, следовательно, значение р* (д1, к ” к" , к ”) неопределено, вопреки тому, что [ к ” к" ]¥ =[ к ” ]¥

(^) Для упорядоченной полугруппы ¥ = (Б, X, ^ рассмотрим 2-БМ

Б = (А ^ ^ д0, рр , где й ^): ^ я” е ^ я' Р "} , ° = (Б х Б)\^ ,

д0 = (я0,я0), Qaccept = {(я,я):я е Б} и функция переходов определена соотношениями р((я',я"),а) = (я 'о а,я") , если (я',я'') е Q1, и р((я",я "),а) = (я",я "оа)) , если (я ",я ") е Q2  Какова бы ни была пара Л-цепочек к1, к2,, либо есть такой префикс к" цепочки к , что р*(д0,к",к2) определено, либо есть такой префикс к'2 цепочки к2, что р* (д0, к", к2) определено. Предположим, что [к" ]¥ = [к2 ]¥, к = к"а1а2...ак, и р*(д0,к",к2) = д'. Отношение достижимости Р¥ является частичным порядком, и

Серия История. Политология. Экономика. Информатика. 2010. № 7 (78). Выпуск 14/1

поэтому \h\ a1a2...ai]F pF \h2]F выполняется для всех i,X < i < k. Индукцией по i, можно убедиться, что р* (q0, h"axa2.. .at, h2) = ([h"axa2.. .at ]F, [h2 ]F ) e Qx для всех i,\ < i < k. Поэтому значение р* (q0, h1, h2) определено и равно (\h ]F, \h2 ]F ). Как видно из описания D, достигнутое состояние р* (q0, h1, h2) является допускающим. Теорема доказана.

4. Полугруппы коммутативных и поглощаемых операторов. Пусть на множестве операторов A заданы два бинарных отношения С0 с A х A, R0 с A х A .

Будем рассматривать полугруппы F(С0,R0) определяемые следующими двумя множествами тождеств: {ab = ba : (a, b) e C0} и {ab = b : (a, b) e R0}. Обозначим символом С рефлексивно-симметричное замыкание отношения С0, а символом R - транзитивное замыкание отношения R0. Непосредственно из приведенных определений следует

Утверждение ь [hi ]f(С0,R0) = \h2 ]F(C0R0) ^[h1 ]F(C,R) = \h2 ]F(CR) .

В дальнейшем для краткости запись \h] будет обозначать элемент полугруппы F(С, R), порожденный A-цепочкой h . Введем ряд вспомогательных конструкций. Для A-цепочки h и оператора b, запись N(b, h) будет обозначать число вхождений

оператора b в цепочку h. Воспользуемся записью \ —(а,ь’1) > с h2 для обозначения отношения между A-цепочками, которое выполняется, если

hx = h'abh" , h2 = h' bah", |h ' | = i - 2 , т.е. h2 получается из \ применением тождества

коммутативности ab = ba . Аналогично, запись hx ——’') > r h2 в случае hx = h'abh", h2 = h' bh", |h ' | = i - 2 , будет обозначать отношение применения тождества поглощения ab = b. Выводом равенства \#" ] = \# " ] назовем такую конечную последовательность A-цепочек h0,hx,...,hn, в которой h0 = H', hn = H", и при этом для любого k ,Х < k < n, выполняется одно из трех отношений:

• hk-Х ——^ >с hk для некоторого i, 2 < i < |hk-J , и пары {a, b) e С,

• hk-x —(a’h’l) >r hk для некоторого i, 2 < i < |hk-J , и пары {a, b) e R ,

• hk —(a’b’1 — >с hk-x для некоторого i, 2 < i < |hk |, и пары {a, b) e R .

Очевидно, каждое равенство \H ] = \H ] имеет хотя бы один вывод. Нетрудно убедиться, что функция N(b, h) обладает следующими свойствами:

1. N(b, h' h") = N(b, h ') + N(b, h");

2. если h ' ———>ch ", то N(b, h') = N(b, h") ;

3. если h' ——>r h", то N(b,h') = N(b,h") + Х в случае b = x, и N(b, h ) = N(b, h ) иначе.

Основным результатом настоящей статьи является

Теорема 2. Полугруппа F(C0,R0) упорядочена тогда и только тогда, когда СnR = 0.

Доказательство. (^) Если (a, b) e С n R , то последовательность b, ab, ba - это вывод равенства \b] = \ba], свидетельствующего о неупорядоченности полугруппы.

(^) Предположим, что для некоторой пары Л-цепочек H', H" имеет место равенство [HH"] = [н"]. Покажем, что для любого оператора b верно равенство N(b, H" ) = 0 . Отсюда будет следовать, что H" является пустой цепочкой, а полугруппа F(C0,R0) является упорядоченной. Для обоснования указанного равенства нам потребуется вспомогательная лемма, устанавливающая специальный инвариант всякого вывода в полугруппе F(C, R). Введем следующие обозначения. Рассмотрим

произвольнуюЛ-цепочку h = x1x2...xm и оператор b . Тогда будем использовать:

• запись right(b, h) для обозначения самой правой позиции j в цепочке h, в которой располагается оператор, поглощающий b, т.е. right(b, h) = max {(j : (b, x^ є R)},

• запись succ(b, h) для обозначения числа вхождений оператора b в цепочку

Хright(b,h)+1 . * ' Xm i

т.е. succ(b, h) = N(b, h \>_right(bh)+1) .

Лемма 1. Если C n R = 0, [ho ] = [h ] и значение right(b,h0) определено, то succ(b,h0) = succ(b,hn).

Доказательство леммы. Рассмотрим произвольный вывод h0,h1,...,hn равенства [h0 ] = [hn ] и покажем, что на любом шаге этого вывода значения succ(b, ht) и succ(b, ht+1) одинаковы.

Предположим, что значение succ(b, ht) определено и ht ——c—) >с hi+1. Значит, h = x1...Xj-2acxj+1...xm и h+1 = x1...Xj_2caxj+1.xm . Очевидно, что если j < right(b,ht) или right(b, h ) < j -1, то расположение операторов в цепочке ht+1 относительно позиции right (b, h ) не изменилось, и поэтому succ(b, ht) = succ(b, ht+1). Если right(b, h ) = j -1, то оператор a, коммутирующий с оператором с на основании тождества ac = ca является самым правым оператором цепочки hi , поглощающим рассматриваемый оператор b . Вследствие равенства C n R = 0 , оператор b не может совпадать с с. Поэтому число succ(b, ht+1) операторов b , расположенных в цепочке h+1 справа от оператора а, остается равным succ(b, ht) . Если right(b, ht) = j, то оператор с оказывается самым правым оператором цепочки hi , поглощающим оператор b . Вследствие равенства C n R = 0 , оператор b не может совпадать с a. В том случае, если оператор а не поглощает b , верно right(b, h+1) = j -1, а иначе выполняется right(b, hi+1) = j. Но и в том и в другом случае число succ(b, ht+1) остается равным succ(b, hi ) .

Предположим, что значение succ(b, ht) определено и ht ——— > Rhi+1 (случай hi+1 ——,j) >r h рассматривается аналогично). Это означает, что

h = x1...xj-2acxj+1.xm и h+1 = x1...xj-2cxj+1.xm . Если j < right(b,ht), то применение тождества поглощения ac = c не затрагивает операторы цепочки hi , располагающиеся в позиции right (b, ht) и правее. Поэтому значения succ(b, ht) и succ(b, ht+1) остаются равными. Случай j = right(b, h ) +1, когда оператор а является самым правым оператором цепочки hi , поглощающим рассматриваемый оператор b , невозможен, поскольку отношение поглощения R транзитивно замкнуто, и оператор с в этом случае

Серия История. Политология. Экономика. Информатика. 2010. № 7 (78). Выпуск 14/1

также должен поглощать b . Наконец, рассмотрим случай right(b, ht) +1 < j, когда самый правый оператор цепочки hi , поглощающий оператор b , расположен слева от оператора а. Тогда оператор с не может поглощать b , и поэтому оператор b не может совпадать с а. Так как цепочка ht+1 получается из ht удалением одного лишь оператора а, величины succ(b, ht) и succ(b, ht+1) будут равны. Лемма доказана.

Так как отношение C рефлексивно, а отношение R транзитивно, пустота пересечения C n R означает, что R является отношением строгого частичного порядка

на конечном множестве операторов А. Тогда множество A всех операторов, содержащихся в А-цепочке H H ", разбивается на конечное число слоев L0, L1,..., Lm следующим образом:

L0 - подмножество всех максимальных элементов множества A относительно порядка R ;

для каждого к, 1 < к < m , Lk - подмножество всех максимальных элементов

Используя лемму 1, завершим доказательство теоремы 2, показав индукцией по номеру слоя к, что для любого оператора Ь, Ь є Ьк, верно равенство N(Ь, Н" ) = 0 .

Базис индукции (к = 0). Из перечисленных выше свойств функции N(Ь, к) видно, что, каков бы ни был оператор Ь, значение этой функции изменяется после применения некоторого тождества к цепочке к только тогда, когда в к содержится хотя бы один оператор, поглощающий Ь . Поэтому для любого оператора Ь, Ь є Ь0, и для произвольного вывода к0,кх,...,кп равенства [Н Н" ] = [Н" ] будут выполняться равенства N(Ь,к0) = N(Ь,к1) =... = N(Ь,кп).

Значит, N(b, H H ) = N(b, H ) + N(b, H ) = N(b, H ) и, следовательно,

N (b, H '' ) = 0.

Индуктивный переход (к ^ к +1). Предположим, что для любого оператора

b, b e Lk+x. Так как Х < k , в A-цепочке HH" есть операторы, поглощающие b , и поэтому значение right (b, H H" ) определено. Однако на основании индуктивного предположения ни один из этих операторов не содержится в цепочке H , и поэтому right(b, HH") < |H'|. Пусть right(b, HH" ) = l и H = H' |a/+x. Тогда, согласно лемме 1 справедливы равенства N(b, HH") = succ(b, HH") = succ(b, H') = N(b, H), из которых следует N(b, H ) = 0 .

Этим завершается обоснование индуктивного перехода и доказательство теоремы 2.

5. Заключение. Из теорем 1 и 2 вытекает следующее утверждение.

Теорема 3. Полугруппа F(С0,R0), порожденная системой тождеств коммутативности {ab = ba : (a, b) e C0} и поглощения {ab = b : (a, b) e R0}, описывается двухленточной детерминированной машиной в том и только том случае, когда рефлек-

к-1

множества A \ U Li относительно порядка R .

i=0

к

верно равенство N(c, H ) = 0 . Рассмотрим произвольный оператор

сивно-симметричное замыкание С отношения коммутативности операторов С0 и транзитивное замыкание Я отношения поглощения операторов Я0 не пересекаются.

Если полугруппа операторов ¥(С0,Я0) оказывается упорядоченной, то, как

показано в работах [3,8], проблема эквивалентности программ, семантика операторов которых определяется тождествами этой полугруппы, является алгоритмически разрешимой [3] и принадлежит классу сложности ЫР. Более того, для некоторых классов моделей программ, операторы которых подчиняются законам коммутативности и подавления, удалось построить алгоритмы полиномиальной сложности, разрешающие проблему эквивалентности программ в этих моделях (см. [1,7-9]). Заслуживает внимания гипотеза о том, что для любой системы тождеств коммутативности и перестановочности, удовлетворяющих соотношению С п Я = 0, проблема эквивалентности программ, семантика операторов которых определяется полугруппой ¥(С0,Я0), проблема эквивалентности программ в этой модели разрешима за время,

полиномиальное относительно размеров программ. Для разрешения этой гипотезы требуется провести исследование устройства двухленточных машин, описывающих упорядоченные полугруппы операторов ¥(С0,Я0). Результаты этих исследований

будут опубликованы в последующих статьях.

Проанализируем теперь, насколько задача проверки эквивалентности программ усложняется в том случае, когда С п Я Ф 0 . Предположим, что для некоторой пары различных операторов а и Ь выполняется включение (а, Ь) е С п Я . Это означает, что операторы а и Ь являются перестановочными, и при этом Ь поглощает оператор а. Но тогда множества переменных, определяемых этими операторами, обязаны удовлетворять двум соотношениям Бв/(а) п Бв/(Ь) = 0 и Бв/(а) с Бв/(Ь) . Это возможно лишь в том случае, когда Бв/(а) = 0 . Последнее означает, что оператор не совершает никаких изменений данных, т.е. он является бесполезным оператором. Бесполезные операторы такого рода легко распознаются и не затрудняют анализ программ.

Пересечение С п Я может оказаться непустым также и потому, что для некоторого оператора а выполняется соотношение Бв/(а) п и$в(а) = 0 , вследствие которого (а, а) е С п Я. Наличие в программах такого оператора может существенно

затруднить их анализ в том случае, если найдется еще один оператор Ь , который подавляется оператором а. Как было установлено в работе [10], проверка эквивалентности программ, операторы а и Ь которых удовлетворяют двум тождествам Ьа = а и аа = а, является РБРЛСЕ-трудной задачей.

1. Захаров В.А. Быстрые алгоритмы разрешения эквивалентности операторных программ на уравновешенных шкалах // Математические вопросы кибернетики, вып. 7. -М.:Наука. - 1998. - с. 303-324.

2. Harel D. Dynamic logics // Handbook of Philosophical Logics, D.Gabbay and F.Guenthner (eds.). - 1984. - p. 497-604.

3. Глушков В.М., Летичевский А.А. Теория дискретных преобразователей // Избранные вопросы алгебры и логики: сб. статей. - Новосибирск: Наука, 1973. - с. 5-39.

4. Подловченко Р.И. Полугрупповые модели программ // Программирование. - 1981. -N 4. - с. 3-13.

5. Захаров В.А. Проверка эквивалентности программ при помощи двухленточных автоматов. I // Кибернетика и системный анализ. - 2010.- N 4.

6. Zakharov V.A. An efficient and unified approach to the decidability of equivalence of pro-positional programs // Lecture Notes in Computer Science. - 1998. - v. 1443. - p. 247-259.

Литература

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

8. Захаров В.А. Проверка эквивалентности программ при помощи двухленточных автоматов. II // Кибернетика и системный анализ. - 2010.- N 5.

9. Щербина В.Л., Захаров В.А. Эффективные алгоритмы проверки эквивалентности программ в моделях, связанных с обработкой прерываний // Вестник Московского университета, сер. 15, Вычислительная математика и кибернетика. - 2008, N 1.

10. Podlovchenko R., Rusakov D., Zakharov V. On the equivalence problem for programs with mode switching // Lecture Notes in Computer Science. - 2006. - v. 3845. - p. 351-352.

ON A SEMIGROUP MODEL OF SEQUENTIAL PROGRAMS SPECIFIED BY MEANS OF TWO-TAPE AUTOMATA

In this paper the authors study the semigroups of program statements subjected to the laws of commutativity and cancellation. The semigroups of such kind appear in the verification problems for proposi-tional models of sequential programs. These models of programs can be easy constructed based on the outcome of a light-weight data-flow analysis of computer programs. The main results of the paper are necessary and sufficient conditions for the semigroups under consideration to be specified by two-tape one-way deterministic automata. Relying on this theorem the authors estimated the complexity of equivalence checking problem for sequential programs.

Key words: program, equivalence-checking, semigroup of program statements, commutative statements, absorbed statements, two-tape automata.

V.V. PODYMOV V.A. ZAKHAROV

Lomonosov Moscow State University

e-mail: zakh@ cs.msu.su