DoubleCheck your theorems

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.