ВПнМ, 03 лекция (от 22 февраля)

Материал из eSyr's wiki.

(Различия между версиями)
Перейти к: навигация, поиск
(Новая: Задания могут сдаваться по почте, на семинарах будет сдаваться то, что явно сказано. = Система верифик...)
м (Верификация моделей в среде SPIN)
 
(4 промежуточные версии не показаны)
Строка 1: Строка 1:
 +
'''Оригинальная презентация:''' http://savenkov.lvk.cs.msu.su/mc/lect3.pdf
 +
Задания могут сдаваться по почте, на семинарах будет сдаваться то, что явно сказано.
Задания могут сдаваться по почте, на семинарах будет сдаваться то, что явно сказано.
= Система верификация Spin =
= Система верификация Spin =
-
Сейчас будем говорить про возможности моделирования без учёта возм. вериф.
+
Сейчас будем говорить про возможности моделирования без учёта возможностей верификации.
Без определения на прошлой лекции осталось свойство адекватности.
Без определения на прошлой лекции осталось свойство адекватности.
Строка 9: Строка 11:
Необходимое свойство: множество AP<sub>&phi;</sub> должно включаться в AP<sub>m</sub>
Необходимое свойство: множество AP<sub>&phi;</sub> должно включаться в AP<sub>m</sub>
-
Есть два предиката, p и q, хотим рассм. только q, оставляем только его, потом объединяем два одинаковых сост. Посмотрим, для каких своцств они будут адекватны:
+
Есть два предиката, p и q, хотим рассмотрим только q, оставляем только его, потом объединяем два одинаковых состояния. Посмотрим, для каких свойств они будут адекватны:
* Нет, так как не наблюдаем p
* Нет, так как не наблюдаем p
* Обе модели адекватны
* Обе модели адекватны
-
* Первая адекватна, вторая --- нет. Получаем контрпример. На модели св-во не выполняется, на программе -- вып. Мы потеряли завершаемость с петлёй. Тем самым, вторая модель неадекватна. Как мы это выяснили: получили контрпример, проверили на исх. системе, выяснили. А если на модели св-во будет вып., а на системе --- нет? Такого быть не может, поскольку все пути на системе отобр. на модель.
+
* Первая адекватна, вторая --- нет. Получаем контрпример. На модели свойство не выполняется, на программе -- выполняется. Мы потеряли завершаемость с петлёй. Тем самым, вторая модель неадекватна. Как мы это выяснили: получили контрпример, проверили на исходной системе, выяснили. А если на модели свойство будет выполняться, а на системе --- нет? Такого быть не может, поскольку все пути на системе отображаются на модель.
-
== Верифик. моделей в среде SPIN ==
+
== Верификация моделей в среде SPIN ==
-
кОГДА МЫ ВЕРИФ. ПРОГРАММУ, МЫ хОТИМ ОПИСЫВАТЬ, как система устроена, другая, как она должна быть устроена. Соотв., нам нужна нотация для описания повед. и требований.
+
Когда мы верифицируем программу, мы хотим описывать, как система устроена и как она должна быть устроена. Соответственно, нам нужна нотация для описания поведения и требований.
Первое: верификатор:
Первое: верификатор:
-
* Устройство системы удовл. св-вам правильности
+
* Устройство системы удовлетворяющее свойствам правильности
* Выбранная нотация гарантирует разрешимость проверки любого свойства
* Выбранная нотация гарантирует разрешимость проверки любого свойства

Текущая версия

Оригинальная презентация: http://savenkov.lvk.cs.msu.su/mc/lect3.pdf

Задания могут сдаваться по почте, на семинарах будет сдаваться то, что явно сказано.

Содержание

[править] Система верификация Spin

Сейчас будем говорить про возможности моделирования без учёта возможностей верификации.

Без определения на прошлой лекции осталось свойство адекватности.

Необходимое свойство: множество APφ должно включаться в APm

Есть два предиката, p и q, хотим рассмотрим только q, оставляем только его, потом объединяем два одинаковых состояния. Посмотрим, для каких свойств они будут адекватны:

  • Нет, так как не наблюдаем p
  • Обе модели адекватны
  • Первая адекватна, вторая --- нет. Получаем контрпример. На модели свойство не выполняется, на программе -- выполняется. Мы потеряли завершаемость с петлёй. Тем самым, вторая модель неадекватна. Как мы это выяснили: получили контрпример, проверили на исходной системе, выяснили. А если на модели свойство будет выполняться, а на системе --- нет? Такого быть не может, поскольку все пути на системе отображаются на модель.

[править] Верификация моделей в среде SPIN

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

Первое: верификатор:

  • Устройство системы удовлетворяющее свойствам правильности
  • Выбранная нотация гарантирует разрешимость проверки любого свойства

Грубо: описываем правильное поведение, описываем неправильное, описываем, что есть, и пересеч. что есть с непр. должно быть пустым.

... Spin, Promels, LTL ...

В задаче Spin как прогр. средству вменяется вериф. программы и моделирование. Моделир. может исп. для того как система работает и для проверки контрпримеров.

