[API Coherence] API Coherence Report - March 7, 2026: BitVector, Array, Floating-Point APIs #8888
Closed
Replies: 1 comment
-
|
This discussion was automatically closed because it expired on 2026-03-14T23:18:14.052Z.
|
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 is the second API coherence analysis run for the Z3 theorem prover. This run focused on verifying previously reported issues and analyzing three new API families: BitVector operations, Array theory, and Floating-point APIs.
APIs Analyzed in This Run:
Z3_mk_bv*, rotate, sign_ext, zero_ext)Z3_mk_select,Z3_mk_store,Z3_mk_array_*)Z3_mk_fpa_*,Z3_fpa_*)Languages Covered: Python, Java, .NET (C#), C++, TypeScript/JavaScript, OCaml, Go, Rust (external crate)
Statistics:
🎉 Resolution Updates
Excellent progress! The following issues from the previous run (February 24, 2026) have been resolved:
✅ 1. Solver.translate() - RESOLVED
solver_translateimplementedsrc/api/js/src/high-level/high-level.ts:2155-2157src/api/go/solver.go:360-364/tmp/z3.rs/z3/src/solver.rs:627-631✅ 2. Solver.getProof() - RESOLVED
solver_get_proofimplementedsrc/api/js/src/high-level/high-level.ts:2161src/api/go/solver.go:372-376✅ 3. Optimize.getLower()/getUpper() - RESOLVED
src/api/js/src/high-level/high-level.ts:2388-2394✅ 4. Optimize API completeness - RESOLVED
fromFile(),unsatCore(),objectives(),reasonUnknown()src/api/js/src/high-level/high-level.ts:2396-2410✅ 5. Optimize.translate() - RESOLVED
optimize_translatesrc/api/js/src/high-level/high-level.ts:2413-2416Progress Tracker
Overall Progress: 5/~20 API families analyzed (25%)
Completed:
Z3_solver_*)Z3_optimize_*)Next Run Will Analyze:
Z3_mk_forall,Z3_mk_exists,Z3_mk_lambda)Z3_fixedpoint_*)Z3_mk_datatype_*)Z3_mk_set_*)Z3_mk_seq_*,Z3_mk_str_*)Current Unresolved Issues
🔴 HIGH PRIORITY
1. Go Missing BitVector Rotate Operations
Z3_mk_rotate_left(ctx, i, bv)- Rotate left by constantZ3_mk_rotate_right(ctx, i, bv)- Rotate right by constantZ3_mk_ext_rotate_left(ctx, bv1, bv2)- Rotate left by variable amountZ3_mk_ext_rotate_right(ctx, bv1, bv2)- Rotate right by variable amountsrc/api/go/bitvec.go:🟡 MEDIUM PRIORITY
2. Solver DIMACS Export Missing in Multiple Languages
Z3_solver_to_dimacs_string- Export solver state to DIMACS formatContext.java:3. Solver Simplifier Plugin Missing
Z3_solver_add_simplifier- Add simplification plugin to solverZ3_ast Z3_API Z3_solver_add_simplifier(Z3_context c, Z3_solver s, Z3_simplifier t)4. Solver Clause Callback Registration Missing
Z3_solver_register_on_clause- Register callback for learned clausesAnalysis Details
BitVector Operations - Comprehensive Coverage
✅ Well-supported operations across all languages:
Language-specific observations:
RotateLeft(a, b))mkBVRotateLeft(i, expr))bv.rotateLeft(count))bv.bvrotl(&other)andbv.bvrotr(&other))expr.rotate_left(i))Array Theory - Excellent Consistency
✅ All languages support core array operations:
select/Select- Array readstore/Store- Array writeconst_array/ConstArray- Create constant arrayarray_default/ArrayDefault- Get default valueselect_n,store_n)Naming conventions are consistent across languages following their idioms:
Select,Store)mkSelect,MkStore).select(),.store())MkSelect,MkStore).select(),.store())Floating-Point APIs - Complete Implementation
✅ All languages have comprehensive floating-point support:
Excellent consistency across all 8 language bindings with appropriate naming conventions for each language.
Recommendations Summary
Immediate Actions (High Priority)
src/api/go/bitvec.go)Future Improvements (Medium Priority)
Add DIMACS export to Java, TypeScript, Go, OCaml, Rust
Add simplifier plugin support to Java, Go, Rust
Consider callback support for clause registration
Next Run Preview
The next coherence check (scheduled for future run) will analyze:
Estimated completion: 5 more runs to cover all major API families
Methodology Notes
This analysis uses:
prove-rs/z3.rs)All findings verified against current codebase state (March 7, 2026).
Generated by API Coherence Checker - An automated tool for maintaining Z3 language binding consistency
Beta Was this translation helpful? Give feedback.
All reactions