[API Coherence] Report for March 2, 2026 - Solver/Optimize/BitVector APIs #8832
Closed
Replies: 3 comments
-
|
This discussion was automatically closed because it expired on 2026-03-09T23:22:44.966Z.
|
Beta Was this translation helpful? Give feedback.
0 replies
-
|
[surprised] Varanasi, Sarat Chandra (GE Ae... reacted to your message:
…________________________________
From: github-actions[bot] ***@***.***>
Sent: Tuesday, March 10, 2026 12:59:49 AM
To: Z3Prover/z3 ***@***.***>
Cc: Subscribed ***@***.***>
Subject: Re: [Z3Prover/z3] [API Coherence] Report for March 2, 2026 - Solver/Optimize/BitVector APIs (Discussion #8832)
Closed #8832<#8832> as outdated.
—
Reply to this email directly, view it on GitHub<#8832>, or unsubscribe<https://github.com/notifications/unsubscribe-auth/AXTHRELAQJQSKPNGMUBCAO34P5SILAVCNFSM6AAAAACWEZJELGVHI2DSMVQWIX3LMV45UABFIRUXGY3VONZWS33OIV3GK3TUHI5E433UNFTGSY3BORUW63R3GI2DKMBSG4ZQ>.
You are receiving this because you are subscribed to this thread.Message ID: ***@***.***>
|
Beta Was this translation helpful? Give feedback.
0 replies
-
|
[0] Varanasi, Sarat Chandra (GE Ae... reacted to your message:
…________________________________
From: github-actions[bot] ***@***.***>
Sent: Tuesday, March 10, 2026 12:59:49 AM
To: Z3Prover/z3 ***@***.***>
Cc: Subscribed ***@***.***>
Subject: Re: [Z3Prover/z3] [API Coherence] Report for March 2, 2026 - Solver/Optimize/BitVector APIs (Discussion #8832)
Closed #8832<#8832> as outdated.
—
Reply to this email directly, view it on GitHub<#8832>, or unsubscribe<https://github.com/notifications/unsubscribe-auth/AXTHRELAQJQSKPNGMUBCAO34P5SILAVCNFSM6AAAAACWEZJELGVHI2DSMVQWIX3LMV45UABFIRUXGY3VONZWS33OIV3GK3TUHI5E433UNFTGSY3BORUW63R3GI2DKMBSG4ZQ>.
You are receiving this because you are subscribed to this thread.Message ID: ***@***.***>
|
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
Summary
This run analyzed Solver APIs, Optimize APIs, and BitVector operations across all 8 language bindings (Java, .NET, C++, Python, TypeScript, OCaml, Go, Rust).
Key Statistics:
🎉 Resolution Updates
The following 11 cached issues have been RESOLVED since the last run (Feb 24):
TypeScript Enhancements
dimacs()methodtranslate()methodJava Enhancements
toDimacs()methodaddSimplifier()method.NET Enhancements
Go Enhancements
GetProof()methodOCaml Enhancements
Rust Enhancements
Excellent progress! The maintainers have been actively improving API coverage.
Progress Tracking
High Priority Issues
1. Go Missing BitVector Reduction Operations
What: BitVector reduction operations
Z3_mk_bvredandandZ3_mk_bvredorare not exposed in Go APIAvailable in: C, C++, Python, Java, .NET, TypeScript, OCaml
Missing in: Go, Rust (high-level)
Use case: Reduce a bitvector to a single bit by AND/OR-ing all bits together
Suggested fix: Add to
src/api/go/bitvec.go:Verified: Checked
src/api/go/bitvec.goon 2026-03-02 - still missing2. Go Missing Specialized Bitwise Operations
What: BitVector bitwise operations
Z3_mk_bvnand,Z3_mk_bvnor,Z3_mk_bvxnorare not exposed in Go APIAvailable in: C, C++, Python, Java, .NET, TypeScript, OCaml
Missing in: Go, Rust (high-level)
Use case: Specialized bitwise operations (NAND, NOR, XNOR gates)
Suggested fix: Add to
src/api/go/bitvec.go:Verified: Checked
src/api/go/bitvec.goon 2026-03-02 - still missingNote: Go API has excellent coverage of overflow checking operations (8/8 implemented), but is missing these 5 bitwise operations.
3. Rust High-Level BitVector API Severely Limited
What: Rust z3 crate's
BVtype has only 15 public methods, while the C API exposes 39+ BitVector operationsAvailable in C API: All 39 operations (arithmetic, bitwise, shifts, rotates, extensions, comparisons, overflow checking, etc.)
Available in Rust: Only 15 methods: basic construction, extract, sign_ext, zero_ext, from_int, to_int, as_i64, as_u64, get_size
Missing in Rust: 24+ operations including:
Impact: High - Rust users must either use operator overloading (limited to basic arithmetic) or drop to low-level FFI
Suggested fix: Expand
/tmp/z3.rs/z3/src/ast/bv.rswith wrapper methods for missing operations. For example:Note: The Rust
z3-syscrate has the FFI bindings for most operations, so this is primarily about adding high-level wrappers.Verified: Checked
/tmp/z3.rs/z3/src/ast/bv.rson 2026-03-02 - confirmed only 15 methodsMedium Priority Issues
4. Optimize Translate Missing in Multiple Languages
What:
Z3_optimize_translatefunction is not exposed in TypeScript, OCaml, Go, or RustAvailable in: C, C++, Python, Java, .NET
Missing in: TypeScript, OCaml, Go, Rust
Use case: Translate an optimizer from one context to another
Suggested fix:
translate(target: Context): Optimizemethod to OptimizeImpl insrc/api/js/src/high-level/high-level.tsfunc (o *Optimize) Translate(target *Context) *Optimizetosrc/api/go/optimize.goval translate : context -> optimize -> optimizetosrc/api/ml/z3.mliz3-sysand high-level wrapper toz3/src/optimize.rsVerified: Re-checked on 2026-03-02 - still missing in all 4 languages
5. Rust Missing Several Solver APIs (External Repository)
What: Rust z3 crate (external repo at
github.com/prove-rs/z3.rs) is missing high-level wrappers for several Solver C API functionsAvailable in C API but missing Rust wrappers:
Z3_solver_interrupt- Interrupt a solverZ3_solver_cube- Get cube for satisfiable formulasZ3_solver_get_trail- Get trail of literalsZ3_solver_congruence_*- Congruence class queriesZ3_solver_solve_for- Solve with specific assumptionsZ3_solver_set_initial_value- Set initial values for variablesZ3_solver_from_file- Load solver from fileZ3_solver_to_dimacs_string- Export to DIMACS formatImpact: Medium - These are specialized features not needed for basic usage
Note: This is an external repository not maintained by the Z3 team
Verified: Checked
/tmp/z3.rs/z3/src/solver.rson 2026-03-02 - confirmed missingLow Priority Issues
6. Rust z3-sys Missing FFI Bindings for Newer C APIs (External Repository)
What: Rust z3-sys crate is missing FFI bindings for some newer C API functions added to Z3
Missing FFI bindings in z3-sys:
Z3_solver_interruptZ3_solver_to_dimacs_stringZ3_solver_add_simplifierZ3_solver_get_trailZ3_solver_register_on_clauseZ3_solver_congruence_*Z3_solver_solve_forZ3_solver_set_initial_valueNote: The z3-sys crate DOES have
Z3_goal_to_dimacs_stringbut not the solver variantImpact: Low - These can be added incrementally as users request them
Note: This is an external repository not maintained by the Z3 team
Verified: Checked
/tmp/z3.rs/z3-sys/src/lib.rson 2026-03-02 - confirmed missingAPI Coverage by Language (BitVector Operations)
Legend: ✅ Complete,⚠️ Partial, ❌ Missing
Methodology Notes
github.com/prove-rs/z3.rs(not by Z3 team)Next Analysis Run
The next run will focus on:
Z3_mk_fpa_*,Z3_fpa_*) - 56 functionsZ3_mk_forall,Z3_mk_exists,Z3_mk_lambda, pattern support)Expected to uncover: API gaps in newer language bindings (TypeScript, Go) for specialized features like FP rounding modes, quantifier patterns, and tactic combinators.
Recommendations for Maintainers
Generated by: API Coherence Checker
Run ID: 2026-03-02
Cache updated: Yes
Beta Was this translation helpful? Give feedback.
All reactions