首页 | 本学科首页   官方微博 | 高级检索  
     


Verifying Haskell programs by combining testing, model checking and interactive theorem proving
Authors:Peter Dybjer  Qiao Haiyan  Makoto Takeyama  
Affiliation:

aDepartment of Computing Science, Chalmers University of Technology and Göteborg University, 412 96 Göteborg, Sweden

bResearch Center for Verification and Semantics, National Institute of Advanced Industrial Science and Technology, Nakoji 3-11-46, Amagasaki, Hyogo 661-0974 Japan

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.
Keywords:Program verification  Random testing  Proof-assistants  Type theory  Binary decision diagrams  Haskell
本文献已被 ScienceDirect 等数据库收录!
设为首页 | 免责声明 | 关于勤云 | 加入收藏

Copyright©北京勤云科技发展有限公司  京ICP备09084417号