Giter Site home page Giter Site logo

pz3's Introduction

Download

Download PZ3 (with benchmark files): http://git.io/jYKU

Introduction

PZ3 is a parallel SMT solver from the paper "Parallelizing SMT Solving: Lazy Decomposition + Conciliation". It is based on Z3 project(http://z3.codeplex.com) by Microsoft Research. Although PZ3 only supports QF_UF theory for now, we plan to extend PZ3 to support other popular theories such as QF_DL, QF_LRA.

Requirements

OS: Linux distributions

CPU: multi-core CPU with more than 4 cores

Memory: 8GB or higher

Building & Configuration

1. Download source code of Z3 from http://z3.codeplex.com/. You can download Z3 4.3.2 from master branch or 4.3.3 from unstable branch. Please ensure that you are not using an older Z3 because old version has relatively poor support on interpolation. (UPDATE: If you use Z3 4.4.0 or higher, PZ3 would have segmentation fault due to some changes on interpolation API)

2. Build Z3 from source and install it using the following commands:

python scripts/mk_make.py
cd build
make
sudo make install

3. Build PZ3 from source using the following commands:

make

Usage

The usage of PZ3 is

pz3 [Path of SMTLIB2 file] [Number of cores]

For example, if you want to solve test.smt2 with 4 cores, you can execute

pz3 test.smt2 4

Note

  1. it is not recommended to specify Number of cores larger than the number of physical cores because overall performance may degrade significantly.
  2. when Number of cores is specified with 1, we are using sequential Z3 to solve the benchmark file.
  3. PZ3 calls Z3_interpolate_proof but in some versions of Z3 this API is not available. If you have problem building or running the program, you should add the codes below into src/api/z3_interp.h.
void Z3_API Z3_interpolate_proof(Z3_context ctx,
                            Z3_ast proof,
                            int num,
                            Z3_ast *cnsts,
                            unsigned *parents,
                            Z3_params options,
                            Z3_ast *interps,
                            int num_theory,
                            Z3_ast *theory);

pz3's People

Contributors

cxcfan avatar 45258e9f avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.