The document discusses combining branching time logic with logics of knowledge for reasoning about multi-agent systems. It proposes an update and abstraction algorithm for model checking Computational Tree Logic with Knowledge (Act-CTL-K) in perfect recall synchronous settings. The key points are:
1) The algorithm transforms Act-CTL-K formulas of bounded knowledge depth k into Act-CTL, using k-trees and knowledge update functions to represent the original environment.
2) A k-tree is a finite tree of height k that represents the knowledge of agents. Knowledge update functions are defined to transform k-trees after actions.
3) The resulting model checking algorithm solves Act-CTL on the transformed k-trees,
1. Николай Вячеславович Шилов – CSEdays,
Екатеринбург 12 – 14 ноября 2010 г.
Что программистам надо знать о
программных логиках
2. О чём эти лекции?
Несмотря на рост популярности формальных
методов для разработки надежного программного
обеспечения за рубежом, эта область остаётся
мало знакома программистам-разработчикам в
России.
Многие считают формальные методы анализа
программ чрезмерно «математизированными» для
себя.
3. О чём эти лекции?
Давайте попытаемся в доступной
(но математически-корректной форме)
познакомиться с основными
одного из современных подходов к
формальной спецификации и верификации,
основанному на программых логиках.
4. История с одной головоломкой
Есть 15 монет, среди которых одна – фальшивая, а
остальные – настоящие; 13 настоящих монет и
фальшивая монета внешне одинаковы, а одна
настоящая монета помечена; все настоящие монеты
имеют равный вес, а фальшивая – вес, отличный от
веса настоящей монеты; можно ли найти фальшивую
монету за 3 взвешивания на чашечных весах?
5. Задача для программиста
Написать программу с тремя входными данными
U – количество монет, среди которых одна
фальшивая,
V – дополнительное количество настоящих монет,
M – разрешённое количество взвешиваний,
результатом которой является или impossible, или
программа ALPHA определения фальшивой монеты.
6. Задача для программиста
Программа ALPHA осуществляет стратегию поиска в
следующей постановке. Все (U + V) монет имеют
разные номера от 1 до (U + V), все дополнительные
настоящие монеты имеют номера от 1 до V. Диалог с
ALPHA начинается с выбора пользователем номера
фальшивой монеты (от (V + 1) до (V + U)) и её веса
относительно настоящих монет
7. Задача для программиста
Далее диалог состоит из последовательности
раундов, количество которых не превышает M. В
каждом раунде программа ALPHA выводит два
множества номеров монет для помещения их на
первую и вторую чаши весов и запрос к пользователю
о результате взвешивания, а пользователь отвечает,
какая чашка легче в соответствии с начальным
выбором.
10. Игры с монетками
Пример приводит к игровой интерпретации
головоломки и задачи для программистов:
Игра GAME(N,M) игроков user и prog состоит
из последовательности раундов. В каждый раун
начинает игрок prog, его ход – это пара
непересекающихся множеств (равной мощности)
чисел из [1..(M+N)] для левой и правой чашки весов.
11. Игры с монетками
Возможный ответный ход игрока user – «<», «=» или
«>», но его ход не должен противоречить
всем предыдущим раундам в следующем смысле:
существуют число [(M+1)..(M+N)] и относительный
вес фальшивой монеты, удовлетворяющие всем
ограничениям, введенным в предыдущих раундах.
12. Игры с монетками
Игрок prog выигрывает игру GAME(N,M) как только
единственное число из [(M+1)..(M+N)] удовлетворяют
всем ограничениям, полученным в результате
«взвешиваний» во время игры.
13. Игры с монетками
Теперь головоломку и задачу о метапрограмме
можно переформулировать в следующем виде:
•Найти выигрышную стратегию для prog не более чем
в 3 раунда в игре GAME(14,1);
•Написать метапрограмму, которая для всех N≥1, M≥0
и K≥0 порождает (если возможно) выигрышную
стратегию для prog из (не более чем) K раундов в
игре GAME(N,M).
14. Помеченные системы переходов
Конечную GAME(M,N) можно представлять в виде
«помеченной системы переходов» – графа,
• вершины которого соответствуют позициям игры,
• вершины, соответствующие выигрышу игрока prog,
помечены «OK»,
• дуги соответствуют возможным ходам игроков prog
и user и соответственно помечены помечены.
15. Помеченная систем переходов для GAME(M,N)
Позиции в этой игре – это пятерки (U, L, H, V, Q), где
• U – множество номеров из [(M+1)..(M+N)] монет,
про которые пока ничего невозможно сказать;
• L – множество номеров из [(M+1)..(M+N)] монет,
которые пока неопознаны, но участвовали во
взвешиваниях и были на легкой чаше весов;
• H – множество номеров из [(M+1)..(M+N)] монет,
которые пока неопознаны, но участвовали во
взвешиваниях и были на тяжелой чаше весов;
16. Помеченная система переходов для GAME(M,N)
• V – множество номеров из [1..(N+M)] монет, про
которые уже известно, что они настоящие;
• Q – (запрос на) взвешивание, т. е. пара
непересекающихся подмножеств S1, S2 ⊆[1..(N+M)]
равной мощности.
17. Помеченная система переходов для GAME(M,N)
Три естественных ограничения:
•U, L, H и V не пересекаются,
•U ∪ L ∪ H ∪ V = [1..(N+M)],
•U ∪ L ∪ H ∪ ∅.
Дополнительно можно заметить, что
•U ≠ ∅ тогда и только тогда, когда L ∪ H = ∅.
18. Помеченная система переходов для GAME(M,N)
Возможный ход
игрока prog – это запрос
на взвешивание двух
множеств монет,
т. е. пара позиций
следующего вида:
19. Помеченная система переходов для GAME(M,N)
Возможный ход
игрока user – это ответ
«<», «=» или «>» на
предыдущий запрос.
Этот ответ вызывает
изменение позиции:
20. Помеченная система переходов для GAME(M,N)
если
S1
= U1
∪ L1
∪ H1
∪ V1
и
S2
= U2
∪ L2
∪ H2
∪ V2
,
где
U1
,U2
⊆U, L1
,L2
⊆L,
H1
,H2
⊆H, V1
,V2
⊆V,
то
21. Помеченная система переходов для GAME(M,N)
В помеченной системе переходов
вершины (U, L, H, V, (∅,∅)), где |U| + |L| + |H| =1,
помечаем «OK».
22. Выигрышные стратегии по раундам
Пусть
•Wn
– множество позиций, где prog имеет
выигрышную стратегию (за неболее чем) n раундов,
•W – множество позиций, где есть выигрышная
стратегия для игрока prog.
23. Выигрышные стратегии по раундам
Тогда в помеченной системе переходов
•W0
= множество позиций, помеченных «OK»,
•Wn+1
= Wn
∪ «позиции,
в которых существует ход prog,
после которого любой ход user
приводит в позиции» OK ∪ Wn
,
•W = ∪n≥0
Wn
.
24. Динамическая логика с неподвижными точками
как язык описания множеств вершин помеченных
системах переходов
Пусть
•Φ0
– это формула «OK»,
•Φn+1
– это формула Φn
∨ 〈prog〉 [user](OK ∨ Φn
),
•Φ – это формула µP. (P ∨ 〈prog〉 [user](OK ∨ P))
со следующей семантикой в GAME(M,N):
[Φn
]GAME(M,N)
= Wn
, [ Φ ]GAME(M,N)
= W.
25. Программные логики
как языки запросов к помеченным системам
переходов
Задача верификации моделей (model checking):
•Вход: конечная помеченная система переходов LTS
и формула программной логики Φ.
•Выход: семантика формулы Φ в системе LTS –
множество [Φ ]LTS
.
26. Ещё раз о головоломке
Значит, головоломка о поиске фальшивой монеты
среди 14 за 3 взвешивания с использованием 1
эталонной решается в три этапа:
•сгенерировать помеченную систему переходов
GAME(14,1);
•для формулы Φ3
и GAME(14,1) выполнить алгоритм
верификации модели;
•проверить, ([2..15],∅,∅,{1},(∅,∅))∈[Φ3
]GAME(14,1)
.