О верификации конечных параметризованных моделей распределенных программ

УДК 519.71

О ВЕРИФИКАЦИИ КОНЕЧНЫХ ПАРАМЕТРИЗОВАННЫХ МОДЕЛЕЙ РАСПРЕДЕЛЕННЫХ ПРОГРАММ

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

Ключевые слова: программа, система переходов, спецификация, темпоральная логика, верификация, булева функция, OBDD, ОТ-полная задача.

Одной из актуальных задач системного программирования является проверка правильности сложных программ. Каждое средство верификации программ создается на основе специальной математической теории, в рамках которой определяются модели программ, язык описания требований правильного поведения программ (спецификации), а также алгоритмы проверки выполнимости этих требований для моделей программ. Наиболее часто в качестве языка спецификаций используется язык формальной логики, а в роли модели проверяемой программы выступает одна из логических интерпретаций (моделей) этого языка, в которой представлены всевозможные вычисления этой программы. Тогда задача проверки правильности поведения программы сводится к хорошо известной задаче математической логики — проверке выполнимости заданной логической формулы в заданной модели (model checking, верификация моделей программ). Для многих классов программ, вычисления которых проявляются во взаимодействии их компонентов между собой и с окружающей средой, верификацию моделей программ наиболее удобно проводить на основе темпоральных логик. Моделью программы в этом случае является размеченная система переходов (модель Крипке), в состояниях которой дается оценка осуществимости событий, и задача верификации программы сводится к задаче проверки выполнимости заданной темпоральной формулы на заданной системе переходов. Хорошо известны эффективные алгоритмы проверки выполнимости темпоральных формул в конечных моделях (см. [1]), сложность которых пропорциональна размеру модели. На основе этих алгоритмов были созданы системы верификации программ nuSMV [2], SPIN [3] и др., применяемые при разработке программного обеспечения и микроэлектронных схем.

Но существуют и такие распределенные программные системы, для описания которых приходится использовать бесконечные семейства моделей со сколь угодно большим числом состояний. Семейства моделей программ такого рода называются параметризованными моделями программ. Параметром модели обычно служит какая-либо характеристика программы, например, количество процессов, емкость каналов связи, максимальный размер данных и т. п. Как было показано в статье [4] , в общем случае задача верификации параметризованных моделей программ алгоритмически неразрешима. Тем не менее, для отдельных классов распределенных систем, применяемых на практике, удалось разработать специальные методы, позволяющие проводить верификацию соответствующих параметризованных моделей программ. К числу основных методов верификации параметризованных моделей распределенных программ относятся метод выявления симметрии [5-9], метод абстракции [10-12], метод инвариантов [13-15]. При помощи этих методов удалось успешно проверить правильность некоторых распределенных алгоритмов и сетевых протоколов.

П.Е. БУЛЫЧЕВ ВА ЗАХАРОВ

Московский

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

университет

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

e-mail: zakh@cs.msu.su

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

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

1) для любой связной подсети существовал набор значений параметров, на котором значение true принимают только те булевы функции, которые приписаны каналам связи этой подсети;

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

Для выбора подходящей разметки можно применить алгоритмы теории тестирования управляющих систем [16]. Как только указанная разметка каналов связи сформирована, мы получаем конечную параметризованную модель распределенной системы, для которой можем проверять выполнимость требования неизбежной доставки сообщений.

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

Вначале мы коротко напомним основные понятия темпоральной логики деревьев вычислений CTL, затем введем параметризованные модели программ (модели Крипке), и в завершении опишем символьный алгоритм верификации конечных параметризованных моделей Крипке и оценим его сложность.

1. Темпоральная логика CTL. Темпоральная логика деревьев вычислений (Computational Tree Logic, CTL) была предложена для формального описания требований корректного поведения, которые предъявляются к реагирующим вычислительным системам. К числу систем такого рода относятся интерактивные, многонитевые, распределенные программы, встроенные информационные системы. Реагирующим системам присущи две характерные особенности — недетерминизм и незавершаемость вычислений. Поэтому поведение реагирующей системы определяется множеством ее бесконечных вычислений, организованном в виде дерева. В каждом состоянии вычисления могут быть зарегистрированы те или иные события, например, отправление запроса, открытие доступа к ресурсу, изменение значения переменной и др. Каждому из таких событий сопоставляется атомарная формула, принимающая логическое значение true только в том случае, когда по ходу вычисления реагирующей системы осуществляется соответствующее событие. Формулы CTL описывают причинноследственные зависимости между событиями, происходящими в различные моменты времени в процессе функционирования реагирующей системы. При помощи формул CTL можно задавать требования корректности, определяющие желаемое поведение системы, а затем для заданного формального описания (программы, схемы, спецификации и др.) реагирующей системы проверять, используя методы, алгоритмы и инструментальные средства верификации моделей программ, выполнимость этих требований. Строгое определение синтаксиса и семантики CTL таково.

