<div dir="ltr">Dear all,<div><br></div><div>I'm very pleased to announce that scher, the framework I've been working on, has already reached the point where I feel I can present it to the public and ask for feedback.</div><div><br></div><div>scher is a property-based testing framework for Haskell programs with a similar API as QuickCheck or SmallCheck - the main difference is, instead of random testing, it uses the <a href="http://klee.github.io/">Klee</a> engine to perform <a href="https://en.wikipedia.org/wiki/Concolic_testing">concolic testing</a>, a kind of SMT-enhanced testing which provides greater guarantees than random testing.</div><div><br></div><div>If you want to get started with it, you will need:</div><div>* LLVM (I use version 2.9, but you should be able to get 3.4 working with some effort)</div><div>* Klee</div><div>* The <a href="https://github.com/klee/klee-uclibc">klee-uclibc</a> library</div><div>* <a href="http://github.com/m-alvarez/jhc">my fork of the jhc compiler</a>, which adds support for running code without a GC</div><div>* The <a href="http://github.com/m-alvarez/scher">scher</a> library </div><div>* The <a href="http://github.com/m-alvarez/scher-run">scher-run</a> program, which will take care of feeding Klee the right input and formatting the output in a human-readable format.</div><div><br></div><div>If anyone shows interest, I can write a quick-and-dirty tutorial of the exact list of the incantations you need to get started.</div><div><div><br></div><div>As it is right now, everything is experimental and may be subject to change. Furthermore, everything and anything may be broken. Feel free to report any issues, bugs or simply feature requests on GitHub. Any feedback is enormously helpful to me.</div><div><br></div><div>Happy verifying!</div><div><br></div>-- <br><div class="gmail_signature"><div dir="ltr"><div><div dir="ltr">Now I do not know whether I was then a lambda expression emulating a Turing machine, or whether I am a Turing machine emulating a lambda expression.<br></div></div></div></div>
</div></div>