MoXIchecker: An Extensible Model Checker for MoXI

Salih Ates,Dirk Beyer,Po-Chun Chien,Nian-Ze Lee
2024-07-22
Abstract:MoXI is a new intermediate verification language introduced in 2024 to promote the standardization and open-source implementations for symbolic model checking by extending the SMT-LIB 2 language with constructs to define state-transition systems. The tool suite of MoXI provides a translator from MoXI to Btor2, which is a lower-level intermediate language for hardware verification, and a translation-based model checker, which invokes mature hardware model checkers for Btor2 to analyze the translated verification tasks. The extensibility of such a translation-based model checker is restricted because more complex theories, such as integer or real arithmetics, cannot be precisely expressed with bit-vectors of fixed lengths in Btor2. We present MoXIchecker, the first model checker that solves MoXI verification tasks directly. Instead of translating MoXI to lower-level languages, MoXIchecker uses the solver-agnostic library PySMT for SMT solvers as backend for its verification algorithms. MoXIchecker is extensible because it accommodates verification tasks involving more complex theories, not limited by lower-level languages, facilitates the implementation of new algorithms, and is solver-agnostic by using the API of PySMT. In our evaluation, MoXIchecker uniquely solved tasks that use integer or real arithmetics, and achieved a comparable performance against the translation-based model checker from the MoXI tool suite.
Software Engineering,Programming Languages
What problem does this paper attempt to address?
The problem that this paper attempts to solve is the lack of scalability in the model - checking process in the existing MoXI tool suite, especially the limitations encountered when dealing with verification tasks involving more complex theories (such as integer or real - number arithmetic). Specifically: 1. **Limitations of the translation method**: The existing MoXI - MC - Flow tool solves problems by translating MoXI verification tasks into the lower - level intermediate language Btor2. However, this method has precision problems when expressing more complex background theories (such as integer or real - number arithmetic) because Btor2 is mainly based on fixed - length bit vectors and arrays. 2. **Difficulty in algorithm expansion**: Since MoXI - MC - Flow depends on the Btor2 model checker, developing new algorithms requires in - depth knowledge of how these hardware model checkers work, increasing the development difficulty. To solve these problems, the author proposes MoXIchecker, which is the first model checker to directly address MoXI verification tasks without translating them into other intermediate languages. MoXIchecker uses the PySMT library as a backend, supports multiple background theories, and has the following advantages: - **Full expressive power**: MoXIchecker can handle verification tasks involving more complex background theories as long as there are SMT solvers that support these theories. - **Easy to expand**: Developers can directly operate on SMT formulas that describe the model, facilitating rapid prototyping and algorithm expansion. - **Fair comparison**: It reduces the variables introduced during the translation process, making the comparison between algorithms more fair. In conclusion, MoXIchecker aims to provide a more flexible and powerful framework to promote the standardization and open - source implementation of symbolic model - checking techniques.