Пусть задано множество A = {a1,a2,...,anатомарных формул (событий). Формулой CTL называется всякое выражение р, которое либо является атомарной формулой, либо является составной формулой одного из перечисленных ниже видов:

— / , /1 л/2, /1 v/2, VX/ , 3Х/ , VF/ , 3F/ , VG/ , 3G/ , V(/1U/2), 3(/1U/2) ,

где /,/1,/2 — формулы CTL. Логические связки — (отрицание), л (конъюнкция) и v (дизъюнкция) имеют тот же смысл, что и в классической логике. Темпоральные операторы X («в следующий момент времени», neXt_time), F («когда-нибудь», some time in Future), G («всегда», Globally) и U («до тех пор пока», Until) служат для описания осуществимости событий на протяжении бесконечного вычисления реагирующей системы. Кванторы V и 3 указывают, относится ли утверждение об осуществимости событий во времени ко всем вычислениям системы или только к одному из вычислений. Например, формула V(—(a1 лa2)U(3Fa0))утверждает, что в каждом вычислении системы события a1 и а2 не могут осуществляться совместно, до тех пор пока не будет достигнуто некоторое состояние, начиная из которого вычисление может быть продолжено таким образом, что рано или поздно осуществится событие а0.

Семантика (интерпретация) формул CTL определяется на основе размеченных систем переходов (моделей Крипке). Моделью Крипке называется четверка M = (S, S0, R, L), где S — непустое конечное множество состояний, S0 — подмножество начальных состояний, R ^ S х S — множество переходов, L : S х A ^ {true, false} — оценка событий. При этом предполагается, что отношение переходов является тотальным: для любого состояния s существует состояние s', в которое ведет переход из s ,

т.е. (s, s' ) е R. Вычислением в модели Крипке M называется бесконечная последова-

тельность состояний п = s1,s2,...,si,si+1,..., в которой для каждого номера i,i > 1, выполняется отношение перехода (si, si+1) е R . Условимся использовать запись пЩ для

обозначения Щ -го состояния в вычислении п .

Для заданной модели Крипке M , ее состояния s, s е S, и формулы CTL р бинарное отношение выполнимости M, s |= р определяется следующим образом:

• Если р = a е A, то M, s |= р о L(s, a) = true ;

• Если р = —/ , то M,s |= р о M,s IФ/ ;

• Если р = /1 л/2, то M, s |= р о M, s I=/1 и M, s I=/2;

• Если р = /1 v/2, то M, s |= р о M, s |= /1 или M, s \=/2;

• Если р = VX/ , то M, s |= р о для любого состояния s', в которое ведет переход из состояния s, верно M, s'|= / ;

• Если р = VF/ , то M, s |= р о для любого вычисления п, исходящего из состояния s, существует такое i, i > I, для которого верно M, п[] |= / ;

• Если р = VG/ , то M, s |= р о для любого вычисления п, исходящего из состояния s, что для всякого i, i > I, верно M, п[] |= / ;

• Если р = V(/1U/2), то M, s |= р о для любого вычисления п, исходящего из состояния s, существует такое i, i > I, что M,п[] \=/ и для всякого j,\ < j < i, верно M,п[ j] ^ / .

Отношение выполнимости для формул 3Х/, 3F/, 3G/, 3(/1U/2) определяется аналогичным образом с той лишь разницей, что вместо всех переходов и вычислений, исходящих из состояния s, достаточно рассмотреть лишь один переход или вычисление.

2. Параметризованные модели Крипке. В параметризованных моделях Крипке состояния и переходы систем помечены булевыми функциями, зависящими от параметров. Для каждого набора значений этих параметров значения этих функций определяют оценку атомарных формул и активность переходов. Формальное определение параметризованных модели Крипке таково. Пусть заданы конечные множеств A = {a1,a2,...,an} атомарных формул (событий) и P = {p1,p2,...,pm} параметров. Запись ForP будем использовать для обозначения множества всех булевых формул над переменными множества P. Коиечной параметризованной моделью Крипке сигнатуры (A, P) называется четверка M = (S, S0, R,L), где S — непустое конечное множество состояний, S0 — подмножество начальных состояний, R : S х S ^ ForP — параметризованное множество переходов, L : S х A ^ ForP — параметризованная оценка событий. Для каждого набора а значений параметров P параметризованная модель M определяет обыкновенную модель Крипке M [ст], которая называется примером параметризованной модели M . В M[ст] из состояния v в состояние и имеется переход в том и только том случае, когда формула R(v, u) на наборе а принимает значение true. Значения формул L(v, a) на наборе а задают оценку событий в состояниях модели M[ст]. Для сохранения тотальности отношения переходов в каждом примере M [ст] на параметризованное отношение переходов R налагается ограничение: для любого состояния и должно выполняться тождество v R(u, v) = true. Сформулируем задачу вери-

veS

фикации конечных параметризованных моделей. Пусть задана булева формула g из множества ForP, используемая для ограничения значений переменных-параметров. Темпоральная формула р , зависящая от событий A , считается выполнимой в конечной параметризованной модели M при ограничении параметризации g (этот факт будем обозначать записью M, g |= р ), если для любого набора а значений параметров и для любого начального состояния s0 выполняется соотношение g (ст) = true ^ M [ст], s0 \= р. Задача верификации заключается в проверке соотношения M, g |= р для заданной конечной параметризованной модели M , формулы CTL р и булевого ограничения g.

3. Символьный алгоритм верификации конечных параметризованных систем для CTL. Символьные алгоритмы верификации работают со сложными структурами данных (формулами, уравнениями, логическим схемами и др.), позволяющими компактно описывать конечные множества. Конечную параметризованную модель можно определить набором булевых формул, зависящих от событий, параметров и вспомогательных переменных, используемых для представления состояний модели. Для заданной конечной параметризованной модели Крипке M = (S, S0, R, L) сигнатуры (A, P), где

|A| = n, |P| = m, |S = 2k, введем множество вспомогательных булевых переменных Z = {z1,z2,...,zk} и сопоставим взаимно однозначно каждому состоянию s из множества S набор A s значений вспомогательных переменных. Тогда конечная параметризованная модель M полностью определяется набором, состоящим из n+2 булевых формул (fok), fRm+2), f1(m+k), fim+k),..., fi,m+k)) , удовлетворяющих условиям:

