[API Coherence] Report for 2026-06-06 - Re-verification + Simplifier Enumeration Gap #9740
Closed
Replies: 1 comment
-
|
This discussion has been marked as outdated by API Coherence Checker. A newer discussion is available at Discussion #9753. |
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
Re-verified all 7 previously cached issues — all remain open. One new gap found: Simplifier Enumeration API missing in several languages.
Notable: Go gained significant new coverage (
finiteset.go,simplifier.go,relations.go) since the previous analysis.High Priority Issues
1. Rust Missing Simplifier API
What: No
Simplifierstruct orSolver::add_simplifier()in the high-levelz3crate.z3-syshas the raw FFI.Available in: C, C++, Python, .NET, Java, TypeScript/JS, OCaml, Go
Missing in: Rust
z3crate (/z3/src/— nosimplifier.rs)Fix: Add
simplifier.rswith aSimplifierstruct and methods:and_then,using_params,get_help,get_param_descrs; addSolver::add_simplifier.Verified: 2026-06-06
2. Rust Missing FiniteSet API (both
z3andz3-sys)What: No FiniteSet bindings at all in
z3-sys(only unrelatedZ3_mk_finite_domain_sort). Missing:Z3_mk_finite_set_sort,empty,singleton,union,intersect,difference,member,size,subset,map,filter,range.Available in: C, C++, Python, .NET, Java, OCaml, TypeScript/JS, Go
Missing in: Rust
z3-sys(no FFI) and Rustz3crateFix: Add FFI bindings to
z3-sys/src/generated/functions.rs, then wrap inz3/src/.Verified: 2026-06-06
Medium Priority Issues
3. Missing Simplifier Enumeration API (New)
What:
Z3_get_num_simplifiers,Z3_get_simplifier_name,Z3_simplifier_get_descrallow enumerating available simplifiers.GetNumSimplifiersGetSimplifierNameGetSimplifierDescrz3-sysz3Fix:
simplifier.go): AddGetNumSimplifiers() uintandGetSimplifierName(i uint) stringz3++.h): Addunsigned num_simplifiers(),std::string simplifier_name(unsigned i)tocontext;std::string descr()tosimplifierclassz3.py): Addsimplifier_names(ctx=None)andsimplifier_descr(name, ctx=None)module-level functionsgetNumSimplifiers(),getSimplifierName(i),getSimplifierDescr(name)to context APIVerified: 2026-06-06
4. OCaml and Go Missing Polynomial Subresultants
What:
Z3_polynomial_subresultantsnot wrapped in OCaml or Go.Available in: C, C++, Python, .NET, Java, TypeScript/JS, Rust
z3-sysFix: Add
src/api/go/polynomial.go; addPolynomial.subresultantstosrc/api/ml/z3.ml.Verified: 2026-06-06
5. Go Missing
MkFreshConst/MkFreshFuncDeclWhat: No wrappers for
Z3_mk_fresh_const/Z3_mk_fresh_func_declin Go.Available in: All other languages
Fix: Add to
src/api/go/z3.go:func (c *Context) MkFreshConst(prefix string, sort *Sort) *ExprandMkFreshFuncDecl.Verified: 2026-06-06
6. Go and Rust Missing Trace API
What:
Z3_enable_trace/Z3_disable_tracenot wrapped in Go (log.goonly has Open/Close/Append). Rustz3has no logging at all.Available in: C, C++, Python, .NET, Java, TypeScript/JS, OCaml
Fix: Add
EnableTrace(tag string)/DisableTrace(tag string)tosrc/api/go/log.go; add module-level trace/log functions to Rustz3.Verified: 2026-06-06
Low Priority Issues
7. .NET Missing
MkLinearOrder,MkPiecewiseLinearOrder,MkTreeOrderWhat:
src/api/dotnet/Context.cshasMkPartialOrderandMkTransitiveClosurebut is missing the other three special relation constructors.Available in: C, C++, Python, Java, TypeScript/JS, OCaml, Go, Rust
z3-sysFix: Add three methods near
MkPartialOrder(line 5168) wrappingNative.Z3_mk_linear_order,Z3_mk_piecewise_linear_order,Z3_mk_tree_order.Verified: 2026-06-06
8. Go Missing
AST.Id()MethodWhat:
AST.Hash()exists insrc/api/go/z3.go(line 176) butAST.Id()wrappingZ3_get_ast_iddoes not.Available in: All other languages
Fix: Add
func (a *AST) Id() uint { return uint(C.Z3_get_ast_id(a.ctx.ptr, a.ptr)) }tosrc/api/go/z3.go.Verified: 2026-06-06
Issue Tracker
z3cratez3,z3-sysz3z3Beta Was this translation helpful? Give feedback.
All reactions