[API Coherence] API Coherence Report - March 11, 2026 (Run #2) - Solver/Optimize/Tactic/Simplifier/Probe APIs #8947
Closed
Replies: 1 comment
-
|
This discussion was automatically closed because it expired on 2026-03-18T23:22:12.745Z.
|
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.
-
API Coherence Report - March 11, 2026
Summary
Analyzed: Solver APIs (extended verification), Optimize APIs (extended verification), Tactic APIs, Simplifier APIs, Probe APIs
Total APIs checked: ~45 functions across 9 languages
Languages covered: Java, .NET (C#), C++, Python, TypeScript/JavaScript, OCaml, Go, Rust
Previously cached issues resolved: 10 ✅
New inconsistencies found: 4
🎉 Resolution Updates
The following 10 cached issues have been resolved since the February 24 run:
High Priority (2 resolved)
getLower(),getUpper(),fromFile(),unsatCore(),objectives(),reasonUnknown()all now implementedMedium Priority (8 resolved)
Excellent progress! The Z3 team has significantly improved API consistency across language bindings.
Progress
High Priority Issues
1. Rust Missing Parallel Tactic Combinators⚠️
What: Tactic parallel combinators
par_or()andpar_and_then()are not exposed in Rust's high-levelz3crateAvailable in: C, C++, Python, .NET, Java, TypeScript, Go, OCaml
Missing in: Rust (high-level
z3crate only)Details:
z3-sysFFI bindings do exposeZ3_tactic_par_orandZ3_tactic_par_and_thenz3crate (z3/src/tactic.rs) only implementsand_then(),or_else(),when(),cond(),repeat(), but not the parallel variantsand_then(),or_else(),when(),cond(),repeat(),try_for(),probe_or_else(),create_skip(),create_fail(),fail_if(),with()par_or(),par_and_then()Suggested fix: Add to
z3/src/tactic.rs:Priority: High - Parallel tactics are important for performance-critical applications
External repo: This issue affects the external
prove-rs/z3.rsrepositoryVerified: Checked current codebase on March 11, 2026 - still missing
Medium Priority Issues
2. Rust Solver Missing toDimacs
What:
Solver.to_dimacs()/Solver.to_dimacs_string()is not exposed in RustAvailable in: C, C++, Python, .NET, Java, TypeScript, Go, OCaml
Missing in: Rust
Details:
Z3_solver_to_dimacs_stringexistsz3crate does not expose it inz3/src/solver.rsSuggested fix: Add to
Solverimpl inz3/src/solver.rs:Priority: Medium - Useful for debugging and exporting to other SAT solvers
External repo: Affects
prove-rs/z3.rsVerified: March 11, 2026 - still missing
3. Rust Optimize Missing translate()
What:
Optimize.translate()is not exposed in RustAvailable in: C, C++, Python, .NET, Java
Missing in: TypeScript, OCaml, Go, Rust
Details:
Z3_optimize_translateexistsz3/src/optimize.rsdoesn't implement itSuggested fix: Add to
Optimizeimpl inz3/src/optimize.rs:Priority: Medium - Needed for moving optimization problems between contexts
External repo: Affects
prove-rs/z3.rsand internal bindings (TypeScript, OCaml, Go)Verified: March 11, 2026 - still missing in Rust
4. Rust Missing Simplifier API
What: Rust completely lacks Simplifier API support
Available in: C, C++, Python, .NET, Java, TypeScript, Go, OCaml
Missing in: Rust
Details:
Z3_mk_simplifier,Z3_simplifier_and_then, etc.z3crate has nosimplifier.rsfileSimplifierstruct or implementation existsPriority: Medium - Simplifiers are used for preprocessing and optimization
External repo: Affects
prove-rs/z3.rsVerified: March 11, 2026 - completely missing
API Coverage Summary by Language
Legend: ✅ = Fully supported, ❌ = Missing
Notes
prove-rs/z3.rsrepository, not in the main Z3 repository. Issues should be reported there.z3/src/simplifier.rsfile exists)Recommendations for Z3 Maintainers
prove-rs/z3.rsmaintainers to ensure feature parityNext Run Plan
The next run will focus on:
Report generated: March 11, 2026
Analyzer version: API Coherence Checker v2.0
Repository: Z3Prover/z3
Cache updated: Yes
Beta Was this translation helpful? Give feedback.
All reactions