Математические методы верификации схем и программ — различия между версиями
PodymovVV (обсуждение | вклад) |
PodymovVV (обсуждение | вклад) |
||
| (не показаны 64 промежуточных версий 1 участника) | |||
| Строка 1: | Строка 1: | ||
| + | [[Категория:Спецкурсы кафедры МК]] | ||
[[Категория:Лекционные курсы кафедры МК]] | [[Категория:Лекционные курсы кафедры МК]] | ||
[[Категория:Магистерская программа Дискретные управляющие системы и их приложения]] | [[Категория:Магистерская программа Дискретные управляющие системы и их приложения]] | ||
| − | ''Актуальность информации: осенний семестр | + | ''Актуальность информации: осенний семестр 2025/2026 учебного года.'' |
| − | Обязательный курс для магистров групп | + | Обязательный курс для магистров групп 618мк_дса, 618мк_дус и 621асвк 3 семестра магистратуры (группа 621асвк - "Методы верификации программ"). |
Курс читает [[Подымов Владислав Васильевич|В. В. Подымов]]. | Курс читает [[Подымов Владислав Васильевич|В. В. Подымов]]. | ||
| − | = | + | = Материалы занятий = |
| − | + | == Лекции == | |
| − | [[Media: | + | [[Media: Verif_VP_01.pdf|Блок 1]] (вводный). Что такое и зачем нужна формальная верификация. |
| − | [[Media: | + | [[Media: Verif_VP_02.pdf|Блок 2.]] Логика предикатов (напоминание). |
| − | [[Media: | + | [[Media: Verif_VP_03.pdf|Блок 3.]] Общие принципы дедуктивной верификации программ. Модельные императивные программы: синтаксис, операционная семантика. |
| − | [[Media: | + | [[Media: Verif_VP_04.pdf|Блок 4.]] Дедуктивная верификация программ: постановка задачи, логика Хоара. |
| − | [[Media: | + | [[Media: Verif_VP_05.pdf|Блок 5.]] Дедуктивная верификация программ: аннотированные программы. |
| − | [[Media: | + | [[Media: Verif_VP_06.pdf|Блок 6.]] Дедуктивная верификация программ: возможности автоматизации, слабейшее предусловие. |
| − | [[Media: | + | [[Media: Verif_VP_07.pdf|Блок 7.]] Общая схема метода model checking. |
| − | [[Media: | + | [[Media: Verif_VP_08.pdf|Блок 8.]] Модели Крипке. |
| − | [[Media: | + | [[Media: Verif_VP_09.pdf|Блок 9.]] Особенности моделирования систем. |
| − | [[Media: | + | [[Media: Verif_VP_10.pdf|Блок 10.]] Пара слов о последовательностях. |
| − | [[Media: | + | [[Media: Verif_VP_11.pdf|Блок 11.]] Свойства трасс. Безопасность и живость. |
| − | [[Media: | + | [[Media: Verif_VP_12.pdf|Блок 12.]] Логика линейного времени (LTL). Постановка задачи верификации моделей Крипке относительно LTL. |
| − | [[Media: | + | [[Media: Verif_VP_13.pdf|Блок 13.]] Размеченные системы переходов. Справедливость для систем переходов. Справедливость в LTL. |
| − | [[Media: | + | [[Media: Verif_VP_14.pdf|Блок 14.]] Автоматный алгоритм model checking для LTL: общая схема. |
| − | [[Media: | + | [[Media: Verif_VP_15.pdf|Блок 15.]] Автоматы Бюхи. Обобщённые автоматы Бюхи. |
| − | [[Media: Verif_VP_16.pdf|Блок 16.]] | + | [[Media: Verif_VP_16.pdf|Блок 16.]] Пересечение автоматов Бюхи. |
| − | [[Media: Verif_VP_17.pdf|Блок 17.]] | + | [[Media: Verif_VP_17.pdf|Блок 17.]] Проверка пустоты автомата Бюхи. |
| − | [[Media: Verif_VP_18.pdf|Блок 18.]] | + | [[Media: Verif_VP_18.pdf|Блок 18.]] Автоматы Бюхи для моделей Крипке |
| − | [[Media: Verif_VP_19.pdf|Блок 19.]] | + | [[Media: Verif_VP_19.pdf|Блок 19.]] Автоматы Бюхи для ltl-формул. |
| − | [[Media: Verif_VP_20.pdf|Блок 20.]] | + | [[Media: Verif_VP_20.pdf|Блок 20.]] Автоматный алгоритм model checking для LTL: уточнённая схема. |
| − | [[Media: Verif_VP_21.pdf|Блок 21.]] | + | [[Media: Verif_VP_21.pdf|Блок 21.]] Логика деревьев вычислений (CTL). Постановка задачи верификации моделей Крипке относительно CTL. |
| − | [[Media: | + | [[Media: Verif_VP_22.pdf|Блок 22.]] Базовый алгоритм model checking для CTL. |
| − | [[Media: | + | [[Media: Verif_VP_23.pdf|Блок 23.]] Справедливость и CTL. |
| − | [[Media: | + | [[Media: Verif_VP_24.pdf|Блок 24.]] Символьные представления моделей. |
| − | [[Media: | + | [[Media: Verif_VP_25.pdf|Блок 25.]] Символьный алгоритм model checking для CTL (начало). |
| − | [[Media: | + | [[Media: Verif_VP_26.pdf|Блок 26.]] Преобразователи предикатов и их неподвижные точки. |
| − | [[Media: | + | [[Media: Verif_VP_27.pdf|Блок 27.]] Символьный алгоритм model checking для CTL (окончание). |
| − | + | [[Media: Verif_VP_28.pdf|Блок 28.]] CTL*. CTL и LTL как фрагменты CTL*. Сравнение выразительности CTL и LTL. | |
| − | = Семинары = | + | [[Media: Verif_VP_29.pdf|Блок 29.]] Системы реального времени (СРВ). Временные автоматы. |
| + | |||
| + | [[Media: Verif_VP_30.pdf|Блок 30.]] Неправдоподобные вычисления временных автоматов. | ||
| + | |||
| + | [[Media: Verif_VP_31.pdf|Блок 31.]] Логика ветвящегося реального времени (TCTL). Задача model checking для TCTL. | ||
| + | |||
| + | [[Media: Verif_VP_32.pdf|Блок 32.]] Сети временных автоматов. | ||
| + | |||
| + | [[Media: Verif_VP_33.pdf|Блок 33.]] Алгоритм model checking для TCTL. Временные регионы. Системы регионов. | ||
| + | |||
| + | [[Media: Verif_VP_34.pdf|Блок 34.]] Отношения симуляции и бисимуляции. Симуляционная и бисимуляционная эквивалентности. | ||
| + | |||
| + | ''Материалы будут появляться по мере проведения занятий.'' | ||
| + | |||
| + | === Прошлогодние === | ||
| + | |||
| + | [[Media: Verif_VP_36.pdf|Блок 36.]] Бисимуляция состояний модели. Алгоритм проверки бисимуляционной эквивалентности. Фактор-модель. | ||
| + | |||
| + | [[Media: Verif_VP_37.pdf|Блок 37.]] Абстракция моделей. Редукция по конусу влияния. Абстракция данных. | ||
| + | |||
| + | [[Media: Verif_VP_38.pdf|Блок 38.]] Bounded model checking (BMC), постановка. | ||
| + | |||
| + | [[Media: Verif_VP_39.pdf|Блок 39.]] Проблема выполнимости булевых формул (SAT). | ||
| + | |||
| + | [[Media: Verif_VP_40.pdf|Блок 40.]] Решение BMC с помощью SAT. | ||
| + | |||
| + | [[Media: Verif_VP_all.pdf|Все слайды лекций в одном файле.]] | ||
| + | |||
| + | == Семинары == | ||
[[Media: Verif_VP_sem01.pdf|Семинар 1.]] Дедуктивная верификация императивных программ. | [[Media: Verif_VP_sem01.pdf|Семинар 1.]] Дедуктивная верификация императивных программ. | ||
| Строка 72: | Строка 101: | ||
[[Media: Verif_VP_sem02.pdf|Семинар 2.]] Модели Крипке. LTL. Безопасность и живость. Справедливость. | [[Media: Verif_VP_sem02.pdf|Семинар 2.]] Модели Крипке. LTL. Безопасность и живость. Справедливость. | ||
| − | [[Media: | + | [[Media: Verif_VP_sem03.pdf|Семинар 3.]] CTL. Базовый алгоритм model checking для CTL. |
| − | + | == Обязательные домашние задания == | |
| − | [[Media: | + | [[Media: Verif_VP_Review_Spin.pdf|Блок О1.]] Обзор средства Spin. |
| + | |||
| + | [[Media: Verif_VP_Prac_Spin.pdf|Семинар О1.]] Упражнения для Spin. | ||
| + | |||
| + | [[Media: Verif_VP_Review_Nusmv.pdf|Блок О2.]] Обзор средства NuSMV. | ||
[[Media: Verif_VP_Prac_Nusmv.pdf|Семинар О2.]] Средство NuSMV. | [[Media: Verif_VP_Prac_Nusmv.pdf|Семинар О2.]] Средство NuSMV. | ||
| − | + | [[Media: Verif_VP_Prac_Uppaal.pdf|Семинар О3.]] Средство Uppaal. | |
| − | + | [[Media: Verif_VP_Prac_Uppaal.zip|Дополнительные материалы к семинару О3.]] | |
| − | '' | + | ''Материалы будут появляться по мере проведения занятий.'' |
| − | = | + | = Экзамен = |
| + | |||
| + | Экзамен проводится письменно, длительность - 120 минут. | ||
| + | Экзаменационная работа состоит из следующих задач: | ||
| + | * 3 задачи, разбиравшиеся на семинарах: доказать частичную корректность программы, формализовать предложение в LTL, проверить выполнимость формулы CTL на модели. | ||
| + | * 6 задач, относящихся к лекциям. В этих задачах могут проверяться, в числе прочего, знания определений и формулировок, умение применять алгоритмы (даже если соответствующих задач не было на семинарах) и углублённое понимание материалов (вопросы на понимание). | ||
Итоговая экзаменационная оценка складывается из | Итоговая экзаменационная оценка складывается из | ||
| − | * оценки за экзаменационную | + | * оценки за экзаменационную работу, |
| − | * | + | * оценок за решение [[#Премиальные задачи|премиальных задач]] и |
| − | * оценок за | + | * зачетных оценок за выполнение [[#Обязательные домашние задания|обязательных домашних заданий]]. |
| + | |||
| + | Каждая экзаменационная задача оценивается по шкале от 0 до 4 баллов. | ||
| + | Эти баллы суммируются, и к ним прибавляются баллы за премиальные задачи. | ||
| + | Оценка за экзамен зависит от суммарного балла и от сдачи обязательных заданий так: | ||
| − | + | {|class="wikitable" | |
| − | + | | | |
| − | + | | | |
| + | !colspan="3"|Количество зачтённых обязательных заданий | ||
| + | |- | ||
| + | | | ||
| + | | | ||
| + | | 3 | ||
| + | | 2 | ||
| + | | 1 или 0 | ||
| + | |- | ||
| + | !rowspan="4"|Баллы | ||
| + | | 29 или больше | ||
| + | | Отлично | ||
| + | | Хорошо | ||
| + | | Удовлетворительно | ||
| + | |- | ||
| + | | 22-28 | ||
| + | | Хорошо | ||
| + | | Удовлетворительно | ||
| + | | Неудовлетворительно | ||
| + | |- | ||
| + | | 15-21 | ||
| + | | Удовлетворительно | ||
| + | | Неудовлетворительно | ||
| + | | Неудовлетворительно | ||
| + | |- | ||
| + | | меньше 15 | ||
| + | | Неудовлетворительно | ||
| + | | Неудовлетворительно | ||
| + | | Неудовлетворительно | ||
| + | |} | ||
= Обязательные домашние задания = | = Обязательные домашние задания = | ||
| − | Курсом предполагаются три обязательных домашних задания: | + | Курсом предполагаются три обязательных домашних задания: "Spin", "NuSMV", "Uppaal". |
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
== Установка средств верификации == | == Установка средств верификации == | ||
| − | + | Для выполнения обязательных домашних заданий необходимо поставить на свою рабочую машину средства | |
| − | + | * [http://spinroot.com Spin], | |
| − | + | * [http://nusmv.fbk.eu NuSMV], | |
| − | + | * [http://uppaal.org UPPAAL]. | |
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | Рекомендуется всё это поставить в Linux - иначе могут возникать странные технические проблемы и излишние препятствия. | |
| − | + | После установки средств желательно проверить, что они работают: | |
| − | + | * "'''./spin -a <папка с примерами spin>/LTL/bakery.pml'''" успешно завершает работу без вывода; | |
| − | + | * в выводе "'''./NuSMV'''" есть строки, утверждающие, что | |
| − | * | + | ** подключены CUDD и MiniSat, либо нет строк о том, что что-то надо подключить, и |
| − | * | + | ** входной файл не подан и работа завершена; |
| − | ** | + | * "'''./uppaal'''" загружает графический интерфейс и для какого-нибудь примера при нажатии на кнопку '''Check''' вкладки '''Verifier''' при каком-нибудь выделенном свойстве завершает вывод словами '''Property is satisfied''' или '''Property is not satisfied'''. |
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | Для полноценной работы на семинарах, посвящённых средствам верификации, требуется принести и использовать свой ноутбук (или хотя бы ноутбук соседа). | |
| + | Участие без ноутбука тоже возможно: слушать, смотреть, записывать, но без возможности воспроизвести обсуждаемое или попробовать что-то своё. | ||
| − | + | == Общие правила выполнения заданий "Spin", "NuSMV", "Uppaal" == | |
| − | * | + | |
| − | * | + | Задания можно выполнять в одиночку или вдвоём. |
| + | Для получения задания следует отправить [[Подымов Владислав Васильевич|ему]] на почту письмо с любым текстом и заголовком в следующем формате ('''ZZ''' заменяется на '''spin''', '''nusmv''' или '''uppaal''' в зависимости от того, какое задание запрашивается): | ||
| + | * '''[ver-ZZ] группа Фамилия И.О.''' для выполнения в одиночку. | ||
| + | * '''[ver-ZZ] группа Фамилия И.О., Фамилия И.О.''' для выполнения вдвоём. | ||
| + | В ответ будет выслано письмо с системой и целями её исследования при помощи проверки требований. | ||
| + | |||
| + | В тексте письма можно выразить пожелания о том, какого рода задание хочется, вплоть до точной формулировки. | ||
| + | Разумные пожелания будут учтены по возможности. | ||
| + | Типовые примеры пожеланий: примеры пожеланий: "хочу исследовать параллельно работающие программы", "... схему", "... игру/головоломку", "... систему общего вида, без программистско-математической специализации". | ||
| + | |||
| + | Срок выполнения заданий: | ||
| + | * Первый дедлайн указан в плане занятий. Если все задачи сданы к своим первым дедлайнам, то (помимо отсутствия штрафов за невыполнение заданий) выдаётся некоторое поощрение. | ||
| + | * Второй дедлайн - конец семестра (20 декабря). Если все задачи сданы в этот срок, то выдаётся чуть меньшее поощрение. | ||
| + | * Третий дедлайн - вплоть до экзамена, пока лектору не надоест. Имейте в виду, что задание, присланное слишком близко к экзамену, может быть и не проверено, если лектору надоело. | ||
| + | |||
| + | Присланное решение принимается, не принимается или отправляется на доработку в зависимости от того, насколько оно правильно и, если есть ошибки, насколько хорошо в нём видны осознанные попытки разобраться в принципах работы со средством верификации. | ||
== Spin == | == Spin == | ||
| Строка 153: | Строка 214: | ||
Решение этого задания - это | Решение этого задания - это | ||
* файл с расширением ".pml", содержащий формализацию системы и требований на языке PROMELA, и | * файл с расширением ".pml", содержащий формализацию системы и требований на языке PROMELA, и | ||
| − | * пояснение того, как результаты проверки требований, выдаваемые средством Spin, соотносятся с поставленными целями, в свободной форме. | + | * пояснение в свободной форме того, как результаты проверки требований, выдаваемые средством Spin, соотносятся с поставленными целями. |
| + | |||
| + | == NuSMV == | ||
| + | |||
| + | Решение этого задания - это | ||
| + | * файл с расширением ".smv", содержащий формализацию системы и требований в формате средства NuSMV, и | ||
| + | * пояснение в свободной форме того, как результаты проверки требований, выдаваемые NuSMV, соотносятся с поставленными целями. | ||
== Uppaal == | == Uppaal == | ||
| Строка 159: | Строка 226: | ||
Решение этого задания - это | Решение этого задания - это | ||
* файл или файлы, сгенерированные средством Uppaal и содержащие формализацию системы и требований (Uppaal 4.1: файл ".xml"; Uppaal 4.0: файлы ".xml" и ".q"), и | * файл или файлы, сгенерированные средством Uppaal и содержащие формализацию системы и требований (Uppaal 4.1: файл ".xml"; Uppaal 4.0: файлы ".xml" и ".q"), и | ||
| − | * пояснение того, как результаты проверки требований, выдаваемые средством Uppaal | + | * пояснение в свободной форме того, как результаты проверки требований, выдаваемые средством Uppaal. |
= Премиальные задачи = | = Премиальные задачи = | ||
| Строка 178: | Строка 245: | ||
Если написать письмо с любым содержанием и заголовком '''[ver-ctl] группа Фамилия И.О.''', то в ответ будут присланы описание системы и требований к этой системе. | Если написать письмо с любым содержанием и заголовком '''[ver-ctl] группа Фамилия И.О.''', то в ответ будут присланы описание системы и требований к этой системе. | ||
| − | Требуется адекватно формализовать требования в логике ветвящегося времени и изобразить шаги работы | + | Требуется адекватно формализовать требования в логике ветвящегося времени и изобразить шаги работы базового или символьного алгоритма. |
Если сомневаетесь, что означает "изобразить шаги работы алгоритма", то по умолчанию поступайте так: | Если сомневаетесь, что означает "изобразить шаги работы алгоритма", то по умолчанию поступайте так: | ||
| − | * | + | * базовый алгоритм: |
** нарисовать модель Крипке, адекватно описывающую систему; | ** нарисовать модель Крипке, адекватно описывающую систему; | ||
| − | ** описать пошаговое получение | + | ** описать пошаговое получение информации о выполнимости подформул алгоритмом настолько (''не'')строго, чтобы можно было без чрезмерных усилий строго восстановить каждый шаг работы алгоритма; |
* символьный алгоритм: | * символьный алгоритм: | ||
| − | ** описать | + | ** описать символьное представление модели Крипке (основанной на любом общеизвестном представлении булевых функций); |
** описать пошаговое преобразование символьных записей алгоритмом настолько (''не'')строго, чтобы можно было без чрезмерных усилий строго восстановить каждый шаг работы алгоритма. | ** описать пошаговое преобразование символьных записей алгоритмом настолько (''не'')строго, чтобы можно было без чрезмерных усилий строго восстановить каждый шаг работы алгоритма. | ||
| Строка 212: | Строка 279: | ||
#Baier C., Katoen J.-P. Principles of model checking, MIT Press, 2008. | #Baier C., Katoen J.-P. Principles of model checking, MIT Press, 2008. | ||
#Clarke E., Henzinger T.A., Veith H., Bloem R. Handbook of model checking, Springer, 2018. | #Clarke E., Henzinger T.A., Veith H., Bloem R. Handbook of model checking, Springer, 2018. | ||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
Текущая версия на 12:55, 27 ноября 2025
Актуальность информации: осенний семестр 2025/2026 учебного года.
Обязательный курс для магистров групп 618мк_дса, 618мк_дус и 621асвк 3 семестра магистратуры (группа 621асвк - "Методы верификации программ"). Курс читает В. В. Подымов.
Содержание
Материалы занятий
Лекции
Блок 1 (вводный). Что такое и зачем нужна формальная верификация.
Блок 2. Логика предикатов (напоминание).
Блок 3. Общие принципы дедуктивной верификации программ. Модельные императивные программы: синтаксис, операционная семантика.
Блок 4. Дедуктивная верификация программ: постановка задачи, логика Хоара.
Блок 5. Дедуктивная верификация программ: аннотированные программы.
Блок 6. Дедуктивная верификация программ: возможности автоматизации, слабейшее предусловие.
Блок 7. Общая схема метода model checking.
Блок 8. Модели Крипке.
Блок 9. Особенности моделирования систем.
Блок 10. Пара слов о последовательностях.
Блок 11. Свойства трасс. Безопасность и живость.
Блок 12. Логика линейного времени (LTL). Постановка задачи верификации моделей Крипке относительно LTL.
Блок 13. Размеченные системы переходов. Справедливость для систем переходов. Справедливость в LTL.
Блок 14. Автоматный алгоритм model checking для LTL: общая схема.
Блок 15. Автоматы Бюхи. Обобщённые автоматы Бюхи.
Блок 16. Пересечение автоматов Бюхи.
Блок 17. Проверка пустоты автомата Бюхи.
Блок 18. Автоматы Бюхи для моделей Крипке
Блок 19. Автоматы Бюхи для ltl-формул.
Блок 20. Автоматный алгоритм model checking для LTL: уточнённая схема.
Блок 21. Логика деревьев вычислений (CTL). Постановка задачи верификации моделей Крипке относительно CTL.
Блок 22. Базовый алгоритм model checking для CTL.
Блок 23. Справедливость и CTL.
Блок 24. Символьные представления моделей.
Блок 25. Символьный алгоритм model checking для CTL (начало).
Блок 26. Преобразователи предикатов и их неподвижные точки.
Блок 27. Символьный алгоритм model checking для CTL (окончание).
Блок 28. CTL*. CTL и LTL как фрагменты CTL*. Сравнение выразительности CTL и LTL.
Блок 29. Системы реального времени (СРВ). Временные автоматы.
Блок 30. Неправдоподобные вычисления временных автоматов.
Блок 31. Логика ветвящегося реального времени (TCTL). Задача model checking для TCTL.
Блок 32. Сети временных автоматов.
Блок 33. Алгоритм model checking для TCTL. Временные регионы. Системы регионов.
Блок 34. Отношения симуляции и бисимуляции. Симуляционная и бисимуляционная эквивалентности.
Материалы будут появляться по мере проведения занятий.
Прошлогодние
Блок 36. Бисимуляция состояний модели. Алгоритм проверки бисимуляционной эквивалентности. Фактор-модель.
Блок 37. Абстракция моделей. Редукция по конусу влияния. Абстракция данных.
Блок 38. Bounded model checking (BMC), постановка.
Блок 39. Проблема выполнимости булевых формул (SAT).
Блок 40. Решение BMC с помощью SAT.
Все слайды лекций в одном файле.
Семинары
Семинар 1. Дедуктивная верификация императивных программ.
Семинар 2. Модели Крипке. LTL. Безопасность и живость. Справедливость.
Семинар 3. CTL. Базовый алгоритм model checking для CTL.
Обязательные домашние задания
Блок О1. Обзор средства Spin.
Семинар О1. Упражнения для Spin.
Блок О2. Обзор средства NuSMV.
Семинар О2. Средство NuSMV.
Семинар О3. Средство Uppaal.
Дополнительные материалы к семинару О3.
Материалы будут появляться по мере проведения занятий.
Экзамен
Экзамен проводится письменно, длительность - 120 минут. Экзаменационная работа состоит из следующих задач:
- 3 задачи, разбиравшиеся на семинарах: доказать частичную корректность программы, формализовать предложение в LTL, проверить выполнимость формулы CTL на модели.
- 6 задач, относящихся к лекциям. В этих задачах могут проверяться, в числе прочего, знания определений и формулировок, умение применять алгоритмы (даже если соответствующих задач не было на семинарах) и углублённое понимание материалов (вопросы на понимание).
Итоговая экзаменационная оценка складывается из
- оценки за экзаменационную работу,
- оценок за решение премиальных задач и
- зачетных оценок за выполнение обязательных домашних заданий.
Каждая экзаменационная задача оценивается по шкале от 0 до 4 баллов. Эти баллы суммируются, и к ним прибавляются баллы за премиальные задачи. Оценка за экзамен зависит от суммарного балла и от сдачи обязательных заданий так:
| Количество зачтённых обязательных заданий | ||||
|---|---|---|---|---|
| 3 | 2 | 1 или 0 | ||
| Баллы | 29 или больше | Отлично | Хорошо | Удовлетворительно |
| 22-28 | Хорошо | Удовлетворительно | Неудовлетворительно | |
| 15-21 | Удовлетворительно | Неудовлетворительно | Неудовлетворительно | |
| меньше 15 | Неудовлетворительно | Неудовлетворительно | Неудовлетворительно | |
Обязательные домашние задания
Курсом предполагаются три обязательных домашних задания: "Spin", "NuSMV", "Uppaal".
Установка средств верификации
Для выполнения обязательных домашних заданий необходимо поставить на свою рабочую машину средства
Рекомендуется всё это поставить в Linux - иначе могут возникать странные технические проблемы и излишние препятствия.
После установки средств желательно проверить, что они работают:
- "./spin -a <папка с примерами spin>/LTL/bakery.pml" успешно завершает работу без вывода;
- в выводе "./NuSMV" есть строки, утверждающие, что
- подключены CUDD и MiniSat, либо нет строк о том, что что-то надо подключить, и
- входной файл не подан и работа завершена;
- "./uppaal" загружает графический интерфейс и для какого-нибудь примера при нажатии на кнопку Check вкладки Verifier при каком-нибудь выделенном свойстве завершает вывод словами Property is satisfied или Property is not satisfied.
Для полноценной работы на семинарах, посвящённых средствам верификации, требуется принести и использовать свой ноутбук (или хотя бы ноутбук соседа). Участие без ноутбука тоже возможно: слушать, смотреть, записывать, но без возможности воспроизвести обсуждаемое или попробовать что-то своё.
Общие правила выполнения заданий "Spin", "NuSMV", "Uppaal"
Задания можно выполнять в одиночку или вдвоём. Для получения задания следует отправить ему на почту письмо с любым текстом и заголовком в следующем формате (ZZ заменяется на spin, nusmv или uppaal в зависимости от того, какое задание запрашивается):
- [ver-ZZ] группа Фамилия И.О. для выполнения в одиночку.
- [ver-ZZ] группа Фамилия И.О., Фамилия И.О. для выполнения вдвоём.
В ответ будет выслано письмо с системой и целями её исследования при помощи проверки требований.
В тексте письма можно выразить пожелания о том, какого рода задание хочется, вплоть до точной формулировки. Разумные пожелания будут учтены по возможности. Типовые примеры пожеланий: примеры пожеланий: "хочу исследовать параллельно работающие программы", "... схему", "... игру/головоломку", "... систему общего вида, без программистско-математической специализации".
Срок выполнения заданий:
- Первый дедлайн указан в плане занятий. Если все задачи сданы к своим первым дедлайнам, то (помимо отсутствия штрафов за невыполнение заданий) выдаётся некоторое поощрение.
- Второй дедлайн - конец семестра (20 декабря). Если все задачи сданы в этот срок, то выдаётся чуть меньшее поощрение.
- Третий дедлайн - вплоть до экзамена, пока лектору не надоест. Имейте в виду, что задание, присланное слишком близко к экзамену, может быть и не проверено, если лектору надоело.
Присланное решение принимается, не принимается или отправляется на доработку в зависимости от того, насколько оно правильно и, если есть ошибки, насколько хорошо в нём видны осознанные попытки разобраться в принципах работы со средством верификации.
Spin
Решение этого задания - это
- файл с расширением ".pml", содержащий формализацию системы и требований на языке PROMELA, и
- пояснение в свободной форме того, как результаты проверки требований, выдаваемые средством Spin, соотносятся с поставленными целями.
NuSMV
Решение этого задания - это
- файл с расширением ".smv", содержащий формализацию системы и требований в формате средства NuSMV, и
- пояснение в свободной форме того, как результаты проверки требований, выдаваемые NuSMV, соотносятся с поставленными целями.
Uppaal
Решение этого задания - это
- файл или файлы, сгенерированные средством Uppaal и содержащие формализацию системы и требований (Uppaal 4.1: файл ".xml"; Uppaal 4.0: файлы ".xml" и ".q"), и
- пояснение в свободной форме того, как результаты проверки требований, выдаваемые средством Uppaal.
Премиальные задачи
Крайний срок выполнения всех премиальных задач - конец семестра.
Лекционные премиальные задачи
Эти задачи явно обозначаются в слайдах лекций.
Логика Хоара
Задание сформулировано на последнем слайде материалов семинара 1.
Выполнившие это задание освобождаются от решения задачи на тему логики Хоара на экзамене и могут быть поощрены дополнительно за особые заслуги.
CTL: формализация требований и алгоритмы проверки формул
Если написать письмо с любым содержанием и заголовком [ver-ctl] группа Фамилия И.О., то в ответ будут присланы описание системы и требований к этой системе. Требуется адекватно формализовать требования в логике ветвящегося времени и изобразить шаги работы базового или символьного алгоритма.
Если сомневаетесь, что означает "изобразить шаги работы алгоритма", то по умолчанию поступайте так:
- базовый алгоритм:
- нарисовать модель Крипке, адекватно описывающую систему;
- описать пошаговое получение информации о выполнимости подформул алгоритмом настолько (не)строго, чтобы можно было без чрезмерных усилий строго восстановить каждый шаг работы алгоритма;
- символьный алгоритм:
- описать символьное представление модели Крипке (основанной на любом общеизвестном представлении булевых функций);
- описать пошаговое преобразование символьных записей алгоритмом настолько (не)строго, чтобы можно было без чрезмерных усилий строго восстановить каждый шаг работы алгоритма.
Выполнившие это задание освобождаются от задач, темы которых покрываются этим заданием, и могут быть поощрены дополнительно за особые заслуги (например, за хорошее понимание устройства символьного алгоритма).
CTL и справедливость
Это трудное домашнее задание.
При выполнении этого задания автоматически засчитывается часть задания "CTL: формализация требований и алгоритмы проверки формул", относящаяся к изображению шагов работы алгоритма.
Требуется:
- предложить описание символьного алгоритма верификации CTL-формул, работающего в условиях справедливости для CTL:
- можно написать псевдокод с пояснениями,
- можно описать на естественном языке, но так, чтобы можно было без чрезмерных усилий строго восстановить каждый шаг работы алгоритма,
- можно написать программу,
- ...;
- привести пример работы алгоритма, иллюстрирующий его отличие от "несправедливого" символьного алгоритма.
Литература
- Э.М. Кларк, О. Грамберг, Д. Пелед. Верификация моделей программ: Model Checking. Изд-во МЦНМО, 2002.
- Ю.Г. Карпов. Model Checking: верификация параллельных и распределенных программных систем. Изд-во БХВ-Петербург, 2010.
- K. R. Apt, E.-R. Olderog. Verification of sequential and concurrent programs, Springer, 1997.
- B. Berard, M. Bidoit, A. Finkel, F. Laroussinie, A. Petit, L. Petrucci, P. Schnoebelen. Systems and Software Verification: Model-Checking Techniques and Tools. Springer, 2001.
- Baier C., Katoen J.-P. Principles of model checking, MIT Press, 2008.
- Clarke E., Henzinger T.A., Veith H., Bloem R. Handbook of model checking, Springer, 2018.