[API Coherence] Report for Feb 25, 2026 - Solver & Optimize APIs (7 Issues Resolved!) #8775
Closed
Replies: 1 comment
-
|
This discussion was automatically closed because it expired on 2026-03-04T23:45:49.054Z.
|
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.
-
🎉 Major Progress: 70% of Cached Issues Resolved!
This is the second systematic API coherence analysis run for Z3 language bindings. Excellent news: 7 out of 10 previously identified issues have been resolved, showing active and effective API maintenance across languages!
Summary
Progress Tracker
🎉 Resolved Issues (Since Last Run)
1. ✅ TypeScript Optimize - Complete Overhaul
Previously Missing: getLower(), getUpper(), fromFile(), unsatCore(), objectives(), reasonUnknown(), translate()
Status: ✅ ALL IMPLEMENTED in
src/api/js/src/high-level/high-level.tsgetLower(): line 2335-2337getUpper(): line 2339-2341fromFile(): line 2355-2358unsatCore(): line 2343-2345objectives(): line 2347-2349reasonUnknown(): line 2351-2353translate(): line 2360-2363 (bonus!)Impact: TypeScript now has feature parity with other languages for optimization APIs 🎉
2. ✅ Solver to_dimacs - Universal Implementation
Previously Missing in: Java, .NET, TypeScript, Go, OCaml
Status: ✅ IMPLEMENTED IN ALL
toDimacs(boolean)insrc/api/java/Solver.java:587-590ToDimacs(bool)insrc/api/dotnet/Solver.cs:658-660dimacs(boolean)insrc/api/js/src/high-level/high-level.ts:2133-2134Dimacs(bool)insrc/api/go/solver.go:395-398to_dimacsinsrc/api/ml/z3.ml:1958Impact: DIMACS CNF export now available in all languages except Rust
3. ✅ Solver Additional APIs - Wide Coverage
Previously Missing:
solver_translate: TypeScript, Go, Rustsolver_get_proof: TypeScript, Gosolver_add_simplifier: Java, GoStatus: ✅ MOSTLY RESOLVED
src/api/go/solver.go:360-363Translatetrait in/tmp/z3.rs/z3/src/solver.rs:627-631proof()in line 2142-2149GetProof()insrc/api/go/solver.go:372-376addSimplifier()insrc/api/java/Solver.java:575-579AddSimplifier()insrc/api/go/solver.go:385-3924. ✅ Optimize translate - Expanded Coverage
Previously Missing in: TypeScript, OCaml, Go, Rust
Status: ✅ MOSTLY RESOLVED
src/api/js/src/high-level/high-level.ts:2360src/api/ml/z3.ml:2149src/api/go/optimize.go:197-200❌ Remaining Open Issues
Issue #1: Rust Solver APIs (Medium Priority)
Missing Features:
to_dimacs()- DIMACS CNF exportadd_simplifier()- Attach simplifiers for pre-processingAvailable in: All other languages
Missing in: Rust (both z3-sys FFI and high-level z3 crate)
Suggested Fix:
Note: Requires FFI bindings in z3-sys first. This is an external crate (prove-rs/z3.rs), so coordination with maintainers needed.
Issue #2: Rust Optimize.translate() (Medium Priority)
C API:
Z3_optimize_translate(available)Available in: Python, Java, .NET, C++, TypeScript, OCaml, Go ✅
Missing in: Rust ❌
Impact: Cannot transfer optimization contexts between Z3 contexts in Rust
Suggested Fix: Add
Translatetrait implementation forOptimizetype in Rust z3 crateIssue #3: Solver register_on_clause (Medium Priority)
C API:
Z3_solver_register_on_clause(available)Available in: Python, .NET, C++, Go, Java (via JNI)
Missing in: TypeScript, OCaml, Rust
Note: This is an advanced callback API for clause learning. Requires language-specific callback infrastructure. May have lower priority given complexity.
Summary Statistics
Resolution Rate
Language Completeness (for analyzed APIs)
Recommendations
For Z3 Maintainers
For Rust z3.rs Maintainers
Since Rust bindings are maintained externally at prove-rs/z3.rs:
Z3_solver_to_dimacs_stringZ3_solver_add_simplifierZ3_optimize_translateCallback API Consideration
The
register_on_clauseAPI requires callback infrastructure. Languages with difficulty:May warrant design discussion on whether to implement or document as "advanced C API only."
Next Analysis Run
Complete BitVector Operations
Floating-Point APIs (
Z3_mk_fpa_*)Array Theory APIs (
Z3_mk_select,Z3_mk_store)Re-verify remaining 3 open issues
Methodology
Run Date: February 25, 2026
Run #: 2 of ongoing systematic analysis
Progress: 15% of total API surface analyzed
Beta Was this translation helpful? Give feedback.
All reactions