Přeskočit na hlavní obsah
Přeskočit hlavičku

Interaktivní a automatizované dokazování korektnosti programů

Typ studia navazující magisterské
Jazyk výuky angličtina
Kód 460-4145/02
Zkratka IADKP
Název předmětu česky Interaktivní a automatizované dokazování korektnosti programů
Název předmětu anglicky Interactive and Automated Proving of Program Correctness
Kreditů 4
Garantující katedra Katedra informatiky
Garant předmětu doc. Ing. Zdeněk Sawa, Ph.D.

Osnova předmětu

Přednášky:

1. Úvod. Funkcionální programování v systému Coq.
2. Důkazy indukcí. Práce s datovými strukturami.
3. Polymorfismus a funkce vyššího řádu.
4. Základy logiky v systému Coq. Používání taktik v důkazech.
5. Induktivně definovaná tvrzení. Dokazování vlastností relací.
6. Formalizace syntaxe a sémantiky jednoduchého imperativního jazyka.
7. Strukturální operační sémantika.
8. Ekvivalence programů.
9. Logiky pro dokazování vlastností programů: Hoarova logika a separační logika.
10. Typové systémy.
11. Dokazování vlastností typových systémů.
12. Dokazování vlastností funkcionálních programů.
13. Verifikace implementace datových struktur.

Cvičení:

1. Seznámení se se systémem Coq.
2. Základy funkcionálního programování v Coqu.
3. Jednoduché důkazy v systému Coq.
4. Základy logiky v systému Coq. Používání taktik v důkazech.
5. Další techniky důkazů v Coqu.
6. Formalizace syntaxe a sémantiky jednoduchého imperativního jazyka.
7. Formalizace sémantiky jednoduchého imperativního jazyka v Coqu.
8. Dokazování některých vlastností programů.
9. Formalizace Hoarovy logiky v Coqu, důkaz korektnosti konkrétního jednoduchého algoritmu.
10. Další důkazy korektnosti algoritmů pomocí Hoarovy logiky.
11. Formalizace jednoduchého typového systému v Coqu.
12. Dokazování vlastností funkcionálních programů.
13. Verifikace implementace datových struktur.

E-learning

Materiály jsou dostupné na webu pedagoga: https://www.cs.vsb.cz/sawa/iadkp

Konzultace prostřednictvím MS Teams.

Povinná literatura

[1] Benjamin C. Pierce et al. - Software Foundations (volumes 1 - 5). Electronic textbook, version 5.8., 2020. Dostupné na adrese https://softwarefoundations.cis.upenn.edu

Doporučená literatura

[2] Yves Bertot, Pierre Castéran - Interactive Theorem Proving and Program Development, Springer, 2004.
[3] Andrew W. Appel et al. - Program Logics for Certified Compilers, Cambridge University Press, 2014.
[4] Adam Chlipala - Certified Programming with Dependent Types: A Pragmatic Introduction to the Coq Proof Assistant. The MIT Press, 2013.
[5] Benjamin C. Pierce - Types and Programming Languages, MIT Press, 2002.
[6] Benjamin C. Pierce, ed. - Advanced Topics in Types and Programming Languages. MIT Press, 2004.
[7] Glynn Winskel - Formal Semantics of Programming Languages, The MIT Press, 1993.
[8] Hans Hüttel - Transitions and Trees: An Introduction to Structural Operational Semantics, Cambridge University Press, 2010.