Инструменты обновились сегодня. Настоятельно рекомендуется обновить их перед использованием. Для этого используйте команды opam update
и opam upgrade
.
Автор: Денис Буздалов
Контрольная работа №2-бис
10 июня в 10:00 состоится вторая контрольная работа по блоку спецификации для пропустивших её 28 апреля. Аудитория проведения станет известна в день проведения, узнавать в 718. Время работы 30 мин.
Дата экзамена
Экзамен обеих групп состоится 16 июня. Экзамен письменный, проводится с 10:00, длительность ориентировочно три часа. Экзамен проверяется в тот же день, показ работ после проверки, ближе к вечеру.
UPD: После начала экзамена (непосредственно после раздачи заданий) можно проставить автоматы.
Верификационная часть практического задания
Для получения верификационной части практического задания (после успешного выполнения спецификационной части) необходимо добавить вашу спецификацию к файлу map.h
и прислать его. К функциям, не присутствующим в вашем варианте, не стоит добавлять никаких спецификационных комментариев.
Обратите внимание, что файл map.h
со спецификацией нельзя менять во время выполнения верификационной части. Также, в выданных вам *.c
-файлах все изменения должны составлять добавление спецификационных комментариев в отдельных строках этого файла. Остальные изменения файлов должны быть предварительно согласованы.
В реализации могут быть ошибки. При обнаружении ошибок, необходимо предложить исправление, согласовать его и только после этого продолжать верификацию.
Занятие 19 мая
Ближайшее занятие (19 мая) переносится из аудитории 609 в другую из-за проходящего госэкзамена. В какую именно должно быть написано на самой аудитории. Если ничего написано не будет, приходите в аудиторию 718.
Вторая контрольная работа
На занятии 28 апреля будет проведена контрольная работа по блоку спецификации.
Занятие 14 апреля
Состоялось практическое занятие по пользованию связкой инструментов frama-c – jessie2 – why3.
Были рассмотрены вопросы:
- установка инструмента:
- установка OCaml и OPAM;
- включение OPAM командой в терминале или в
.bashrc
;
- использование инструмента;
- запуск инструмента на заданном файле;
- набор утверждений верхнего уровня (утверждения
*_safety
,*_behaviors
); - отличие условий верификации для default behaviors от условий для именованых поведений;
- разбиение утверждения по конъюнктам в посыле импликации (split);
- подстановка функций с условии верификации (inline);
- полезность выполнения split после inline;
- сохранение статуса доказанности условий верификации (сохранение сессии);
- спецификация операций с переполнениями в логических выражениях и в коде.
Практическое занятие 14 апреля
Напоминаю, что 14 апреля на лекции будет практическое занятие по пользованию связкой инструментов frama-c — jessie2 — why3. Постарайтесь, чтобы у всех были ноутбуки. Максимально желательно, чтобы вы попробовали установить связку инструментов. Инструкция по установке.
Лекция 7 апреля
Состоялась лекция, посвящённая особенностям спецификации структур. Были рассмотрены вопросы:
- спецификация инвариантов типов:
- потребность в выражении свойств, относящихся ко всему типу (т.е., к любой функции, работающей со значением данного типа);
- различие между сильными и слабыми инвариантами (аналогично глобальным инвариантам);
- возможность выражение инвариантов типов при помощи глобальных инвариантов;
- ограничения данного подхода по сравнению с «настоящими» инвариантами типов;
- ghost-переменные и ghost-выражения;
- потребность в выражении некоторых свойств;
- ограничения, накладываемые для ghost-выражения для обеспечения безопасности;
- использование ghost-выражений для моделирования внешнего состояния, используемого для уточнения спецификации (например, для выражения наличия свободной памяти для функций malloc и free).
Четвёртая домашняя работа блока спецификации
Написать спецификации, отражающие данные требования.
Читать далее «Четвёртая домашняя работа блока спецификации»