Practical Formal Methods (November 2024)

  • Instructor: Ilya Sergey

  • Lectures: 17-23 November 2024

  • Location: Neapolis University Pafos

Syllabus and Grading

Tentative Schedule

The course is structured as six lectures, each taking about 2.5-3 hours, including discussion and Q&A.

The exact timetable will be announced later.

Lecture

Topics

Materials

1

Course introduction and administration

Introductory case studies in TLA+, Z3, and Dafny

Intro (slides)

Warm-up Examples (slides)

Warm-up Examples (code)

2

TLA+: Basics, State Machines

Specification of Transaction Commit

TLA+ Video Course (Parts 1-5)

TLA+ Examples (code)

3

TLA+: Commit Implementations

TLA+: Specifications in Temporal Logic

Fairness and Liveness

TLA+ Video Course (Parts 5-7)

TLA+ Video Course (Parts 8-10)

Specifying Liveness in TLA+

4

SMT: Satisfiability Modulo Theories

Dafny: Introduction

SMT (slides)

SMT examples (code)

Intro to Dafny (slides)

Dafny examples (code)

5

Floyd-Hoare Logic

Dafny: Reasoning about Loops and Iteration

Floyd-Hoare logic (slides)

Loops in Dafny (slides)

Dafny examples (code)

6

Dafny: Programs with Arrays and Objects

Arrays and Objects in Dafny (slides)

Dafny examples (code)

Software Prerequisites

Please, make sure to install Visual Studio Code and the following extensions and tools:

Additional Materials

This course’s GitHub Organisation. Please, email me your GitHub handle to have access to the code from live demos and other materials.