RSIR: a Rust-based IR for SMT
Description
The Rust programming language promises to deliver memory safe programs that execute at speeds that rival those written in C or C++. Rust also has modern language conveniences specifically and originally designed for programming symbolic reasoning tools. Thus, in principle, Rust is an ideal language for writing fast automated reasoning tools such as solvers for the satisfiablity modulo theories (SMT) problem. But, until now, Rust developers did not have access to an easy-to-use library of logic manipulation procedures, e.g. parsing, pretty-printing, sort checking, conjunctive-normal form transformation, Ackermanization, etc. To address this gap we developed the Rust SMT Intermediate Language (RSIR)library. In this paper we demonstrate how Rust and RSIR make the development of high-performance symbolic reasoning tools easier. We show this using code-snippets from several recently developed RSIR-based applications. For example, we show code from a recently developed UCLID-style eager reduction to propositional logic which outperforms both Z3 and CVC4 on the SMT-COMP bcnscheduing and job_shop benchmarks. This solver, together with the other example utilities, are included as code samples in the open-source repository, available at https://github.com/awslabs/rust-smt-ir.
Files
rsir-artifact.zip
Files
(415.1 MB)
Name | Size | Download all |
---|---|---|
md5:f8b867dc328d909ae209abd680cb715f
|
415.1 MB | Preview Download |