Verifying Haskell programs by combining testing and proving
Paper in proceeding, 2003

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.

proof-assistants

random testing

BDDs and Haskell

program verification

type theory

Author

Peter Dybjer

Chalmers, Department of Computing Science, Programming Logic

Haiyan Qiao

Chalmers, Department of Computing Science, Programming Logic

Makoto Takeyama

Chalmers, Department of Computing Science, Programming Logic

Proceedings 3rd International Conference on Quality Software, IEEE Computer Society Press

1550-6002 (ISSN)

Vol. 2003-January 272-279
0-7695-2015-4 (ISBN)

Subject Categories

Other Mathematics

DOI

10.1109/QSIC.2003.1319111

ISBN

0-7695-2015-4

More information

Latest update

7/12/2024