Promela --- язык с охраняемыми командами. Дейкстра придумал язык, в котором на кадждый оператор навешивается страж, вот это оно.

  • Язык позв. писать плохой код. в этом смысле он хороший.

[править] Процесс верификации

[править] Ключевые моменты

  • У млодели конеч. число сост. --- гарантирует конечность верификации.
  • Процессы выполняются асинхронно, нет глобальных часов, синхронизация отсут.
  • У отдельного процесса может быть недетерм. поток управл.
  • Понятие выполнимости оператора. С любым оператором связано предусловие, оператор выполн., когда предусл. выполнено. Пример: q?m --- чтение m из канала q.

[править] Устройство модели

Есть процессы, еслть глобальные и локальные объекты данны

[править] Хелловорлд

Естественно начать изучение программы с хелловорлд. Язык очень похож на С.

active --- тип процесса --- инстанцируется немедленно

main --- произвольное имя процесса

--- разделитель команд
  • Если один процесс, то можно проще: есть один процесс инит, который немедленно инстанцируется.
  • Процессы инстанцируются либо с начала, либо в произвольном достижимом состоянии

Пример --- процесс, который создаёт 2 свои копии. Несмотря на реурсию, эта система остаётся конечной. Максимальное число процессов ограничено 255.

Пример на оператор run --- процесс выводит свой номер, init создаёт два процесса и говорит об этом. Тут стоит обратить внимание на предопр. переменных, а также на то, что печать и присв. происх. всегнда, а запуск тодлько тогда, когда можно.

Два способа взаимодействия --- shmem и обмен сообщениями. У каждого процесса есть локальное сост. У модели вцелом есть глобальное состояние.

Почему число сост. конечно --- конеч. кол-во процессов, огр. количество операторов, ограниченные типы данных, огр. размер каналов. --- задача вериф. разрешима.

Как можно синхр. процессы между собой: самое простое --- явняа синхронизация. Ошибка в первой строчке B() --- должно быть cnt--

[править] Основные операторы Promela

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

В примерах уже встреч неск. типов операторов:

  • Печать. Выполн. всегда, не влияет ни на что
  • Оператор присваивания. Выполн. Всегда, меняет левую часть
  • Оператор-выраж --- выполним, только если выражение не равно 0.

Примеры выражений: ...

Смысл выполнения выражения: выражение --- осн. мех. синхр., осн. мех управления процессами, соответственно, мы записываем выражение, и, если знач. равно нулю, то осн. вып. процесса. Это тот самый страж Дейкстры.

Как говорилось, процессы вып. асинхронно. Между выполн. двух посл операторов может пройти сколько угодно времени, и в это время могут быть выполн. операторы других процессов. Если мы хотим установить порядок вып., то должны установить его явно.Операторы выполн. атомарно. Также есть ср-ва атомарного выполнения цепочки операторов. В теле одного процесса также допускается недетерм. ветвление.

В промеле: два вида недетерминизма, внеш. и внутр

  • Ндетерм. выбор процесса
  • Недетерм. выбор действия

Пример внешнего недетерминизма: ...

[править] Выполнимость операторов

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

[править] Псевдо-операторы

  • Может встречаться в выражениях

Ещё есть тип оператора --- ассерт, соответствует ассертам в С. Не влияет на состояние. Если выражение внутри ассерта не равно 0, то ошибка.

В примере ассерт может быть выполнен в любой момент, что соотв. инварианту.

Пример: типичный мех. синхр. с другим процессом.

[править] Оператор рун

Все другие операторы не приводят к побоч. эфф., оператор рун приводит к порожд. процесса.

  • если run (B and run a()) --- процесс будет заблокирован, но процесс буден создан
  • Если оператор run возвр 0, то это наверняка ошибка.


- Как оценивается задание? - Как балет --- сидят 5 человек, оценивают от 0 до 6... - Zerocool: Zero, zero, zero, ... - Ну, это не у меня ник Zerocool...

[править] Пример с 2 процессами

В promela есть перечислимый тип, он практически такой же, как enum в С.

Если перем не иниц, то это довольно быстро выплывет.

do...od задаёт беск. цикл.

При помощи :: задаётся посл. вариантов. Если выполнимо выражение, след за ::, то посл. выполн. все операторы в одной посл. Таких посл. могут быть несколько. Если вып. стражи в неск. посл, то выбор ветки будет недетерм.

Соответственно, здесь есть два процесса. Есть producer и consumer.

Эти процессы могут вып. сколь угодно долго, но мы задаём ключ с числом шагов.

[править] If

Вместо беск. цикла можно использовать IF, который вып. один раз. В промела также поддерживаются типичные операторы в циклах.

То, что связано с каналами сообщ, будет на след. лекции. Это каналы Петерсона, это будет доло и мучительно.


Верификация программ на моделях


01 02 03 04 05 06 07 08 09 10


Календарь

пт пт пт пт пт
Февраль
  08 15 22 29
Март
  14 21 28
Апрель
04 11 18

Материалы по курсу
Список вопросов к экзамену | Примеры задач: 1 2 3 4 5 | Теормин


Эта статья является конспектом лекции.

Эта статья ещё не вычитана. Пожалуйста, вычитайте её и исправьте ошибки, если они есть.
Личные инструменты
Разделы