Skip to content

Add missing API bindings: Go sets/char/relations, Julia sets/relations, TypeScript char/relations, OCaml special relations, Java order constructors#9432

Merged
NikolajBjorner merged 1 commit into
masterfrom
copilot/fix-issues-1-10
May 4, 2026

Conversation

Copy link
Copy Markdown
Contributor

Copilot AI commented Apr 30, 2026

Several language bindings were missing API coverage that exists in the C API (z3_api.h) and other bindings. This adds the missing wrappers across 5 languages.

Go

  • src/api/go/set.go — new file wrapping all 11 Z3_mk_set_* functions: MkSetSort, MkEmptySet, MkFullSet, MkSetAdd, MkSetDel, MkSetUnion, MkSetIntersect, MkSetDifference, MkSetComplement, MkSetMember, MkSetSubset
  • src/api/go/char.go — new file wrapping all 7 Z3_mk_char_* functions: MkCharSort, MkChar, MkCharLe, MkCharToInt, MkCharToBV, MkCharFromBV, MkCharIsDigit
  • src/api/go/relations.go — new file wrapping all 5 special relation constructors: MkLinearOrder, MkPartialOrder, MkPiecewiseLinearOrder, MkTreeOrder, MkTransitiveClosure

Julia (src/api/julia/z3jl.cpp)

  • Added set_sort context method (lambda over Z3_mk_set_sort) and 10 free-function wrappers: empty_set, full_set, set_add, set_del, set_union, set_intersect, set_difference, set_complement, set_member, set_subset
  • Added char_sort context method
  • Added 4 special relation free functions: linear_order, partial_order, piecewise_linear_order, tree_order (note: transitive_closure was already bound via func_decl.transitive_closure)

TypeScript (src/api/js/src/high-level/)

  • high-level.ts — implementations for mkChar, mkCharLe, mkCharToInt, mkCharToBV, mkCharFromBV, mkCharIsDigit, mkLinearOrder, mkPiecewiseLinearOrder, mkTreeOrder
  • types.ts — corresponding type signatures on the Context<Name> interface

OCaml (src/api/ml/)

  • Added new SpecialRelation module to both z3.ml and z3.mli exposing mk_linear_order, mk_partial_order, mk_piecewise_linear_order, mk_tree_order, mk_transitive_closure via Z3native

Java (src/api/java/Context.java)

  • Added mkPiecewiseLinearOrder and mkTreeOrder to match the existing mkLinearOrder, mkPartialOrder, mkTransitiveClosure pattern

Issues 5 & 6 (Rust Simplifier and FiniteSet) are out of scope — the high-level z3 crate lives in a separate repository (prove-rs/z3.rs).

…t, OCaml, and Java

Agent-Logs-Url: https://github.com/Z3Prover/z3/sessions/b89f3b76-dfd7-47ec-97dd-8ae5e8e88a4a

Co-authored-by: NikolajBjorner <3085284+NikolajBjorner@users.noreply.github.com>
@NikolajBjorner NikolajBjorner marked this pull request as ready for review May 4, 2026 16:29
@NikolajBjorner NikolajBjorner merged commit 1c6943c into master May 4, 2026
38 checks passed
@NikolajBjorner NikolajBjorner deleted the copilot/fix-issues-1-10 branch May 4, 2026 16:29
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants