Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Correctness proofs of distributed systems with Isabelle

0d4ef9af8e4f0cf5c162b48ba24faea6?s=47 Martin Kleppmann
September 14, 2019

Correctness proofs of distributed systems with Isabelle

Slides from a talk given on 14 September 2019 at Strange Loop in St. Louis, MO, USA.
Note that the talk included live demos, which are not reflected in these slides. See the video recording:


Testing systems is great, but tests can only explore a finite set of inputs and behaviors. Many real systems, especially distributed systems, have a potentially infinite state space. If you want to be sure that a program does the right thing in all possible situations, testing is not sufficient: you need proof. Only mathematical proof, e.g. by induction, can cover an infinite state space.

Pen-and-paper proofs are well established in mathematics, but they need to be laboriously checked by hand, and humans sometimes make mistakes. Automated theorem provers and computerized proof assistants can help here. This talk introduces Isabelle/HOL, an interactive proof assistant that can be used to formally prove the correctness of algorithms. It is somewhat like a programming language and REPL for proofs.

In this talk we will explore how Isabelle can be used to analyze algorithms for distributed systems, and prove them correct. We will work through some example problems in live demos, and prove real theorems about some simple algorithms. Proof assistants still have a pretty steep learning curve, and this talk won't be able to teach you everything, but you will get a sense of the style of reasoning, and maybe you will be tempted to try it for yourself.


Martin Kleppmann

September 14, 2019


  1. None
  2. None
  3. None
  4. None
  5. None
  6. None
  7. None
  8. None
  9. None
  10. None
  11. None
  12. None
  13. None
  14. None
  15. None
  16. None
  17. None
  18. None
  19. None
  20. None
  21. None
  22. None
  23. None
  24. None
  25. None
  26. None
  27. None
  28. None
  29. None
  30. None
  31. None
  32. None
  33. None
  34. None
  35. None
  36. None
  37. None
  38. None