Lightweight verification of functional programs
Doktorsavhandling, 2013

We have built several tools to help with testing and verifying functional programs. All three tools are based on QuickCheck properties. Our goal is to allow programmers to do more with QuickCheck properties than just test them. The first tool is QuickSpec, which finds equational specifications, and can be used to help with writing a specification or for program understanding. On top of QuickSpec, we have built HipSpec, which proves properties about Haskell programs, and uses QuickSpec to prove the necessary lemmas. We also describe PULSE and eqc_par_statem, which together can be used to find race conditions in Erlang programs. We believe that testable properties are a good basis for reasoning and verification, and that they give many of the benefits of formal verification without the cost of proof. The chief reason is that they are formal specifications for which the programmer can always get a counterexample when they are false. Furthermore, using testable properties allows us to write better tools. None of our tools would be possible if our properties were not testable. We also present work on encoding types in first-order logic, an essential component when using first-order provers to reason about programs. Our encodings are simple but extremely efficient, as evidenced by benchmarks. We develop the theory behind sound type encodings, and have written tools that implement our ideas.

HC3, Hörsalsvägen 14
Opponent: Dr. K. Rustan M. Leino, Microsoft Research, Redmond, USA


Nicholas Smallbone

Chalmers, Data- och informationsteknik, Programvaruteknik

QuickSpec: Guessing Formal Specifications using Testing

Lecture Notes in Computer Science,; Vol. 6143(2010)p. 6-21

Paper i proceeding

Encoding Monomorphic and Polymorphic Types

Lecture Notes in Computer Science,; Vol. 7795(2013)p. 493-507

Paper i proceeding

Finding Race Conditions in Erlang with Quick Check and PULSE

ICFP'09: Proceedings of the ACM SIGPLAN International Conference on Functional Programming,; (2009)p. 149-160

Paper i proceeding

Sort it out with monotonicity: translating between many-sorted and unsorted first-order logic

Lecture Notes in Computer Science,; (2011)p. 207-221

Paper i proceeding

Accelerating race condition detection through procrastination

Proceedings of the 2011 ACM SIGPLAN Erlang Workshop, Tokyo, 23 September 2011,; (2011)p. 14-22

Paper i proceeding

Automating Inductive Proofs using Theory Exploration

Lecture Notes in Computer Science,; Vol. 7898(2013)p. 392-406

Paper i proceeding


Algebra och logik



Informations- och kommunikationsteknik


Grundläggande vetenskaper



Doktorsavhandlingar vid Chalmers tekniska högskola. Ny serie: 3522

HC3, Hörsalsvägen 14

Opponent: Dr. K. Rustan M. Leino, Microsoft Research, Redmond, USA