Данная книга учит формально рассуждать о компьютерных программах, используя последовательный подход и язык программирования Dafny, поддерживающий верификацию. Показано, как писать спецификации для программ, как удовлетворить требования этих спецификаций и как писать доказательства корректности программ относительно спецификаций. Автор сначала представляет теоретические предпосылки, лежащие в основе рассуждений о программном коде, а затем постепенно переходит к реальным примерам, использующих объекты, структуры данных и нетривиальную рекурсию.
Особенности книги:
• написана простым и понятным языком;
• постепенно вводит все более сложные понятия;
• наглядно демонстрирует, как писать доказательства, а также как определять и верифицировать функциональные и императивные программы;
• приводит примеры программного кода на реальном языке программирования, а не псевдокоде;
• содержит забавные иллюстрации и обучающие упражнения.
%text%