| Crates.io | oxiz |
| lib.rs | oxiz |
| version | 0.1.2 |
| created_at | 2026-01-12 15:52:48.579491+00 |
| updated_at | 2026-01-21 05:28:12.702946+00 |
| description | Next-Generation SMT Solver in Pure Rust |
| homepage | |
| repository | https://github.com/cool-japan/oxiz |
| max_upload_size | |
| id | 2038075 |
| size | 40,347 |
Next-Generation SMT Solver in Pure Rust
OxiZ is a high-performance SMT (Satisfiability Modulo Theories) solver written entirely in Pure Rust, designed to achieve feature parity with Z3 while leveraging Rust's safety, performance, and concurrency features.
Add OxiZ to your Cargo.toml:
[dependencies]
oxiz = "0.1.2" # Default includes solver
With specific features:
[dependencies]
oxiz = { version = "0.1.2", features = ["nlsat", "optimization"] }
All features:
[dependencies]
oxiz = { version = "0.1.2", features = ["full"] }
use oxiz::{Solver, TermManager, SolverResult};
use num_bigint::BigInt;
let mut solver = Solver::new();
let mut tm = TermManager::new();
// Create variables
let x = tm.mk_var("x", tm.sorts.int_sort);
let y = tm.mk_var("y", tm.sorts.int_sort);
// x + y = 10
let sum = tm.mk_add([x, y]);
let ten = tm.mk_int(BigInt::from(10));
let eq = tm.mk_eq(sum, ten);
// x > 5
let five = tm.mk_int(BigInt::from(5));
let gt = tm.mk_gt(x, five);
// Assert and solve
solver.assert(eq, &mut tm);
solver.assert(gt, &mut tm);
match solver.check(&mut tm) {
SolverResult::Sat => println!("SAT"),
SolverResult::Unsat => println!("UNSAT"),
SolverResult::Unknown => println!("Unknown"),
}
| Feature | Description | Default |
|---|---|---|
solver |
Core SMT solver (SAT + theories) | ✓ |
nlsat |
Nonlinear real arithmetic | |
optimization |
MaxSMT and optimization | |
spacer |
CHC solver for verification | |
proof |
Proof generation | |
standard |
Common features (solver + nlsat + opt + proof) | |
full |
All features |
nlsat feature)Licensed under either of:
at your option.