Programming with Proofs (November 2025)

  • Instructor: Ilya Sergey

  • Lectures: 18-22 November 2025

  • Location: Neapolis University Pafos

Syllabus and Grading

Course Materials

Course Textbook: The Hitchhiker’s Guide to Logical Verification (aka LoVe) by Baanen et al. Some of the lectures will be based on the materials of new work-in-progress class “Practical Verifications of Data structures and Algoritmms” (aka PraVDA).

Most of the lectures will be given using a white board and via live coding sessions.

Please, email me your GitHub handle (and your name) to have access to the repository containing the code for the lectures. To work on the exercises and assignments, please, create a private fork of the course repository.

Tentative Schedule

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

The timetable below is tentative and is subject to change.

Lecture

Topics

Materials

Homework

1

Tue, Nov 18

6-9pm

Types, Programs, and Proofs

LoVe Chapters 1-3

LoVe Exercises 01, 02, 03

  1. LoVe HW3

2

Wed, Nov 19

6-9pm

Functional Programming in Lean

LoVe Chapter 5

LoVe Exercises 05

  1. LoVe HW5

3

Thu, Nov 20

6-9pm

Inductive Predicates

Verifying Distributed Protocols in Veil

LoVe Chapter 6

LoVe Exercises 06

Veil verifier (slides)

Veil examples (code)

  1. LoVe HW6

  2. PraVDA HW1

4

Fri, Nov 21

12-3pm

Mathematical Structures in Lean

LoVe Chapters 12-14

LoVe Exercises 12, 13, 14

  1. LoVe HW12

5

Sat, Nov 22

12-3pm

Reasoning about Imperative Code

Verifying Imperative Programs in Velvet

Floyd-Hoare logic (slides)

Velvet examples (code)

  1. PraVDA HW2

Software Prerequisites

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

You will need both cvc5 and z3 to be on your PATH to run some of the examples.

Additional Reading and Resources

On Lean

On Lean-based libraries discussed in the class

Lean Community Zulip