QuickCheck: a lightweight tool for random testing of Haskell programs
ICFP '00 Proceedings of the fifth ACM SIGPLAN international conference on Functional programming
Computer-Aided Reasoning: An Approach
Computer-Aided Reasoning: An Approach
Random Testing in Isabelle/HOL
SEFM '04 Proceedings of the Software Engineering and Formal Methods, Second International Conference
ACL2 '06 Proceedings of the sixth international workshop on the ACL2 theorem prover and its applications
Functional programming and theorem proving for undergraduates: a progress report
Proceedings of the 2008 international workshop on Functional and declarative programming in education
Smallcheck and lazy smallcheck: automatic exhaustive testing for small values
Proceedings of the first ACM SIGPLAN symposium on Haskell
A functional I/O system or, fun for freshman kids
Proceedings of the 14th ACM SIGPLAN international conference on Functional programming
Contract-driven testing of javascript code
TOOLS'10 Proceedings of the 48th international conference on Objects, models, components, patterns
Property-Based testing and verification: a catalog of classroom examples
IFL'11 Proceedings of the 23rd international conference on Implementation and Application of Functional Languages
The new quickcheck for isabelle: random, exhaustive and symbolic testing under one roof
CPP'12 Proceedings of the Second international conference on Certified Programs and Proofs
A more formal approach to "computer science: principles"
Proceeding of the 44th ACM technical symposium on Computer science education
Testing noninterference, quickly
Proceedings of the 18th ACM SIGPLAN international conference on Functional programming
Hi-index | 0.01 |
Theorem proving in ACL2 is a complex undertaking. Initial attempts to admit a lemma often fail, in which case the programmer must either redirect ACL2's efforts or change the lemma. ACL2's output does not always indicate whether the formulation of the lemma or the proof process is at fault. In this paper we present the automated testing framework DoubleCheck as an extension of Dracula, the ACL2 development environment for DrScheme. DoubleCheck creates randomized inputs for ACL2 conjectures and uses those to test the conjecture. If these tests fail, the programmer is presented with a list of counterexamples to the conjecture. DoubleCheck can be used to guide the theorem proving process or, in a classroom setting, as a gentle introduction to automated program verification.