1) s e S0 о f0(As) =true;

2) для любой пары состояний u, v верно соотношение fR (Au, Av,p1,...,pm) = R(u, v);

3) для любого состояния u справедливо соотношение f (Au,p1,...,pm) = L(u,af);

Верификация параметризованной модели M проводится в два этапа. На первом этапе для заданной CTL формулы р вычисляется (m+k)-местная булева формула

Ир (z, p), которая характеризует выполнимость темпоральной формулы р в каждом

состоянии системы в зависимости от значений параметров. Как известно (см. [1]), каждая CTL-формула равносильна темпоральной формуле, в которой применяются только булевы связки л, — и темпоральные операторы 3Х, 3U, 3G. Поэтому достаточно представить процедуры вычисления булевых формул Ир? (z, р) для темпоральных формул р , озаглавленных указанными логическими связками и операторами.

1. Если р = ai, где ai е A, то Ир (z, р) = f. .

2. Если р = — /, то ир (z, p) = —И/ (z, p) .

3. Если р = / л х, то Ир (z, p) = И/ (z, p) л И^ (z, p) .

4. Если р = 3X/, то Ир (z, р) = 3z0 (fR (z, z0, р) л ИР (zо, р)) .

5. Если р = 3(/Ux), то Ир — это булева функция, которая является наименьшим в решетке булевых функций решением функционального уравнения

Y(z, р) = Щ (z, р) v (ИР (z, р) л 3zо (fR (z, zо, p) л Y(zо, Р))).

Это решение может быть вычислено следующей процедурой:

Y=0; Y'=hx; while Y Ф Y' do Y:= Y'; Y': = hx v(h^3zo (fRлY)) od.

6. Если р = 3G/, то ^ — это булева функция, которая является наибольшим в решетке булевых функций решением функционального уравнения

