skip to primary navigationskip to content
 

Course pages 2025–26

Hoare Logic and Model Checking

Part 1: Hoare logic

Lecture Slides Interesting reading and links
Lecture 1: Introduction to Hoare logic pdf
Lecture 2: Examples in Hoare logic pdf
Lecture 3: Formalising the semantics of Hoare logic pdf
Lecture 4: Introduction to separation logic pdf
Original separation logic paper by John C Reynolds
Lecture 5: Verifying abstract data types in separation logic pdf
Lecture 6: Extending Hoare logic pdf

Supervision questions (Hoare logic)

Jean Pichon Pharabod's Hoare Logic exercise sheet has a list of suggested supervision questions for the Hoare logic part of the course. Mike Gordon's exercise set contains some additional exercises.

Past exam questions (Hoare logic)

Care should be taken when revising using past exam papers; a change of emphasis in the course content (starting 2016/17) caused new material to be added, while material that was focused on in earlier years is now only being skimmed over. Further, the current Hoare Logic and Model Checking course is a descendent of many similar courses offered by the Computer Laboratory in previous years, which often had radically different syllabuses. However, the following exam sub-components of exam questions from previous years are still relevant:

  • (Hoare Logic and Model Checking) Paper 8, Question 7, 2019.
  • (Hoare Logic and Model Checking) Paper 9, Question 7, 2018.
  • (Hoare Logic and Model Checking) Paper 7, Question 8, 2017.
  • (Hoare Logic and Model Checking) Paper 7, Question 8, 2016.
  • (Hoare Logic) Part (b) and subsection (i) of Part (c); Paper 7, Question 7, 2015.
  • (Hoare Logic) Paper 7, Question 7, 2013.
  • (Hoare Logic) Parts (a), (b), (c), (d), (e); Paper 8, Question 8, 2013.
  • (Hoare Logic) Parts (a) and (b); Paper 8, Question 8, 2012.
  • (Hoare Logic) Parts (b) and (c); Paper 8, Question 2, 2011.
  • (Hoare Logic) Parts (a) and (b); Paper 7, Question 6, 2011.
  • (Specification and Verification I) Part (a); Paper 7, Question 14, 2010.
  • (Specification and Verification I) Parts (a), (b), (d) and (e); Paper 7, Question 14, 2009.
  • (Specification and Verification I) Parts (a) and (b); Paper 8, Question 16, 2008.
  • (Specification and Verification I) Parts (a), (c), (e) and (i); Paper 7, Question 6, 2007.
  • (Specification and Verification I) Parts (a), (b), (c), (d), (f), (g) and (h); Paper 7, Question 6, 2006.

Part 2: model checking

Lecture Slides Interesting reading and links
Lecture 7: Introduction to Model Checking pdf
Lecture 8: Temporal logics pdf
Lecture 9: Temporal logics (CTL and CTL*) pdf
Lecture 10: Model checking pdf
OCaml code for naive model checker wwctlmc.ml
Lecture 11: Relating temporal models pdf

other materials

Model Checker

Supervision questions (model checking)

  • You might refer to Jean Pichon Pharabod's exercise sheet , which is largely based on previous sheets due to Dominic Mulligan (link) (notation differs).
  • The TLA+ examples page contains a few puzzles (with solutions): Missionaries and Cannibals, Car Talk, N queens, Prisoners, Die Hard 3 puzzle, etc.
  • LTL Tutor, developed at Brown University, might also help you familiarize yourself with LTL effectively.

Past exam questions (model checking)

It is recommended that you first review the past exam questions from the last 4 years.

Care should be taken when revising using past exam papers further; a change of emphasis in the course content (starting 2016/17) caused new material to be added, while material that was focused on in earlier years is now only been skimmed over. Further, the current Hoare Logic and Model Checking course is a descendent of many similar courses offered by the Computer Laboratory in previous years, which often had radically different syllabuses. However, the following exam sub-components of exam questions from previous years are still relevant:

Older questions (beware that sometimes notation differs from that used in the current course)