Verifying Haskell programs by combining testing, model checking and interactive theorem proving
Paper in 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

Proof-assistants

Program verification

Haskell

Binary decision diagrams

Author

Peter Dybjer

Chalmers, Department of Computing Science, Programming Logic

Haiyan Qiao

Chalmers

Makoto Takeyama

National Institute of Advanced Industrial Science and Technology (AIST)

Information and Software Technology

0950-5849 (ISSN)

Vol. 46 15 1011 - 1025

Subject Categories

Computer and Information Science

DOI

10.1016/j.infsof.2004.07.002

More information

Latest update

9/10/2018