CurryCheck: Checking Properties of Curry Programs
Michael Hanus

TL;DR
CurryCheck is an automated testing tool for Curry programs that supports unit tests, property tests, and specification checks, enabling systematic verification and proof of properties for reliable declarative software.
Contribution
It introduces a comprehensive testing framework for Curry that combines property enumeration, proof capabilities, and support for specifications, enhancing program reliability.
Findings
Can prove properties for small finite domains
Supports automated checking of specifications and contracts
Facilitates property- and specification-based development
Abstract
We present CurryCheck, a tool to automate the testing of programs written in the functional logic programming language Curry. CurryCheck executes unit tests as well as property tests which are parameterized over one or more arguments. In the latter case, CurryCheck tests these properties by systematically enumerating test cases so that, for smaller finite domains, CurryCheck can actually prove properties. Unit tests and properties can be defined in a Curry module without being exported. Thus, they are also useful to document the intended semantics of the source code. Furthermore, CurryCheck also supports the automated checking of specifications and contracts occurring in source programs. Hence, CurryCheck is a useful tool that contributes to the property- and specification-based development of reliable and well tested declarative programs.
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
Taxonomy
TopicsSoftware Testing and Debugging Techniques · Formal Methods in Verification · Logic, programming, and type systems
