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

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

Anotace

Předmět v sobě kombinuje několik témat - interaktivní a automatizované dokazování, sémantiku programovacích jazyků a dokazování korektnosti programů. Cílem se seznámit studenty s tím, jakým způsobem je možné pomocí softwarových nástrojů pro interaktivní a automatizované dokazování vytvářet formální počítačem ověřené důkazy korektnosti programů.

Existuje celá řada softwarových nástrojů, které umožňují interaktivně vytvářet důkazy, přičemž automaticky kontrolují správnost těchto důkazů a do určité míry umožňují automatizovat některé mechanické kroky důkazu.
První část semestru bude věnována primárně základům práce s jedním z takových softwarových nástrojů, se systémem Coq, který pak bude v další části semestru využíván pro dokazování korektnosti programů.
V této druhé části semestru budou probírána témata související s různými metodami dokazování této korektnosti. Aby bylo vůbec možné nějaké takové formální důkazy vytvářet, nejprve musí být formálně reprezentována sémantika programů. Část přednášek tedy bude věnovaná této problematice a také teorii typů, což je téma, které s výše uvedeným úzce souvisí. Dále pak budou studovány logiky používané pro dokazování vlastností programů - Hoarova logika a separační logika (což je modernější a obecnější rozšíření Hoarovy logiky o možnost dokazování korektnosti programů, které pracují s ukazateli a dynamicky alokovanými datovými strukturami).

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.


Jazyk výuky čeština, angličtina
Kód 460-4145
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
Garantující katedra Katedra informatiky
Garant předmětu doc. Ing. Zdeněk Sawa, Ph.D.