[API Coherence] API Coherence Report - March 10, 2026: Verification Run #8934
Closed
Replies: 1 comment
-
|
This discussion was automatically closed because it expired on 2026-03-17T23:22:06.807Z.
|
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 10, 2026
Executive Summary
This run focused on re-verifying all 10 cached issues from the February 24, 2026 run. Great progress has been made! 5 issues are fully resolved, 3 are mostly resolved, and only 2 Rust-specific issues remain open.
Progress Overview
Resolution Updates
✅ Fully Resolved (5 issues)
1. TypeScript Optimize getLower/getUpper
Status: ✅ RESOLVED
What was missing: TypeScript Optimize API couldn't retrieve optimization results
Current status: Implemented in
src/api/js/src/high-level/high-level.ts:2388-23922. TypeScript Optimize Missing APIs
Status: ✅ RESOLVED
What was missing: TypeScript Optimize lacked fromFile(), unsatCore(), reasonUnknown()
Current status: All implemented:
fromFile()at line 2408-2409unsatCore()at line 2396-2397reasonUnknown()at line 2404-24053. Java Solver addSimplifier
Status: ✅ RESOLVED
What was missing: Java Solver API lacked addSimplifier method
Current status: Implemented in
src/api/java/Solver.java:5754. Solver translate in TypeScript, Go, Rust
Status: ✅ RESOLVED
What was missing: solver.translate() was missing in TypeScript, Go, and Rust
Current status:
src/api/js/src/high-level/high-level.ts:2156src/api/go/solver.go:363z3/src/solver.rs:627-6315. Solver getProof in TypeScript, Go
Status: ✅ RESOLVED
What was missing: solver.getProof() was missing in TypeScript and Go
Current status:
src/api/js/src/high-level/high-level.ts:2161src/api/go/solver.go:372-376🟢 Mostly Resolved (3 issues)
6. Solver toDimacs
Previous status: Missing in Java, .NET, TypeScript, Go, OCaml, Rust
Current status: ✅ Available in 7/8 languages
Verified implementations:
z3.pyz3++.hSolver.java:toDimacs()Solver.cs:ToDimacs()andGoal.cs:ToDimacs()high-level.ts:solver_to_dimacs_string()solver.go:Dimacs()z3.ml:to_dimacsz3crate andz3-sysImpact: Low - Only affects Rust users needing DIMACS export
7. Solver registerOnClause
Previous status: Missing in TypeScript, Go, Java, OCaml, Rust
Current status: ✅ Available in 6/8 languages
Verified implementations:
high-level.ts:2292:registerOnClause()propagator.go:268(via CGO wrapper)z3.ml:2032:register_on_clauseImpact: Low-Medium - Affects users needing clause learning callbacks
8. Optimize translate
Previous status: Missing in TypeScript, OCaml, Go, Rust
Current status: ✅ Available in 7/8 languages
Verified implementations:
high-level.ts:2414optimize.go:197-199:Translate()z3.ml:2163:translateImpact: Low - Mainly affects multi-context optimization scenarios
Still Open Issues
🔴 High Priority: None
All high-priority issues have been resolved!
🟡 Medium Priority: Rust Binding Gaps (2 issues)
9. Rust High-Level API Missing Methods
Affected: Rust
z3crate usersMissing in Rust (all available in other languages):
Solver::to_dimacs()- DIMACS exportOptimize::translate()- Cross-context translationSolver::register_on_clause()- Clause learning callbacksNote: These are all available in the Rust
ContextAPI but not exposed at the higher abstraction levels.Suggested fix: Add wrapper methods in
/tmp/z3.rs/z3/src/solver.rsandoptimize.rsRepository: External repo
prove-rs/z3.rsPriority: Medium (affects advanced use cases)
10. Rust z3-sys FFI Incomplete
Affected: Rust
z3-syslow-level bindingsMissing FFI bindings:
Z3_solver_to_dimacs_stringZ3_solver_register_on_clauseZ3_optimize_translateSuggested fix: Add FFI declarations in
/tmp/z3.rs/z3-sys/src/lib.rsRepository: External repo
prove-rs/z3.rsPriority: Low (low-level API, most users use high-level wrappers)
Language Coverage Summary
Sampling Checks (New)
Brief verification of other API families showed excellent coverage:
BitVector Operations ✅
Sampled: overflow/underflow predicates, rotation operations
Result: All 8 languages have complete coverage of:
bvadd_no_overflow,bvsub_no_overflow,bvmul_no_overflow, etc.ext_rotate_left,ext_rotate_rightArray Theory APIs ✅
Sampled:
array_ext,as_array,select,storeResult: All 8 languages have complete coverage
Quantifier APIs ✅
Sampled:
forall,exists,lambdaResult: All 8 languages have complete coverage
Recommendations
For Z3 Maintainers
Solver.registerOnClause()for feature completeness (low priority)For Rust z3.rs Maintainers (External Repository)
Solver::to_dimacs(),Optimize::translate(),Solver::register_on_clause()For Future Runs
Next API families to analyze:
Z3_mk_fpa_*,Z3_fpa_*)Z3_mk_seq_*,Z3_mk_str_*)Z3_mk_datatype_*)Conclusion
Excellent progress! The Z3 project has achieved strong API coherence across its 8 language bindings. Of the 10 issues tracked from the last run:
The in-tree language bindings (maintained within Z3Prover/z3) show nearly 100% API coherence. The only remaining gaps are in the external Rust
z3.rscrate, which can be addressed by the Rust community maintainers.Analysis Date: March 10, 2026
Cumulative Progress: 35% of API surface analyzed
Next Run: Floating-point, String/Sequence, Datatype APIs
Verification Method: Manual code inspection using Serena, grep, and file analysis across all language binding directories
Beta Was this translation helpful? Give feedback.
All reactions