IRILL - Research and Innovation on Free Software

Smt.ml - A Multi Back-end Front-end for SMT Solvers in OCaml


"Smt.ml - A Multi Back-end Front-end for SMT Solvers in OCaml"
by Filipe Marques,
Download MP4 format

SMT solvers are crucial tools in fields such as Software Verification, Program Synthesis, and Test-Case Generation. However, using their APIs, especially in typed functional languages like OCaml, can be challenging due to their complexity and lack of user-friendly interfaces. To address this, we propose Smt.ml, an open-source library that serves as a single interface for multiple SMT solvers in OCaml. Currently supporting solvers such as Z3, Colibri2, and Bitwuzla, Smt.ml enables users to seamlessly work with different solvers using one unified syntax. The library incorporates built-in optimizations to handle both concrete and symbolic expressions efficiently. Smt.ml has been successfully integrated with Owi, an interpreter and toolkit for WebAssembly. This integration allowed Owi to perform static symbolic execution and test-case generation for WebAssembly programs. Notably, Owi was able to identify known vulnerabilities in a widely-used C data structure libraries.