Verifying Haskell programs by combining testing, model checking and interactive theorem proving
Paper i proceeding, 2004

We propose a program verification method that combines random testing, model checking and interactive theorem proving. Testing and model checking are used for debugging programs and specifications before a costly interactive proof attempt. During proof development, testing and model checking quickly eliminate false conjectures and generate counterexamples which help to correct them. With an interactive theorem prover we also ensure the correctness of the reduction of a top level problem to subproblems that can be tested or proved. We demonstrate the method using our random testing tool and binary decision diagrams-based (BDDs) tautology checker, which are added to the Agda/Alfa interactive proof assistant for dependent type theory. In particular we apply our techniques to the verification of Haskell programs. The first example verifies the BDD checker itself by testing its components. The second uses the tautology checker to verify bitonic sort together with a proof that the reduction of the problem to the checked form is correct.

Type theory

Random testing


Program verification


Binary decision diagrams


Peter Dybjer

Chalmers, Institutionen för datavetenskap, Programmeringslogik

Haiyan Qiao


Makoto Takeyama

National Institute of Advanced Industrial Science and Technology (AIST)

Information and Software Technology

0950-5849 (ISSN)

Vol. 46 15 1011 - 1025


Data- och informationsvetenskap



Mer information

Senast uppdaterat