Third International Conference On Quality Software
Verifying Haskell Programs by Combining Testing and Proving
Dallas, Texas
November 06-November 07
ISBN: 0-7695-2015-4
We propose a method for improving confidence in the correctness of Haskell programs by combining testing and proving. Testing is used for debugging programs and specification before a costly proof attempt. During a proof development, testing also quickly eliminates wrong conjectures. Proving helps us to decompose a testing task in a way that is guaranteed to be correct. To demonstrate the method we have extended the Agda/Alfa proof assistant for dependent type theory with a tool for random testing. As an example we show how the correctness of a BDD-algorithm written in Haskell is verified by testing properties of component functions. We also discuss faithful translations from Haskell to type theory.
Index Terms:
program verification, random testing, proof-assistants, type theory, BDDs and Haskell
Citation:
Peter Dybjer, Qiao Haiyan, Makoto Takeyama, "Verifying Haskell Programs by Combining Testing and Proving," qsic, pp.272, Third International Conference On Quality Software, 2003