Published November 28, 2021 | Version v1
Software Open

RSIR: a Rust-based IR for SMT

  • 1. Brown University
  • 2. Amazon, University College London

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