Верифікація ПЗ
Робоча програма навчальної дисципліни (відповідно до вимог МОН України).
Документ містить мету, результати навчання, структуру змісту, систему оцінювання та літературу.
Код курсу: КА-121-04
Кафедра: Кафедра мовного забезпечення
Кількість кредитів ECTS: 6 (180 годин)
Рівень: Бакалавр / Магістр
Базис: BTRON Coq Base Library & OCaml Oracles (btron.pro/b-system/theorems)
Мета та завдання
Вивчення методів формальної верифікації програмного забезпечення на прикладі повної механічної формалізації операційної системи BTRON (Cleanroom Reference) у Rocq/Coq 9.x з виконавчими моделями на OCaml 5.x. Курс охоплює 11 підсистем, 1 818 замкнених теорем, 21 641 рядок Coq, нуль аксіом і нуль admissions, з суворою 1:1 трасованістю до bare-metal C-реалізації.
Результати навчання
- Розуміти принципи механічної формалізації ОС у Coq (індуктивні інваріанти, soundness).
- Аналізувати формалізацію підсистем BTRON: файлова система, мікроядро, медіа, GUI, драйвери.
- Працювати з парами «Coq-теорія + OCaml-оракул».
- Оцінювати властивості (атомарність, conservation, progress, відсутність priority inversion).
- Застосовувати підхід zero-axioms / zero-admissions до верифікації системного ПЗ.
Структура курсу (модулі за підсистемами BTRON)
- Вступ. Методологія формалізації BTRON
Cleanroom Reference, 1:1 трасованість до C, нуль аксіом, нуль admissions. Загальна статистика: 12 Coq-модулів, 13 OCaml-моделей, 1 818 теорем, 21 641 рядок Coq. Ресурс: btron.pro/b-system/theorems/index.html - B-FS 64-Bit Allocator
6 теорем. Масовий баланс на 64-бітних bitmap Allocation Group, просторова диз’юнктність, бієктивне кодування FID. Файли: bfs_allocator.{ml,v} - B-FS Parameterized B+Tree
6 теорем. Збереження відсортованості ключів, логарифмічна коректність пошуку, відсутність втрати ключів при розщепленні. Файли: bfs_btree.{ml,v} - B-FS Volume V2 Journal
39 теорем. Атомарність WAL-транзакцій, карантин мутацій при збої живлення, ідемпотентність replay журналу. Файли: bfs.{ml,v} - Hypermedia & TAD DND
61 теорема. Збереження DAG, conservation тіл при drag-and-drop, безвтратна серіалізація TAD. Файли: hypermedia_dnd.{ml,v} - InterCore Streaming Protocol
602 теореми. Mutex Elimination Theorem, non-blocking O(1) receive, нульова priority inversion. Файли: media_intercore.{ml,v} - RTP Media Pipeline
161 теорема. Zero-minting на пулах буферів, conservation кадрів, монотонність timestamp. Файли: media_rtp.{ml,v} - SMP / AMP Concurrency
69 теорем. Lock-free CAS progress, консистентність seqlock, безпека передачі периферії. Файли: media_smp.{ml,v} - ITRON Microkernel Core
815 теорем. Решітка станів задач, 140 FIFO-черг, детермінізм wait-release, zero-copy rendezvous. Файли: tron.{ml,v} - OpenGL ES 1.1 / TinyGL
18 теорем. EGL double buffering, обмеження глибини стека матриць, монотонність Z-буфера. Файли: opengl.{ml,v} - GUI Compositor & Blitter
15 теорем. Алгебра кліпінгу, накопичення damage, 2D memory safety. Файли: ui_compose.{ml,v} - Window Manager & UI Shell
14 теорем. Геометрія вкладок, унікальність фокусу, FIFO-черга подій. Файли: ui_elements.{ml,v} - Hardware Drivers (VirtIO, DMA, HID)
13 теорем. Монотонність черг VirtIO, безпека DMA stride, автомат станів клавіатури. Файли: drivers.{ml,v} - Практична лабораторна
Аналіз однієї підсистеми: читання Coq-теорії, відповідного OCaml-оракула та зіставлення з C-реалізацією.
Система оцінювання (100 балів)
- Поточний контроль (аналіз модулів, звіти, рев’ю теорем): 40 балів
- Модульні контрольні роботи (2): 20 балів
- Підсумковий проєкт (формалізація або глибокий аналіз підсистеми): 40 балів
Шкала: 90–100 — відмінно; 75–89 — добре; 60–74 — задовільно; <60 — незадовільно.
Рекомендована література
- BTRON Coq Base Library & OCaml Oracles: https://btron.pro/b-system/theorems/index.html
- Окремі підсторінки теорем для кожної підсистеми (Allocator, B-Tree, Volume, Hypermedia, InterCore, RTP, SMP, ITRON, OpenGL, Compositor, Windows, Drivers).
- Bertot Y., Castéran P. Interactive Theorem Proving and Program Development. Coq’Art. 2004.
- Pierce B.C. et al. Software Foundations (Logical Foundations, Programming Language Foundations).
- Документація Rocq / Coq 9.x та OCaml 5.x.
- Матеріали BTRON / B-System (btron.pro).