1. Николай Вячеславович Шилов – CSEdays,
Екатеринбург 12 – 14 ноября 2010 г.
Что программистам надо знать о
программных логиках - II.
2. Что было в первой лекции
Понятие о синтаксисе и семантике динамической
логики с неподвижными точками на примере
головоломки.
Понятие верификации моделей на примере
решения головоломки и её обобщения.
3. Что было упомянуто вскользь
К сожалению, все алгоритмы верификации моделей
для динамической логики с неподвижными точками
имеют верхнюю оценку сложности (O(|LTS|)O(|Φ|)
, а
хорошей реалистической нижней оценки неизвестно.
4. Что делать?
Чтобы сделать верификацию моделей практичным
методом верификации можно уменьшать размеры
помеченных систем переходов и упрощать логику.
Но при этом надо побеспокоиться, что бы средств
упрощённой логики хватило для спецификации
интересных свойств, а уменьшение модели не
привело к изменению специфицированных свойств.
5. Как уменьшить размер модели: симметрия
Симметрия модели – это любой автоморфизм
помеченной системы переходов, который сохраняет
все специфицированные свойства.
Симметрии модели образуют группу, а каждый
элемент модели (вершина графа помеченной
системы переходов) определяет орбиту – множество
симметричных ему элементов.
6. Как уменьшить размер модели: симметрия
Очевидно, что из каждой орбиты достаточно оставить
только по одному элементу-представителю, и
соединить представителей орбит помеченной дугой,
если в этих орбитах были вершины, связанные такой
же дугой.
7. Симметрия в GAME(M,N)
Например, для игры простая перенумерация монет
очевидным образом является симметрией по
отношению к свойствам, представленным формулами
Φ0
, Φ1
, ... Φ, специфицирующих существование
выигрышной стратегии за 0, 1, ... и сколько угодно
раундов.
8. Симметрия в GAME(M,N)
Поэтому вместо всех возможных позиций
(U, L, H, V, Q),
где U, L, H и V попарно непересекающиеся
множества номеров монет,
а Q = (S1
, S2
) – запрос на взвешивание,
9. Симметрия в 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.
10. Как уменьшить размер модели: абстракция
Однако для нашей головоломки размер модели
можно уменьшить еще больше, если вместо
симметрии использовать числовую абстракцию.
11. Как уменьшить размер модели: абстракция
Пусть у нас есть множество формул Ψ0
, Ψ1
, ...,
две помеченных системы переходов LTS1
и LTS2
,
а также отображение F:LTS1
--> LTS2
такое, что
[Ψ0
]LTS1
= прообраз [Ψ0
]LTS1
при отображении F,
[Ψ1
]LTS1
= прообраз [Ψ1
]LTS1
при отображении F,
..............................................................................
Тогда отображение говорят, что отображение F
является абстракцией, помеченные системы
переходов LTS1
и LTS2
– конкретной и абстрактной
моделями для верификации формул Ψ0
, Ψ1
, ...
12. Числовая абстракция для GAME(M,N)
Естественная идея: когда человек решает
головоломки о монетах, он обычно думает не в
терминах номеров монет, а в терминах количеств
монет разных видов – «непроверенных», «легких»,
«тяжелых» и «настоящих».
13. Абстрактная модель game(M,N)
Позициями служат пятерки (u, l, h, v, q), где
u – количество монет про которые пока ничего
невозможно сказать,
l – количество монет, которые пока неопознаны, но
были на более легкой чаше весов,
h – количество монет, которые пока неопознаны, но
были на более тяжелой чаше весов,
v – количество монет, про которые известно, что они
настоящие,
q – (запрос на) взвешивание, т. е. пара четверок ((u1
,
l1
, h1
, v1
) , (u2
, l2
, h2
, v2
)).
14. Абстрактная модель 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
.
18. Абстрактная модель 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) всего-то
порядка миллиона позиций.
20. И ещё один раз о головоломке
Теперь головоломку о поиске фальшивой монеты
среди 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)
.
21. На пути к другим программным логикам
Мы определили динамическую логику с
неподвижными точками не вполне строго, в
частности, не было сказано явно, что конструктор
наименьшей неподвижной точки «µP» можно
применять только к формулам Ψ без негативных
вхождений пропозициональной переменной P.
Но далее мы будем подразумевать, что это
синтаксическое ограничение выполнено для всех
формул, к которым мы применяем этот конструктор.
22. На пути к другим программным логикам
В конечной модели (т. е. помеченной системе
переходов) LTS семантика формулы [µP.Ψ]LTS
определялась следующим образом:
строили ряд формул Ψ0
≡ false, Ψ1
≡ Ψ(false/P), ...
Ψn+1
≡ Ψ(Ψn
/P), ...,
вычисляли их семантику S0
= [Ψ0
]LTS
, S1
= [Ψ1
]LTS
, ...
Sn
= [Ψn
]LTS
, ...,
объявляли ∪n≥0
Sn
семантикой [µP.Ψ]LTS
.
23. На пути к другим программным логикам
Тогда естественно ввести конструктор наибольшей
неподвижной точки «ν» и определить его семантику в
конечных моделях «дуальным» образом:
построим ряд формул Ψ0
≡ true, Ψ1
≡ Ψ(true/P), ...
Ψn+1
≡ Ψ(Ψn
/P), ...,
вычислим их семантику S0
= [Ψ0
]LTS
, S1
= [Ψ1
]LTS
, ... Sn
= [Ψn
]LTS
, ...,
объявим ∩n≥0
Sn
семантикой [νP.Ψ]LTS
.
24. Пропозициональная Динамическая Логика (ПДЛ)
ПДЛ – это «фрагмент» динамической логики с
неподвижными точками, в котором «µ» и «ν» могут
встречаться только в следующих двух макросах:
[α*]Ψ ≡ νP.(Ψ & [α]P),
〈α*〉Ψ ≡ µP.(Ψ ∨ 〈α〉P).
Можно показать, что
в помеченной системе переходов
[α*]Ψ означает «после любого количества итераций
α имеет место Ψ»,
〈α*〉Ψ означает «после некоторого количества
итераций α имеет место Ψ».
25. ПДЛ: «за» и «против»
«ЗА»:
Верификация моделей для ПДЛ имеет хорошую
верхнюю оценку сложности O(|LTS|×|Φ|).
В ПДЛ представимы формулы, выражающие
существование выигрышной стратегии за (неболее
чем) 0, 1, 2, ... раундов.
«ПРОТИВ»:
В ПДЛ многие свойства невыразимы. Например, в
ПДЛ нельзя выразить существование выигрышной
стратегии в произвольной конечной игре.
26. Логика Дерева Вычислений (CTL)
●
CTL – это тоже «фрагмент» динамической логики с
неподвижными точками, в котором «µ» и «ν» могут
встречаться только в специальных макросах. Доводы
«за» и «против» CTL те же, что и ПДЛ, хотя CTL
более выразительная логика, чем ПДЛ.
В ПДЛ и CTL невыразимы свойства справедливости.
Например: если начиная с какого-то момента какой-
либо из процессов постоянно готов к исполнению, то
рано или поздно после этого он получит исполняется
(центральный процессор в свое полное
распоряжение и т. п.).
27. Аалгоритмы + Структуры Данных = Программы
Программы верификации моделей можно
классифицировать по представлению данных.
• Прямое представление («explicit»): семантика
формулы в модели – это множество, заданное
своей характеристической функцией,
представленной битовым вектором.
• Символьное представление: семантика формулы в
модели – это множество, заданное своей
характеристическая функция которого задана или
булевской формулой, или арифметическим
выражением, и т. д.
28. «Symbolic» и «Unbounded» верификация моделей
В частности,
• «Symbolic» = «символическая» верификация
моделей: используются ориентированные
двоичные диаграммы решений (OBDD) для
представления булевских формул.
• «Unbounded» = «ограниченная» верификация
моделей: используются конъюнктивные
нормальные формы (к.н.ф.) для представления
булевских формул.
• Аффинная верификация моделей: используются
аффинные арифметические выражения для
представления характеристических функций
интервалов целых числах.
29. Но есть еще одна интересная головоломка...
Есть 40 монет,
среди которых 3 лёгких – фальшивые,
а остальные – настоящие, все настоящие монеты
имеют равный вес.
Спрашивается, можно ли найти 18 настоящих монет
за 3 взвешивания на чашечных весах?
30. ... и её обобщение для программистов
Как программно проверить,
что среди N монет можно найти V настоящих за K
взвешиваний, если известно, что среди этих монет
есть ровно L лёгких фальшивых монет?
Принимаются любые решения
(необязательно в терминах программных логик).