460-4145/01 – Interactive and Automated Proving of Program Correctness (IADKP)

Gurantor departmentDepartment of Computer ScienceCredits4
Subject guarantordoc. Ing. Zdeněk Sawa, Ph.D.Subject version guarantordoc. Ing. Zdeněk Sawa, Ph.D.
Study levelundergraduate or graduateRequirementOptional
Year1Semestersummer
Study languageCzech
Year of introduction2022/2023Year of cancellation
Intended for the facultiesFEIIntended for study typesFollow-up Master
Instruction secured by
LoginNameTuitorTeacher giving lectures
SAW75 doc. Ing. Zdeněk Sawa, Ph.D.
Extent of instruction for forms of study
Form of studyWay of compl.Extent
Full-time Credit and Examination 2+2
Part-time Credit and Examination 10+0

Subject aims expressed by acquired skills and competences

In this course, students will get acquainted with methods for formal proving correctness of programs and with a use of tools for interactive and automated theorem proving that can be used for this purpose. The aim is to learn how a semantics of programming languages can be formalized and how properties of programs can be formalized and proved using tools as Hoare logic, separation logic and theory of types.Students will learn how such tools can be formalized and implemented using software tools such as, for example, Coq proof assistant that can be used for partially automated creation of proof and automated verification of correctness of these proofs.

Teaching methods

Lectures
Tutorials

Summary

The course combines several topics - interactive and automated theorem proving, semantics of programming languages and proving correctness of programs. The aim is to introduce to students the possibilities of the use of software tools for interactive and automated theorem proving for construction of formal proofs, verified by a computer, of correctness of programs. There exists a lot of software tools that allow an interactive construction of proofs, where the correctness of these proofs is checked automatically, and that to automate, to a certain degree, some mechanical steps of these proofs. The first part of a semester will be devoted primarily to the basics of working with one of such tools, with Coq proof assistant, which will be used in the second part of a semester for proving correctness of programs. In this second part of semester we will discuss topics concerning different methods of proving of this correctness. To allow to create such formal proofs, a semantics of programs must be formally represented at first. So some lectures will deal with this topic and also with theory of types, which is a closely connected topic. Other discussed topic will be logics used for proving properties of programs - Hoare logic and separation logic (which is a modern and more general extension of Hoare logic that allows to prove correctness of programs that work with pointers and dynamically allocated data structures).

Compulsory literature:

[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

Recommended literature:

[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.

Way of continuous check of knowledge in the course of semester

V průběhu semestru studenti vypracovávají řešení zadaných úloh v programu Coq. Na závěr semestru vypracují v programu Coq kompletní důkaz korektnosti nějakého zadaného algoritmu. Předmět je zakončen zkouškou, která se skládá z písemné a ústní části.

E-learning

Other requirements

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Prerequisities

Subject has no prerequisities.

Co-requisities

Subject has no co-requisities.

Subject syllabus:

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Conditions for subject completion

Full-time form (validity from: 2022/2023 Winter semester)
Task nameType of taskMax. number of points
(act. for subtasks)
Min. number of pointsMax. počet pokusů
Credit and Examination Credit and Examination 100 (100) 51
        Credit Credit 35 (35) 20
                Řešení zadaných problémů Other task type 15  7
                Důkaz koreknosti zadaného programu Project 20  10
        Examination Examination 65  30 3
Mandatory attendence participation: Attendance on exercises is mandatory and it is examined. The guarantor of the course will inform students about the extent of the mandatory attendance at the beginning of a semester.

Show history

Conditions for subject completion and attendance at the exercises within ISP: Completion of all mandatory tasks within individually agreed deadlines. A student will have an agreement on the extent of attendance on exercises at the beginning of a semester.

Show history

Occurrence in study plans

Academic yearProgrammeBranch/spec.Spec.ZaměřeníFormStudy language Tut. centreYearWSType of duty
2024/2025 (N0613A140034) Computer Science P Czech Ostrava 1 Optional study plan
2024/2025 (N0613A140034) Computer Science K Czech Ostrava 1 Optional study plan
2023/2024 (N0613A140034) Computer Science K Czech Ostrava 1 Optional study plan
2023/2024 (N0613A140034) Computer Science P Czech Ostrava 1 Optional study plan
2022/2023 (N0613A140034) Computer Science P Czech Ostrava 1 Optional study plan
2022/2023 (N0613A140034) Computer Science K Czech Ostrava 1 Optional study plan

Occurrence in special blocks

Block nameAcademic yearForm of studyStudy language YearWSType of blockBlock owner

Assessment of instruction

Předmět neobsahuje žádné hodnocení.