#verification #drat #alethe

oxiz-proof

Proof generation and checking for OxiZ SMT solver

6 releases

Uses new Rust 2024

new 0.2.1 Apr 25, 2026
0.2.0 Apr 4, 2026
0.1.3 Feb 6, 2026
0.1.2 Jan 21, 2026

#472 in Testing


Used in 6 crates (3 directly)

Apache-2.0

4MB
93K SLoC

oxiz-proof

Proof generation and checking for the OxiZ SMT solver.

Overview

This crate provides machine-checkable proof output, enabling verification of solver results by external proof checkers. This is a beyond Z3 feature - while Z3 supports generic proofs, OxiZ aims to generate standardized, machine-checkable proofs by default.

Supported Formats

Format Description Checker
DRAT SAT resolution proofs drat-trim, cake_lpr
Alethe SMT-LIB proof format carcara, alethe-checker
LFSC Logical Framework proofs lfscc

Why Machine-Checkable Proofs?

  • Trust: Independent verification of solver correctness
  • Certification: Required for safety-critical applications
  • Debugging: Identify bugs in solver implementation
  • Interoperability: Exchange proofs between tools

Usage

use oxiz_proof::{Proof, ProofStep};

// Proofs are generated automatically during solving
let proof: Proof = solver.get_proof();

// Output in different formats
println!("{}", proof.to_drat());
println!("{}", proof.to_alethe());

SMT-LIB2 Integration

(set-option :produce-proofs true)
(assert (and p (not p)))
(check-sat)  ; Returns UNSAT
(get-proof)  ; Returns proof tree

Proof Structure

(step t1 (cl (not p) q) :rule resolution :premises (t0))
(step t2 (cl (not q) r) :rule unit_resolution :premises (t1 h1))
(step t3 (cl false) :rule false_rule :premises (t2))

Status (v0.2.1)

Metric Value
Version 0.2.1
Status Stable
Release Date 2026-04-25
Tests 563 passing
Rust LoC 25,818 (52 files)
Public API items 804

References

  • Barbosa, H., et al. (2022). Flexible proof production in an industrial-strength SMT solver. IJCAR.
  • Wetzler, N., Heule, M., & Hunt, W. (2014). DRAT-trim: Efficient checking and trimming using expressive clausal proofs. SAT.

License

Apache-2.0

Dependencies

~24MB
~368K SLoC