Main content

This entry is from Winter semester 2020/21 and might be obsolete. No current equivalent could be found.

CS 524 — Program Verification and Synthesis
(dt. Programmverifikation und -synthese)

Level, degree of commitment Specialization module, depends on importing study program
Forms of teaching and learning,
workload
Lecture (4 SWS), recitation class (2 SWS),
270 hours (90 h attendance, 180 h private study)
Credit points,
formal requirements
9 CP
Course requirement(s): Successful completion of at least 50 percent of the points from the weekly exercises as well as at least 2 presentations of the tasks.
Examination type: Written or oral examination
Language,
Grading
German,
The grading is done with 0 to 15 points according to the examination regulations for the degree program M.Sc. Computer Science.
Origin M.Sc. Computer Science
Duration,
frequency
One semester,
Alle 3-4 Semester
Person in charge of the module's outline Prof. Dr. H.-Peter Gumm

Contents

Practical verification and synthesis of Scala programs with ''Leon'' and ''Dafny''

and their theoretical backgrounds:

  • Hoare calculus, verification conditions, weakest preconditions
  • Decision procedures (linear arithmetic, abstract data types, quantifier elimination)
  • Combination of decision procedures (Satisfiability modulo theories und Z3)
  • Lambda Calculus and Combinatorial Logic
  • Lambda expressions in Scala and Java
  • Higher order predicate logic
  • Modelling and verification of functional languages (Leon)
  • Program synthesis from specifications

Qualification Goals

  • use and application of current research tools,
  • independent exploration of new areas of application,
  • understanding the verification and synthesis of software,
  • development of the theoretical background,
  • knowledge in application of decision procedures and their limits ,
  • knowledge in theory and application of the Lambda calculus,
  • dealing with higher order logic.

Prerequisites

None. The competences taught in the following modules are recommended: Logic, Object-oriented Programming, Algorithms and Data Structures. In addition, basic knowledge of functional programming is recommended.


Applicability

The module can be attended at FB12 in study program(s)

  • B.Sc. Computer Science
  • M.Sc. Computer Science
  • M.Sc. Mathematics
  • M.Sc. Business Mathematics

When studying M.Sc. Computer Science, this module can be attended in the study area Specialization Modules in Computer Science.

The module can also be used in other study programs (export module).

The module is assigned to Theoretical Computer Science. Further information on eligibility can be found in the description of the study area.


Recommended Reading

  • N. Bjørner et. al.: Program Verification as Satisfiability Modulo Theories
  • R. Blanc et al.: An Overview of the Leon Verification System
  • M. Gordon: Programming Language Theory and its Implementation. Prentice Hall
  • H.P. Gumm: Generating algebraic laws from Imperative Programs TCS 217 (1999).
  • S. Hetzl: Higher-Order Logic (logic.at/staff/hetzl/teaching/hol_2013.pdf)
  • V. Kuncak et al.: Leon Dokumentation: leon.epfl.ch/doc/
  • MicroSoft Research: Z3-guide (rise4fun.com/Z3/tutorial/guide)
  • P. Suter et al.: Satisfiability modulo recursive programs



Please note:

This page describes a module according to the latest valid module guide in Winter semester 2020/21. Most rules valid for a module are not covered by the examination regulations and can therefore be updated on a semesterly basis. The following versions are available in the online module guide:

The module guide contains all modules, independent of the current event offer. Please compare the current course catalogue in Marvin.

The information in this online module guide was created automatically. Legally binding is only the information in the examination regulations (Prüfungsordnung). If you notice any discrepancies or errors, we would be grateful for any advice.