Состоялась вводная лекция, посвящённая инструментарию frama-c→jessie2→why3 и языку спецификации ACSL. Были рассмотрены:
- идея автоматизации применения методов Флойда для функции на языке Си (в
качестве модели программы) и контракта ACSL (в качестве модели требований); - примеры применения связки инструментов для доказательства полной коррекности;
- аннотирование спецификационными комментариями ACSL;
- базовые элементы контрактов ACSL:
- способ выражения пред- и постусловий (конструкции
requires
иensures
); - обращение к входным переменным (по имени) и результату (выражение
\result
); - идея о недоступности изменённых входных переменных-параметров функции из постусловия, т.е. что в постусловии используются значения, переданные при вызове;
- использование кванторов в предикатах (выражения
\forall
,\exists
);
- способ выражения пред- и постусловий (конструкции
- разница между математическим целым (
integer
) и машинным целым (int
) в ACSL.