nikolay shilov. csedays 2

30
Николай Вячеславович Шилов – CSEdays, Екатеринбург 12 – 14 ноября 2010 г. Что программистам надо знать о программных логиках - II.

Upload: lilosea

Post on 22-May-2015

413 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: Nikolay Shilov. CSEDays 2

Николай Вячеславович Шилов – CSEdays, Екатеринбург 12 – 14 ноября 2010 г.

Что программистам надо знать о программных логиках - II.

Page 2: Nikolay Shilov. CSEDays 2

Что было в первой лекции

Понятие о синтаксисе и семантике динамической логики с неподвижными точками на примере головоломки. Понятие верификации моделей на примере решения головоломки и её обобщения.

Page 3: Nikolay Shilov. CSEDays 2

Что было упомянуто вскользь

К сожалению, все алгоритмы верификации моделей для динамической логики с неподвижными точками имеют верхнюю оценку сложности (O(|LTS|)O(|Φ|), а хорошей реалистической нижней оценки неизвестно.

Page 4: Nikolay Shilov. CSEDays 2

Что делать?

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

Page 5: Nikolay Shilov. CSEDays 2

Как уменьшить размер модели: симметрия

Симметрия модели – это любой автоморфизм помеченной системы переходов, который сохраняет все специфицированные свойства. Симметрии модели образуют группу, а каждый элемент модели (вершина графа помеченной системы переходов) определяет орбиту – множество симметричных ему элементов.

Page 6: Nikolay Shilov. CSEDays 2

Как уменьшить размер модели: симметрия

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

Page 7: Nikolay Shilov. CSEDays 2

Симметрия в GAME(M,N)

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

Page 8: Nikolay Shilov. CSEDays 2

Симметрия в GAME(M,N)

Поэтому вместо всех возможных позиций (U, L, H, V, Q),

где U, L, H и V попарно непересекающиеся множества номеров монет,

а Q = (S1, S2) – запрос на взвешивание,

Page 9: Nikolay Shilov. CSEDays 2

Симметрия в GAME(M,N)

можно ограничиться позициями, в которых U, L, H и V – непересекающиеся интервалы,

а S1 = U1 ∪ L1 ∪ H1 ∪ V1 и S2 = U2 ∪ L2 ∪ H2 ∪ V2, где

U1∪ U2 – начальный интервал U,

L1∪ L2 – начальный интервал L,

H1∪ H2 – начальный интервал H,

U1∪ U2 – начальный интервал V.

Page 10: Nikolay Shilov. CSEDays 2

Как уменьшить размер модели: абстракция

Однако для нашей головоломки размер модели

можно уменьшить еще больше, если вместо

симметрии использовать числовую абстракцию.

Page 11: Nikolay Shilov. CSEDays 2

Как уменьшить размер модели: абстракция

Пусть у нас есть множество формул Ψ0, Ψ1, ..., две помеченных системы переходов LTS1 и LTS2, а также отображение F:LTS1 --> LTS2 такое, что [Ψ0]LTS1 = прообраз [Ψ0]LTS1 при отображении F,[Ψ1]LTS1 = прообраз [Ψ1]LTS1 при отображении F,..............................................................................

Тогда отображение говорят, что отображение F является абстракцией, помеченные системы

переходов LTS1 и LTS2 – конкретной и абстрактной моделями для верификации формул Ψ0, Ψ1, ...

Page 12: Nikolay Shilov. CSEDays 2

Числовая абстракция для GAME(M,N)

Естественная идея: когда человек решает головоломки о монетах, он обычно думает не в

терминах номеров монет, а в терминах количествмонет разных видов – «непроверенных», «легких»,

«тяжелых» и «настоящих».

Page 13: Nikolay Shilov. CSEDays 2

Абстрактная модель game(M,N)

Позициями служат пятерки (u, l, h, v, q), гдеu – количество монет про которые пока ничего невозможно сказать,l – количество монет, которые пока неопознаны, но были на более легкой чаше весов,h – количество монет, которые пока неопознаны, но были на более тяжелой чаше весов,v – количество монет, про которые известно, что они настоящие,q – (запрос на) взвешивание, т. е. пара четверок ((u1, l1, h1, v1) , (u2, l2, h2, v2)).

Page 14: Nikolay Shilov. CSEDays 2

Абстрактная модель game(M,N)

На эти позиции налагаются ограничения, связанные со «смыслом» чисел:

u + l + h ≤N, u + l + h + v = N + M, u + l + h ≥1, u≠0 тогда и только тогда, когда l + h =0,u1 + u2 ≤u, l1 + l2 ≤l, h1 + h2 ≤h, v1 + v2 ≤v,

u1 + l1 + h1 + v1 = u2 + l2 + h2 + v2.

Page 15: Nikolay Shilov. CSEDays 2

Абстрактная модель game(M,N)

Возможный ход игрока prog – это запрос

на взвешивание двух «порций» монет, т. е. пара позицийследующего вида:

Page 16: Nikolay Shilov. CSEDays 2

Абстрактная модель game(M,N)

Возможный ход игрока user – это ответ

«<», «=» или «>» на предыдущий запрос. Этот ответ вызывает изменение позиции:

Page 17: Nikolay Shilov. CSEDays 2

Абстрактная модель game(M,N)

Page 18: Nikolay Shilov. CSEDays 2

Абстрактная модель game(M,N)

Позиции (u, u, h, v, ((0,0,0,0), (0,0,0,0))), в которых u + l + h =1, помечены «OK».

-------------------------------------------------------

Получилась очень небольшая модель по сравнению с GAME(M,N)!

В частности, в game(14,1) всего-то порядка миллиона позиций.

Page 19: Nikolay Shilov. CSEDays 2

Абстрактная модель game(M,N)

Отображение count: GAME(M,N) --> game(M,N)

заданное правиломcount (U, L, H, V, (S1,S2)) = (|U|, |L|, |H|, |V|, q),

где q есть ( (|S1∩U|, |S1∩L|, |S1∩H|, |S1∩V|) , (|S2∩U|, |S2∩L|, |S2∩H|, |S2∩V|) ),

является абстракцией для верификации формул Φ0, Φ1, ... Φ.

Page 20: Nikolay Shilov. CSEDays 2

И ещё один раз о головоломке

Теперь головоломку о поиске фальшивой монеты среди 14 за 3 взвешивания с использованием 1

эталонной решается с использованием абстракции и верификации модели:

сгенерировать помеченную систему переходов game(14,1);для формулы Φ3 и game(14,1) выполнить алгоритм верификации модели;Проверить (14,0,0,1,((0,0,0,0) , (0,0,0,0)))∈[Φ3]game(14,1).

Page 21: Nikolay Shilov. CSEDays 2

На пути к другим программным логикам

Мы определили динамическую логику с неподвижными точками не вполне строго, в

частности, не было сказано явно, что конструктор наименьшей неподвижной точки «µP» можно

применять только к формулам Ψ без негативных вхождений пропозициональной переменной P.

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

формул, к которым мы применяем этот конструктор.

Page 22: Nikolay Shilov. CSEDays 2

На пути к другим программным логикам

В конечной модели (т. е. помеченной системе переходов) LTS семантика формулы [µP.Ψ]LTS

определялась следующим образом: строили ряд формул Ψ0 ≡ false, Ψ1 ≡ Ψ(false/P), ... Ψn+1 ≡ Ψ(Ψn/P), ..., вычисляли их семантику S0 = [Ψ0]LTS, S1 = [Ψ1]LTS, ... Sn = [Ψn]LTS, ..., объявляли ∪n≥0Sn семантикой [µP.Ψ]LTS.

Page 23: Nikolay Shilov. CSEDays 2

На пути к другим программным логикам

Тогда естественно ввести конструктор наибольшей неподвижной точки «ν» и определить его семантику в

конечных моделях «дуальным» образом: построим ряд формул Ψ0 ≡ true, Ψ1 ≡ Ψ(true/P), ... Ψn+1 ≡ Ψ(Ψn/P), ..., вычислим их семантику S0 = [Ψ0]LTS, S1 = [Ψ1]LTS, ... Sn

= [Ψn]LTS, ..., объявим ∩n≥0Sn семантикой [νP.Ψ]LTS.

Page 24: Nikolay Shilov. CSEDays 2

Пропозициональная Динамическая Логика (ПДЛ)

ПДЛ – это «фрагмент» динамической логики с неподвижными точками, в котором «µ» и «ν» могут встречаться только в следующих двух макросах:

[α*]Ψ ≡ νP.(Ψ & [α]P), ⟨α*⟩Ψ ≡ µP.(Ψ ∨ ⟨α⟩P).

Можно показать, что в помеченной системе переходов

[α*]Ψ означает «после любого количества итераций α имеет место Ψ», ⟨α*⟩Ψ означает «после некоторого количества итераций α имеет место Ψ».

Page 25: Nikolay Shilov. CSEDays 2

ПДЛ: «за» и «против»

«ЗА»:Верификация моделей для ПДЛ имеет хорошую верхнюю оценку сложности O(|LTS|×|Φ|).В ПДЛ представимы формулы, выражающие существование выигрышной стратегии за (неболее чем) 0, 1, 2, ... раундов.

«ПРОТИВ»:В ПДЛ многие свойства невыразимы. Например, в ПДЛ нельзя выразить существование выигрышной стратегии в произвольной конечной игре.

Page 26: Nikolay Shilov. CSEDays 2

Логика Дерева Вычислений (CTL)

●CTL – это тоже «фрагмент» динамической логики с неподвижными точками, в котором «µ» и «ν» могут встречаться только в специальных макросах. Доводы «за» и «против» CTL те же, что и ПДЛ, хотя CTL более выразительная логика, чем ПДЛ.В ПДЛ и CTL невыразимы свойства справедливости. Например: если начиная с какого-то момента какой-либо из процессов постоянно готов к исполнению, то рано или поздно после этого он получит исполняется (центральный процессор в свое полное распоряжение и т. п.).

Page 27: Nikolay Shilov. CSEDays 2

Аалгоритмы + Структуры Данных = Программы

Программы верификации моделей можно классифицировать по представлению данных.

• Прямое представление («explicit»): семантика формулы в модели – это множество, заданное своей характеристической функцией, представленной битовым вектором.

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

Page 28: Nikolay Shilov. CSEDays 2

«Symbolic» и «Unbounded» верификация моделей

В частности,• «Symbolic» = «символическая» верификация

моделей: используются ориентированные двоичные диаграммы решений (OBDD) для представления булевских формул.

• «Unbounded» = «ограниченная» верификация моделей: используются конъюнктивные нормальные формы (к.н.ф.) для представления булевских формул.

• Аффинная верификация моделей: используются аффинные арифметические выражения для представления характеристических функций интервалов целых числах.

Page 29: Nikolay Shilov. CSEDays 2

Но есть еще одна интересная головоломка...

Есть 40 монет, среди которых 3 лёгких – фальшивые,

а остальные – настоящие, все настоящие монеты имеют равный вес.

Спрашивается, можно ли найти 18 настоящих монет за 3 взвешивания на чашечных весах?

Page 30: Nikolay Shilov. CSEDays 2

... и её обобщение для программистов

Как программно проверить, что среди N монет можно найти V настоящих за K взвешиваний, если известно, что среди этих монет

есть ровно L лёгких фальшивых монет?

Принимаются любые решения (необязательно в терминах программных логик).