Y (z, р) = К (z, р) л 3zо (fR (z, zо, р) л Y (zо, р)) .

Это решение может быть вычислено следующей процедурой:

Y=1; Y'=hv; while Y Ф Y' do Y:= Y'; Y':= hvл3zo (fRлY) od.

Здесь 1 и о обозначают булевы функции, которые тождественно равны true и false соответственно Применение квантора существования 3zf (x, z) к булевой формуле представляет собой сокращенную запись формулы f (х,о) v f (х,1).

Лемма 1. Для любой конечной параметризованной модели Крипке M , CTL-формулы р и набора значений параметров ст верно соотношение Ma,s ^ р о Ир(ст) = true.

Эта лемма является обобщением аналогичного утверждения для обычных моделей Крипке (см. [1]).

На втором этапе верификации параметризованной модели

М = ( /((к \ /(Кт+2к \ /1'т+к \ /2(п+к ),..., ^ ^ относительно темпоральной формулы р и ограничения параметризации g проводится проверка общезначимости следующей формулы

/м м = (g А /о ^ ьр ) .

Непосредственно из леммы 1 вытекает

Теорема 1. Для любой конечной параметризованной модели Крипке М, ОТЬ-фор-мулы р и ограничения параметризации g верно соотношение

м, g \= р о /м= Кие.

Описанный здесь алгоритм верификации конечных параметризованных моделей может быть реализован на практике с привлечением пакетов построения и преобразования упорядоченных двоичных разрешающих диаграмм (ОБРР) и процедур проверки выполнимости булевых формул (БАТ-во^егв).

4. Сложность верификации конечных параметризованных моделей. Как

известно, проверку выполнимости ОТЬ-формулы длины п в обыкновенной модели Крипке, имеющей т переходов, можно провести за время О(пт). Однако для параметризованных моделей Крипке сложность задачи верификации значительно возрастает. Обнаружено, что это происходит даже в том случае, когда булевы формулы Я(и, V) и Ь(и, а), помечающие переходы между состояниями и оценку событий, не содержат логических связок, т.е. являются либо булевыми параметрами, либо булевыми константами. Конечную параметризованную модель Крипке М = ($,80,Я,Ь) назовем простой моделью, если для любой пары состояний я', 5" и для любого события а верны включения Я(Я,я") е Р и {0,1} и Ь(5,а) е Р и {0,1} . Далее будет показано, что задача верификации простых конечных параметризованных моделей Крипке является вычислительно трудной. Для этого предложен следующий метод сведения проблемы невыполнимости конъюнктивных нормальных форм (КНФ) к задаче верификации простых параметризованных моделей.

Пусть задана произвольная 3-КНФ С над множеством переменных X = {х1,х2,..., хт} . Введем вспомогательные булевы переменные х[, х'2,...,х'т и заменим в булевой формуле С все отрицательные литеры —хг ,1 < г < т, соответствующими штрихованными переменными х\. В результате этой замены будет получена 3-КНФ

С' = (^11 V ^12 V 2п) А (221 V ¿22 V 21Ъ) а ...А (гт V гМ2 V гмз), в которой содержатся только положительные литеры. В качестве множества событий выберем множество А = {а, Ь, с, ё} и рассмотрим простую конечную параметризованную модель Крипке МС, изображенную на рисунке. В этой модели для упрощения записи все непомеченные стрелки соответствуют переходам с пометкой 1, а отсутствие стрелки, соединяющей пару различных состояний, соответствует переходу с пометкой

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

Рис. Модель Крипке MС, соответствующая 3-КНФ C

Лемма 2. Для любой 3-КНФ C справедливо соотношение

MС, true \^VG(b ^ (3Xc 3Xd)) ^VG—a <^> C - выполнимая 3-КНФ.

Здесь значки ^ и  обозначают логические связки импликации и исключающего ИЛИ.

Доказательство. Невыполнимость MС, true \^VG(b ^ (3Xc 3Xd )) ^VG—a означает, что для некоторого набора 5 значений параметров x^,...,xm,x[,...,x'm верны соотношения MС [5], s0\=VG(b ^ (SXc 3Xd)) и MС [5], s0\=—VG —ia. Первое из них равносильно тому, что для каждой пары переменных xi, x',\ < i < m, имеет место равенство x[[5] = —xi [5]. Так как в CTL формула —VG—a равносильна 3Fa, второе из указанных соотношений означает, что в модели Крипке MС [5] имеется вычисление, ведущее из состояния s0 в состояние s1. Учитывая устройство MС [5] последнее означает, что C'[5] = true. Таким образом, указанные выше соотношения выполнимости равносильны тому, что С ( xJ5], x 2[5],..., xm [5]) = true, т.е. C - выполнимая 3-КНФ.

Из леммы 2 вытекает следующая теорема, дающая оценку сложности задачи верификации конечных параметризованных моделей в логике CTL.

Теорема 2. Проблема невыполнимости CTL-формул в простых параметризованных моделях Крипке является NP-полной.

Литература

1. Кларк Э.М., Грамберг О., Пелед Д. Верификация моделей программ (model checking). М.: МЦНМО, 2002. - 416 с.

2. Cimatti A., Clarke E., Giunchiglia F., Roveri M. nuSMV: a new symbolic model verifier. In Proceed-

ings of CAV'99 (Computer Aided Verification), 1999, p. 495-499.

3. Holzmann G.J. The SPIN Model Checker: Primer and Reference Manual. Addison-Wesley, 2003, 608 p.

4. Apt K.R., Kozen D. Limits for automatic program verification of finite-state concurrent systems. Information Processing Letters, v. 22, N 6, 1986, p. 307-309.

5. Clarke E.M., Filkorn T., Jha S. Exploiting symmetry in temporal logic model checking. Proceedings of CAV'93, Lecture Notes in Computer Science, v. 697, 1993, p. 450-461.

6. Emerson E.A., Namjoshi K.S. Reasoning about rings. Proceedings of the 22th ACM Conference POPL'95 (Principles of Programming Languages), 1995, p.85-94.

7. Emerson E.A., Sistla A.P. Symmetry and model checking. Formal Methods in System Design, v. 9, N 1/2, 1996, p.105-131.

8. Donaldson A.F. Miller A. Automatic symmetry detection for model checking using computational group theory. Proceedings of the 13th International Symposium on Formal Methods Europe (FME 2005)}, Lecture Notes in Computer Science, v. 3582, 2005, p. 481-496.

9. Коннов И.В., Захаров В.А.. Об одном подходе к верификации симметрических параметризованных распределенных систем // Программирование. — 2005 -№ 5.

10. Clarke E.M., Grumberg, O., and Jha, S. Verifying parameterized networks using abstraction and regular languagesю Proceedings of the 6-th International Conference on Concurrency Theory, 1995.

11. Dams D., Grumberg O., Gerth R. Abstract interpretation of reactive systems: abstractions preserving ACTL*, ECTL* and CTL*. IFIP Working Conference and Programming Concepts, Methods and Calculii, 1994.

12. Kesten Y., Pnueli A. Verification by finitary abstraction. Information and Computation, v. 163, 2000, p.203-243.

13. Kurshan R.P., MacMillan K.L. Structural induction theorem for processes. Proceedings of the 8-th International Symposium on Principles of Distributed Computing, PODC'89, 1989, p. 239-247.

14. Wolper P., Lovinfosse. Properties of large sets of processes with network invariants. Lecture Notes in Computer Science, 407, 1989, p. 68-80.

15. Calder M., Miller A. Five ways to use induction and symmetry in the verification of networks of processes by model-checking. Proceedings of AvoCS 2002 (Automated Verification of Critical Systems), 2002, p. 29-42.

16. Редькин Н.П. Надежность и диагностика схем / М.: Изд-во МГУ, 1992.

17. Godefroid P., Bruns G. Generalized model checking: reasoning about partial state spaces. In Proc. of CONCUR 2000, p. 168-182.

ON THE VERIFICATION OF FINITE STATE PARAMETERIZED MODELS OF DISTRIBUTED PROGRANS

In this paper the authors introduced and studied a new class of parameterized models for distributed programs. These models are finite state transition systems that involve Boolean variables as parameters. Boolean parameterization makes it possible to specify succinctly finite families of communicating processes whose behavior is synchronized in some aspects. We introduced also a symbolic model checking algorithm for verification of finite state parameterized models of distributed programs against CTL

specifications. The complexity of verification problem is also estimated.

e-mail: zakh@ cs.msu.su

P.E. BULYCHEV V.A. ZAKHAROV

Lomonosov Moscow State University

Keywords: program, transition system, specification, temporal logic, verification, Boolean function, OBDD, NP-complete problem.