Lightweight verification of functional programs
Doctoral thesis, 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

Author

Nicholas Smallbone

Chalmers, Computer Science and Engineering (Chalmers), Software Technology (Chalmers)

QuickSpec: Guessing Formal Specifications using Testing

Lecture Notes in Computer Science (including subseries Lecture Notes in Artificial Intelligence and Lecture Notes in Bioinformatics),; Vol. 6143(2010)p. 6-21

Paper in proceeding

Encoding Monomorphic and Polymorphic Types

Lecture Notes in Computer Science (including subseries Lecture Notes in Artificial Intelligence and Lecture Notes in Bioinformatics),; Vol. 7795(2013)p. 493-507

Paper in 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 in proceeding

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

Lecture Notes in Computer Science (including subseries Lecture Notes in Artificial Intelligence and Lecture Notes in Bioinformatics),; Vol. 6803 LNAI(2011)p. 207-221

Paper in proceeding

Accelerating race condition detection through procrastination

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

Paper in proceeding

Automating Inductive Proofs using Theory Exploration

Lecture Notes in Computer Science (including subseries Lecture Notes in Artificial Intelligence and Lecture Notes in Bioinformatics),; Vol. 7898(2013)p. 392-406

Paper in proceeding

Subject Categories

Algebra and Logic

Software Engineering

Areas of Advance

Information and Communication Technology

Roots

Basic sciences

ISBN

978-91-7385-841-0

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

Publisher

Chalmers

HC3, Hörsalsvägen 14

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

More information

Latest update

1/18/2019