Integrating SMT-solvers in z and b tools

  • Authors:
  • Alessandro Cavalcante Gurgel;Valério Gutemberg de Medeiros;Marcel Vinicius Medeiros Oliveira;David Boris Paul Déharbe

  • Affiliations:
  • Departamento de Informática e Matemática Aplicada, UFRN, Brazil;Instituto Federal de Educação, Ciência e Tecnologia, IFRN, Brazil;Departamento de Informática e Matemática Aplicada, UFRN, Brazil;Departamento de Informática e Matemática Aplicada, UFRN, Brazil

  • Venue:
  • ABZ'10 Proceedings of the Second international conference on Abstract State Machines, Alloy, B and Z
  • Year:
  • 2010

Quantified Score

Hi-index 0.00

Visualization

Abstract

An important frequent task in both Z and B is the proof of verification conditions (VCs). In Z and B, VCs can be predicates to be discharged as a result of refinement steps, some proof about initialization properties or domain checking. Ideally, a tool that supports any Z and B technique should automatically discharge as many VCs as possible. Here, we present ZB2SMT, a Java package designed to clearly and directly integrate both Z and B tools to the satisfiability module theory (SMT) solvers such as veriT [1], a first-order logic (FOL) theorem prover that accepts the SMT syntax [4] as input. By having the SMT syntax as target we are able to easily integrate with further eleven automatic theorem provers. ZB2SMT is currently used by Batcave [2], an open source tool that generates VCs for the B method and CRefine [3], a tool that supports the Circus refinement calculus. Much of the VCs generated to validate the refinement law applications, are based on FOL predicates. Hence, CRefine uses the ZB2SMT package to automatically prove such predicates. The package integrates elements of Z and B predicates in a common language and transforms these predicates into SMT syntax. In this process, a SMT file is generated containing the predicate and some definitions. It is sent to a chosen SMT solver which yields a Boolean value for the predicate or it can be sent to several SMT solvers in a parallel approach. In order to improve the performance of the proof system, ZB2SMT has a module that can call different instances of solvers at different computers, according to a configuration file. It improves the proof process by allowing different strategies to be performed in parallel, reducing the verification time.