В архиве по этой ссылке находятся исходные файлы для выполнения задания:
- заголовочный файл
stack.h
с определением структуры данныхStack
и заголовками функцийStack__init
,Stack__final
,Stack__push
иStack__pop
- файлы с реализациями этих функций:
dummy_stack.c
,true_stack.c
,magic_stack
,realloc_stack
- файл
main.c
с функциейmain()
.
В заголовочном файле на языке ACSL напишите спецификацию структуры данных Stack
и всех операций над ним согласно приведенным требованиям. При помощи связки инструментов frama-c+jessie2+why3 докажите, что все реализации этих операций полностью корректны относительно их спецификаций. При помощи связки инструментов frama-c+jessie2+why3 докажите полную корректность функции main()
. При необходимости вставляйте дополнительные аннотации в текст функций. Не меняйте спецификацию функций в файлах с реализациями. Далее перечислены требования к этому типу данных.
Это задание является подготовкой к контрольной работе №2. Крайне рекомендую выполнить эту домашнюю работу до контрольной работы. Архив с дополненными файлами и сессиями доказательства присылайте на почту до 23:59 12 апреля. Полную корректность функции main()
необходимо доказывать совместно с каждой из реализаций операций (это следствие того, что инструменту Jessie2 необходима реализация для вычисления регионов).