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

Nikolay Shilov. CSEDays 2

  • 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 .
  • 15.
    Абстрактная модель game(M,N) Возможныйход игрока prog – это запрос на взвешивание двух «порций» монет, т. е. пара позиций следующего вида:
  • 16.
    Абстрактная модель game(M,N) Возможныйход игрока user – это ответ «<», «=» или «>» на предыдущий запрос. Этот ответ вызывает изменение позиции:
  • 17.
  • 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) всего-то порядка миллиона позиций.
  • 19.
    Абстрактная модель 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 , ... Φ.
  • 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 лёгких фальшивых монет? Принимаются любые решения (необязательно в терминах программных логик).