[API Coherence] Report for 2026-07-06 - Re-verification of All Open Issues #10055
Closed
Replies: 1 comment
-
|
This discussion has been marked as outdated by API Coherence Checker. A newer discussion is available at Discussion #10060. |
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-verification run confirming all previously identified API coherence issues. No new gaps found.
High Priority
1. Rust Missing Simplifier API
z3-sysexposesZ3_mk_simplifier,Z3_simplifier_and_then,Z3_simplifier_using_params,Z3_solver_add_simplifier, but the high-levelz3crate has noSimplifiertype and noSolver::add_simplifier().Available in: C, C++, Python, Java, .NET, Go, TypeScript/JS, OCaml
Fix: Add
Simplifierstruct andSolver::add_simplifier()toprove-rs/z3.rsVerified: 2026-07-06
2. Rust Missing FiniteSet API
No
Z3_mk_finite_set_*bindings inz3-sysat all, and no FiniteSet support in the high-level crate.Available in: C, C++, Python, Java, .NET, Go, TypeScript/JS, OCaml
Fix: Add FFI bindings in
z3-sys, then expose a high-levelFiniteSetSortinz3crateVerified: 2026-07-06
3. Rust Missing Polymorphic Datatype Support
z3-sysexposesZ3_mk_polymorphic_datatypeandZ3_mk_type_variable, but the high-levelDatatypeBuilderhas no support for type parameters.Available in: C, C++, Python, Java, .NET, Go, TypeScript/JS, OCaml
Fix: Extend
DatatypeBuilderand addContext::type_variable()in thez3crateVerified: 2026-07-06
Medium Priority
4. C++, Python, .NET, OCaml Missing
re_power(Z3_mk_re_power)Exact-repetition regex (
re.^(n)). C++ hasre_loop(range), not exact-count. Python hasLoop, notPower. .NET hasMkLoop, notMkRePower. OCaml hasmk_re_loop, notmk_re_power.Available in: C, Java, TypeScript/JS, Go, Rust (
regexp.rs:82)Fix: Add
re_power/RePower/MkRePower/mk_re_powerto each missing languageVerified: 2026-07-06
5. C++ and .NET Missing
allchar(Z3_mk_re_allchar)Regex matching any single character.
Available in: C, Python (
AllChar), TypeScript/JS, Java, OCaml (mk_re_allchar), Go (MkReAllchar)Fix: Add
re_allchar(sort)to C++z3++.h;MkReAllchar(sort)to .NETContext.csVerified: 2026-07-06
6. OCaml and Rust Missing Sequence Functional Operations
Z3_mk_seq_map,Z3_mk_seq_mapi,Z3_mk_seq_foldl,Z3_mk_seq_foldli— all missing from OCaml and the Rust high-level crate (z3-sys exposes all four).Available in: C, C++, Python, Java, .NET, TypeScript/JS, Go
Fix: Add wrappers in OCaml
z3.ml; addmap/mapi/foldl/foldlito RustSeqtypeVerified: 2026-07-06
7. OCaml and Go Missing Polynomial Subresultants
Z3_polynomial_subresultants— no wrapper in OCaml (z3.ml) or Go.Available in: C, C++, Python, Java, .NET, TypeScript/JS, Rust (
polynomial.rs)Fix: Add OCaml wrapper in
z3.ml; addpolynomial.goinsrc/api/go/Verified: 2026-07-06
8. Go Missing
FreshConst/MkFreshFuncDeclNo
MkFreshConst/MkFreshFuncDeclwrappers insrc/api/go/.Available in: All other languages
Fix: Add
func (c *Context) MkFreshConst(prefix string, sort *Sort) *ExprandMkFreshFuncDeclto GoVerified: 2026-07-06
9. Go Missing
EnableTrace/DisableTracelog.gohasOpenLog/CloseLogbut notEnableTrace/DisableTrace.Available in: All other languages
Fix: Add to
src/api/go/log.goVerified: 2026-07-06
10. Missing Simplifier Enumeration in C++, Python, Go, Rust
Z3_get_num_simplifiers/Z3_get_simplifier_nameallow iterating available simplifiers.Available in: .NET, Java, OCaml
Missing: C++ (
z3++.h), Python (z3.py), Go (simplifier.gohasGetSimplifierDescronly), RustFix: Add
num_simplifiers()andsimplifier_name(i)to each missing bindingVerified: 2026-07-06
11. Rust Missing Logging Wrappers
z3-sysexposesZ3_open_log,Z3_close_log,Z3_enable_trace,Z3_disable_tracebut the high-levelz3crate has none.Fix: Add module-level
enable_trace,disable_trace,open_log,close_logtoz3crateVerified: 2026-07-06
12. C++ and Rust Missing
type_variableWrapperZ3_mk_type_variablecreates a sort variable for polymorphic types.Available in: C, Python, Java, .NET, Go, TypeScript/JS, OCaml
Fix: Add
context::type_variable(symbol)to C++;Context::type_variable(Symbol)to Rustz3crateVerified: 2026-07-06
13. Optimize Vector Bounds Missing in TypeScript/JS, C++, OCaml, Rust
Z3_optimize_get_lower_as_vector/Z3_optimize_get_upper_as_vectorreturn a (infeasible, value, eps) triple. Only scalargetLower/getUpperexposed in these four languages.Available in: C, Python, Java, .NET, Go
Fix: Add
getLowerAsVector/getUpperAsVectorin each missing languageVerified: 2026-07-06
Low Priority
14. .NET Missing
MkLinearOrder,MkPiecewiseLinearOrder,MkTreeOrderContext.cshasMkPartialOrder(line 5168) andMkTransitiveClosure(line 5178) but is missing the other three special relation constructors.Available in: C, C++, Python, Java, Go, TypeScript/JS, OCaml
Fix: Add
MkLinearOrder,MkPiecewiseLinearOrder,MkTreeOrdertosrc/api/dotnet/Context.csVerified: 2026-07-06
15. Go Missing
AST.Id()Methodz3.gohasHash()but notId()(wrappingZ3_get_ast_id).Available in: All other languages
Fix: Add
func (a *AST) Id() uint { return uint(C.Z3_get_ast_id(a.ctx.ptr, a.ptr)) }toz3.goVerified: 2026-07-06
Summary Table
Beta Was this translation helpful? Give feedback.
All reactions