Title
Verifying Haskell programs by combining testing, model checking and interactive theorem proving
Abstract
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.
Year
DOI
Venue
2004
10.1016/j.infsof.2004.07.002
Information and Software Technology
Keywords
Field
DocType
Program verification,Random testing,Proof-assistants,Type theory,Binary decision diagrams,Haskell
Programming language,Random testing,Model checking,Computer science,Correctness,Binary decision diagram,Automated proof checking,Theoretical computer science,Agda,Haskell,Proof assistant
Journal
Volume
Issue
ISSN
46
15
0950-5849
Citations 
PageRank 
References 
8
0.53
12
Authors
3
Name
Order
Citations
PageRank
Peter Dybjer154076.99
Qiao Haiyan2423.61
Makoto Takeyama3677.46