Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/p4l1ly/z3-rust

High level bindings for the Microsoft's Z3 SMT solver.
https://github.com/p4l1ly/z3-rust

Last synced: 3 months ago
JSON representation

High level bindings for the Microsoft's Z3 SMT solver.

Awesome Lists containing this project

README

        

High level interface to the Z3 SMT solver. Currently, only support for boolean
logic is implemented. It is therefore usable only as a SAT solver. We have not
yet considered thread safety or reasonable behaviour if multiple contexts are
used at once.

```
use z3::Stage;

// Start to use Z3.
let mut ctx = z3::Context::new();

// Create a variable.
let foo = ctx.var_from_string("foo");

// Add it to the solver.
ctx.assert(foo);

{
// Push Z3 solver's stack.
let mut p = ctx.push();

// A basic example of combining formulae.
let foo_and_not_foo = p.and(vec![foo.inherit(), p.not(foo)]);
p.assert(foo_and_not_foo);

// No way to satisfy foo && !foo.
assert!(!p.is_sat())

} // Pop Z3 solver's stack.

assert!(ctx.is_sat())
```