COMP4161

Advanced Topics in Software Verification

This UNSW course is about mechanical proof assistants, how they work, and what they can be used for. It is taught by members of the Trustworthy Systems group. The course presents specification and proof techniques used in industrial grade interactive theorem provers, teaches the theoretical background to the techniques involved, and shows how to use a theorem prover to conduct formal proofs in practice.

Topics include higher order logic, natural deduction, lambda calculus, term rewriting, data types and recursive functions, induction principles, and proofs about programs. See the course outline for a full content overview and prerequisites.

The course will provide hands-on experience with the proof assistant Isabelle/HOL.

Session times:

  • Mon, 12:00h - 14:00h AEDT @ Science & Engineering G07 (K-E8-G07)
  • Wed, 12:00h - 14:00h AEDT @ Rupert Myers Theatre (K-M15-1001)
  • Lectures are running weeks 1-5 and 7-10, delivery is hybrid in T3 2024. The Zoom link has been posted on Moodle.
  • As Monday of week 5 is a public holiday, we will pre-record and release the Week 5 (A) lecture in week 4.

Lectures

Slides and Isabelle files will be made available online as the lectures progress.

Isabelle hints

Setting up Isabelle, basic rules and cheat sheet.

Textbook

Textbook, further reading, and links the tools used in the lecture.

Slides

Will become available here as course progresses.

Week 1 (A): intro, untyped lambda calculus

slides [pdf], slides with animations [pdf], intro demo [thy], lambda calculus demo [thy]

Week 1 (B): typed lambda calculus

slides [pdf], slides with animations [pdf], demo [thy]

Week 2 (A): HOL, natural deduction for propositional logic

slides [pdf], slides with animations [pdf], demo [thy], demo solution [thy]

Week 2 (B): HOL, quantifiers, automation

slides [pdf], slides with animations [pdf], demo [thy], demo solution [thy]

Week 3 (A): more automation, defining HOL from scratch, Isar (part 1)

slides [pdf], slides with animations [pdf], HOL demo [thy] automation demo [thy] exercise template [thy]

Week 3 (B): term rewriting, confluence, termination

slides [pdf], slides with animations [pdf], introductory demo [thy] simp demo [thy]

Week 4 (A): conditional term rewriting, congruence rules, more confluence

slides [pdf], slides with animations [pdf], demo [thy]

Week 4 (B): sets, type definitions, inductive predicates

slides [pdf], slides with animations [pdf], demo [thy], demo solution [thy]

Week 5 (A): inductive predicates, rule induction formally

slides [pdf], slides with animations [pdf], demo [thy], exercise template [thy], exercise solution [thy]

Week 5 (B): datatypes, datatype induction, primitive recursion

slides [pdf], slides with animations [pdf], demo [thy], demo solution [thy]

Week 7 (A): primrec and rule induction tutorial (regular expressions)

demo prompts [thy], demo as developed [thy]

Week 7 (B): general recursive functions

slides [pdf], slides with animations [pdf], demo [thy]

Week 8 (A): automatic proof and disproof, Isar

slides [pdf], slides with animations [pdf], auto demo [thy], Isar demo (part 1) [thy] Isar demo (part 2) [thy]

Week 8 (B): Semantics and Hoare logic

slides [pdf], slides with animations [pdf], demo [thy], demo solutions[thy]

Week 9 (A): Weakest precondition, verification condition

slides [pdf], slides with animations [pdf], demo [thy], demo solutions[thy]

Week 9 (B): Shallow Embedding, State Monads

  • slides [pdf]
  • slides with animations [pdf]
  • records demo [thy]
  • monad demo (Monads) [thy]
  • monad demo (Monads solution) [thy]
  • monad demo (GCD) [thy]
  • monad demo (GCD solution) [thy]
  • monad demo (While) [thy]

Week 10 (A): C verification, AutoCorres

slides [pdf], slides with animations [pdf], demo [thy], C file [c],
C-Parser and AutoCorres [releases on github]

Week 10 (B): exam preparation

slides [pdf], slides with animations [pdf],
2014 exam papers: exam [pdf], C file [c], Isabelle template [thy].
2014 exam solution: [pdf, thy].
invariant practice demo [thy] and solutions [thy] and Isabelle discussions [thy].

Assignment 1

  • Assignment [pdf]
  • Isabelle template [thy]
  • LaTeX style for type trees (optional) [sty]

You may collect your marked assignment. Run (on a CSE machine):

~cs4161/bin/classrun -collect a1

or use the web interface.

Assignment 2

Assignment submission

submit using give:

give cs4161 a2 a2.thy

You can also use the web interface.

Assignment 3

Assignment submission

submit using give:

give cs4161 a3 a3_pt1.thy a3_pt2.thy

You can also use the web interface.

Exam

The exam is a 24h take-home exam. It starts Thu, 28 Nov 2024, 8am AEDT (Sydney time), and ends Fri, 29 Nov 2024, 7:59am AEDT (Sydney time).

Past exam material is now hidden from the website

  • Current students see the Ed forum

You should use Isabelle2024 and autocorres 1.1 for the exam, like for assignment 3.

Exam submission

You need to submit .thy files using give:

give cs4161 exam exam_pt1.thy exam_pt2.thy

You can also use the web interface.

If you have trouble using the submission system, you can also submit your exam to one of the lecturers by email.

Contact

Forum

We are using Ed for class discussions. Please post questions about lecture material or the assignments and so forth.

Lecturers

Consults by appointment.