[API Coherence] Report for 2026-06-09 — Full Verification Run (11 Issues Confirmed) #9786
Closed
Replies: 1 comment
-
|
This discussion has been marked as outdated by API Coherence Checker. A newer discussion is available at Discussion #9805. |
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
Full verification run — all 44 Z3 API families analyzed in prior runs. This run re-verified all 11 cached issues against the current codebase (2026-06-09).
Languages: C · C++ · Python · Java · .NET · TypeScript/JS · OCaml · Go · Rust
Go updates noted (new files confirmed in repo):
finiteset.go,relations.go,simplifier.go(basic Simplifier type withGetSimplifierDescrbut still missing enumeration functions). Despite these, the gaps below remain.High Priority
1. Rust: No Simplifier API in high-level crate
Missing in:
z3/src/(prove-rs/z3.rs). Have in: all other languages including Go.z3-syshas full FFI (Z3_mk_simplifier,Z3_simplifier_and_then,Z3_simplifier_using_params,Z3_solver_add_simplifier).Fix: Add
Simplifier<'ctx>struct withnew/and_then/using_params/get_help/get_param_descrsandSolver::add_simplifier().2. Rust: No FiniteSet API (missing in both z3-sys and high-level crate)
Missing in:
z3-sys/src/generated/functions.rs(zeroZ3_mk_finite_set_*entries) andz3/src/. Have in: all other languages (Go:finiteset.go).Fix: Re-run bindgen to pick up finite set functions in
z3_api.h, then addFiniteSet<'ctx>inz3/src/.3. Rust: No polymorphic datatype support
DatatypeBuilderis monomorphic only. Have in: all other languages.z3-syshasZ3_mk_type_variable+Z3_mk_polymorphic_datatype.Fix: Extend
DatatypeBuilderor addPolymorphicDatatypeBuilder; addContext::type_variable().Medium Priority
4. OCaml + Go: No polynomial subresultants
Z3_polynomial_subresultantsexposed in C++/Python/Java/.NET/TS/Rust(z3-sys) but absent fromsrc/api/ml/andsrc/api/go/.Fix (OCaml): Add
polynomial_subresultants ctx p q xinz3.mlunder Arithmetic.Fix (Go): Add
(c *Context) PolynomialSubresultants(p, q, x *Expr) []*Exprinarith.go.5. Go: No MkFreshConst / MkFreshFuncDecl
Z3_mk_fresh_constandZ3_mk_fresh_func_declhave no Go wrappers. Have in: all other languages.Fix: Add to
z3.goor newconst.go.6. Go: No EnableTrace / DisableTrace
log.gohasOpenLog/CloseLog/AppendLog/IsLogOpenbut notEnableTrace(tag)/DisableTrace(tag).Fix: Add two package-level functions in
log.gocallingC.Z3_enable_trace/C.Z3_disable_trace.7. Rust: No logging wrappers (EnableTrace, DisableTrace, OpenLog, CloseLog)
None exposed in
z3/src/.z3-syshas all four bindings.Fix: Add free functions
enable_trace(tag: &str),open_log(path: &str) -> bool, etc.8. Simplifier enumeration missing in C++, Python, TS/JS, Go, Rust
Z3_get_num_simplifiers+Z3_get_simplifier_nameare exposed in Java/NET/OCaml but not in C++ (z3++.h), Python (z3.py), TypeScript, Go (simplifier.gohasGetSimplifierDescronly), or Rust high-level crate.z3-syshas both bindings.Fix per language:
context::num_simplifiers()+simplifier_name(i)wrappers in each binding.9. C++ + Rust: No
type_variablewrapperNo
context::type_variable()inz3++.h; users must callZ3_mk_type_variable()directly (seeexamples/c++/example.cpp:1016). Rustz3-syshas it butz3/src/does not.Fix (C++): Add
sort type_variable(symbol const& name)tocontextclass inz3++.h.Fix (Rust): Add
Context::type_variable(name: &Symbol) -> Sortinsort.rs.Low Priority
10. .NET: Missing MkLinearOrder, MkPiecewiseLinearOrder, MkTreeOrder
Context.cshasMkPartialOrder+MkTransitiveClosurebut not the other three special relation constructors. Have in: all other languages (Go:relations.go).Fix: Add three methods to
Context.cscallingNative.Z3_mk_linear_order,Z3_mk_piecewise_linear_order,Z3_mk_tree_order.11. Go: No AST.Id() method
ASThasHash()(Z3_get_ast_hash) but noId()(Z3_get_ast_id). Have in: all other languages.Fix: Add
func (a *AST) Id() uint { return uint(C.Z3_get_ast_id(a.ctx.ptr, a.ptr)) }inz3.go.Next Steps
z3_api.hfor new C API functionsBeta Was this translation helpful? Give feedback.
All reactions