| Crates.io | oxiz-solver |
| lib.rs | oxiz-solver |
| version | 0.1.2 |
| created_at | 2026-01-12 05:02:40.820833+00 |
| updated_at | 2026-01-21 05:24:34.515063+00 |
| description | Main CDCL(T) Solver API for OxiZ |
| homepage | |
| repository | https://github.com/cool-japan/oxiz |
| max_upload_size | |
| id | 2037017 |
| size | 373,064 |
Main CDCL(T) SMT solver orchestration for OxiZ.
This crate integrates the SAT solver with theory solvers to provide complete SMT solving:
┌────────────────────────────────────────────────────┐
│ Context │
│ (SMT-LIB2 interface, declaration management) │
├────────────────────────────────────────────────────┤
│ Solver │
│ (CDCL(T) orchestration, theory combination) │
├────────────────────────────────────────────────────┤
│ ┌──────────┐ ┌──────────┐ ┌──────────────────┐ │
│ │ SAT Core │ │ EUF │ │ Arithmetic │ │
│ │(oxiz-sat)│ │ Solver │ │ Solver │ │
│ └──────────┘ └──────────┘ └──────────────────┘ │
└────────────────────────────────────────────────────┘
use oxiz_solver::Context;
let mut ctx = Context::new();
// Execute SMT-LIB2 script
let results = ctx.execute_script(r#"
(set-logic QF_LIA)
(declare-const x Int)
(declare-const y Int)
(assert (> x 0))
(assert (< y 10))
(assert (= (+ x y) 15))
(check-sat)
(get-model)
"#)?;
for line in results {
println!("{}", line);
}
use oxiz_solver::{Solver, SolverResult};
use oxiz_core::ast::TermId;
let mut solver = Solver::new();
solver.set_logic("QF_UF");
// Assert terms
solver.assert(term_id);
// Check satisfiability
match solver.check() {
SolverResult::Sat => {
if let Some(model) = solver.model() {
// Extract assignments
}
}
SolverResult::Unsat => println!("Unsatisfiable"),
SolverResult::Unknown => println!("Unknown"),
}
contextHigh-level SMT-LIB2 context:
solverCDCL(T) solver:
QF_UF - Quantifier-free Uninterpreted FunctionsQF_LRA - Quantifier-free Linear Real ArithmeticQF_LIA - Quantifier-free Linear Integer Arithmetic (partial)QF_BV - Quantifier-free BitVectors (partial)oxiz-core - AST and parsingoxiz-sat - SAT solveroxiz-theories - Theory solversMIT OR Apache-2.0