You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This run re-verified all 14 previously cached issues against the current codebase (commit 7040a74, July 7 2026). All 14 remain unresolved. No new API functions were added to z3_api.h since the last run.
Next run: Monitor z3_api.h and prove-rs/z3.rs for new additions
High Priority
1. Rust missing Simplifier API
z3-sys has all raw FFI bindings (Z3_mk_simplifier, Z3_solver_add_simplifier, etc.) but the high-level z3 crate has no Simplifier type. Available in: C++, Python, Java, .NET, TS/JS, Go, OCaml Fix: Add Simplifier struct and Solver::add_simplifier() in z3/src/ (prove-rs/z3.rs)
2. Rust missing FiniteSet API
Neither z3-sys nor the high-level z3 crate expose any Z3_mk_finite_set_* operations. Available in: All other languages Fix: Add Z3_mk_finite_set_* to z3-sys, then wrap in z3/src/ast/
3. Rust missing polymorphic datatype support
DatatypeBuilder in the z3 crate has no support for Z3_mk_type_variable / Z3_mk_polymorphic_datatype. z3-sys has both FFI bindings. Available in: All other languages Fix: Add Context::type_variable() and extend DatatypeBuilder in prove-rs/z3.rs
Exact-count regex repetition. All four have re_loop/Loop/MkLoop (range-based) but lack the simpler re_power(re, n). Available in: Java, TS/JS, Go (MkRePower), Rust Fix: Add one-line wrappers in z3++.h, z3.py, Context.cs, z3.ml
Functional map/fold operations on sequences. Available in: C++, Python, Java, .NET, TS/JS, Go Fix: OCaml — add let mk_seq_map = Z3native.mk_seq_map etc.; Rust — add methods to Seq in z3/src/ast/seq.rs
6. Optimize get_lower/upper_as_vector missing in TS/JS, C++, OCaml, Rust
Returns epsilon-precise bounds as a triple (inf_coeff, value, eps_coeff). Available in: Python, Java, .NET (GetLowerAsVector), Go Fix: Add wrappers in high-level.ts, z3++.h, z3.ml, z3/src/optimize.rs
7. OCaml and Go missing Polynomial Subresultants API
Z3_polynomial_subresultants — exposed in C++, Python, Java, .NET, TS/JS, Rust but not OCaml or Go. Fix: Add to z3.ml and a new or existing .go file
8. Go missing FreshConst/FreshFuncDecl
No MkFreshConst/MkFreshFuncDecl in any Go file. All other languages have it. Fix: Add func (c *Context) MkFreshConst(prefix string, sort *Sort) *Expr to Go
9. Go missing EnableTrace/DisableTrace
log.go covers OpenLog/CloseLog/AppendLog but not trace control. Available in: All other languages Fix: Add EnableTrace(tag string) / DisableTrace(tag string) to log.go
10. Rust missing logging wrappers
No enable_trace, disable_trace, open_log, close_log in the z3 crate (all in z3-sys). Fix: Add a log module to z3/src/ in prove-rs/z3.rs
11. Simplifier enumeration missing in C++, Python, Go, Rust
GetNumSimplifiers/GetSimplifierName exist in .NET and Java; absent in C++, Python, Go (has GetSimplifierDescr only), and Rust. Fix: Mirror the tactic enumeration pattern (num_tactics/tactic_name) in each language
12. C++ and Rust missing mk_type_variable wrapper
C++ z3++.h has no context::type_variable(). Rust z3-sys has the binding but the high-level crate does not wrap it. Available in: .NET, Java, Python, TS/JS, OCaml, Go Fix: Add to z3++.h; add to z3/src/ in prove-rs/z3.rs
Only MkPartialOrder and MkTransitiveClosure implemented in Context.cs. Available in: All other languages (Go has all five in relations.go) Fix: Add the three missing wrappers to Context.cs
14. C++ and .NET missing allchar (Z3_mk_re_allchar)
Regex that matches any single character. Available in: Python, TS/JS, Java, OCaml (mk_re_allchar line 1324 of z3.ml), Go, Rust Fix: Add re_allchar(sort rs) to z3++.h; add MkReAllchar(ReSort rs) to Context.cs
15. Go missing AST Id() method
AST.Hash() exists in z3.go but AST.Id() (wrapping Z3_get_ast_id) is absent. Fix: One-line addition to z3.go
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
Uh oh!
There was an error while loading. Please reload this page.
-
Summary
This run re-verified all 14 previously cached issues against the current codebase (commit
7040a74, July 7 2026). All 14 remain unresolved. No new API functions were added toz3_api.hsince the last run.Progress
z3_api.handprove-rs/z3.rsfor new additionsHigh Priority
1. Rust missing Simplifier API
z3-syshas all raw FFI bindings (Z3_mk_simplifier,Z3_solver_add_simplifier, etc.) but the high-levelz3crate has noSimplifiertype.Available in: C++, Python, Java, .NET, TS/JS, Go, OCaml
Fix: Add
Simplifierstruct andSolver::add_simplifier()inz3/src/(prove-rs/z3.rs)2. Rust missing FiniteSet API
Neither
z3-sysnor the high-levelz3crate expose anyZ3_mk_finite_set_*operations.Available in: All other languages
Fix: Add
Z3_mk_finite_set_*toz3-sys, then wrap inz3/src/ast/3. Rust missing polymorphic datatype support
DatatypeBuilderin thez3crate has no support forZ3_mk_type_variable/Z3_mk_polymorphic_datatype.z3-syshas both FFI bindings.Available in: All other languages
Fix: Add
Context::type_variable()and extendDatatypeBuilderin prove-rs/z3.rsMedium Priority
4. C++, Python, .NET, OCaml missing
re_power(Z3_mk_re_power)Exact-count regex repetition. All four have
re_loop/Loop/MkLoop(range-based) but lack the simplerre_power(re, n).Available in: Java, TS/JS, Go (
MkRePower), RustFix: Add one-line wrappers in
z3++.h,z3.py,Context.cs,z3.ml5. OCaml and Rust missing seq functional ops (seq_map, seq_mapi, seq_foldl, seq_foldli)
Functional map/fold operations on sequences.
Available in: C++, Python, Java, .NET, TS/JS, Go
Fix: OCaml — add
let mk_seq_map = Z3native.mk_seq_mapetc.; Rust — add methods toSeqinz3/src/ast/seq.rs6. Optimize
get_lower/upper_as_vectormissing in TS/JS, C++, OCaml, RustReturns epsilon-precise bounds as a triple
(inf_coeff, value, eps_coeff).Available in: Python, Java, .NET (
GetLowerAsVector), GoFix: Add wrappers in
high-level.ts,z3++.h,z3.ml,z3/src/optimize.rs7. OCaml and Go missing Polynomial Subresultants API
Z3_polynomial_subresultants— exposed in C++, Python, Java, .NET, TS/JS, Rust but not OCaml or Go.Fix: Add to
z3.mland a new or existing.gofile8. Go missing FreshConst/FreshFuncDecl
No
MkFreshConst/MkFreshFuncDeclin any Go file. All other languages have it.Fix: Add
func (c *Context) MkFreshConst(prefix string, sort *Sort) *Exprto Go9. Go missing EnableTrace/DisableTrace
log.gocovers OpenLog/CloseLog/AppendLog but not trace control.Available in: All other languages
Fix: Add
EnableTrace(tag string)/DisableTrace(tag string)tolog.go10. Rust missing logging wrappers
No
enable_trace,disable_trace,open_log,close_login thez3crate (all inz3-sys).Fix: Add a
logmodule toz3/src/in prove-rs/z3.rs11. Simplifier enumeration missing in C++, Python, Go, Rust
GetNumSimplifiers/GetSimplifierNameexist in .NET and Java; absent in C++, Python, Go (hasGetSimplifierDescronly), and Rust.Fix: Mirror the tactic enumeration pattern (
num_tactics/tactic_name) in each language12. C++ and Rust missing
mk_type_variablewrapperC++
z3++.hhas nocontext::type_variable(). Rustz3-syshas the binding but the high-level crate does not wrap it.Available in: .NET, Java, Python, TS/JS, OCaml, Go
Fix: Add to
z3++.h; add toz3/src/in prove-rs/z3.rsLow Priority
13. .NET missing MkLinearOrder, MkPiecewiseLinearOrder, MkTreeOrder
Only
MkPartialOrderandMkTransitiveClosureimplemented inContext.cs.Available in: All other languages (Go has all five in
relations.go)Fix: Add the three missing wrappers to
Context.cs14. C++ and .NET missing
allchar(Z3_mk_re_allchar)Regex that matches any single character.
Available in: Python, TS/JS, Java, OCaml (
mk_re_allcharline 1324 ofz3.ml), Go, RustFix: Add
re_allchar(sort rs)toz3++.h; addMkReAllchar(ReSort rs)toContext.cs15. Go missing AST
Id()methodAST.Hash()exists inz3.gobutAST.Id()(wrappingZ3_get_ast_id) is absent.Fix: One-line addition to
z3.goNotes for Maintainers
let mk_foo = Z3native.mk_fooadditionsBeta Was this translation helpful? Give feedback.
All reactions