3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2026-02-23 00:37:36 +00:00
Commit graph

222 commits

Author SHA1 Message Date
Nikolaj Bjorner
e2129a7b81
Merge pull request #8702 from Z3Prover/copilot/fix-issues-in-discussion-8701
Add missing solver/optimizer API bindings across language targets
2026-02-20 09:28:50 -08:00
copilot-swe-agent[bot]
8d79e21aa7 Add missing API methods across language bindings (discussion #8701)
Co-authored-by: NikolajBjorner <3085284+NikolajBjorner@users.noreply.github.com>
2026-02-20 04:24:22 +00:00
copilot-swe-agent[bot]
5d93f098fc Add FiniteSet support to Go, OCaml, and JavaScript APIs
Co-authored-by: NikolajBjorner <3085284+NikolajBjorner@users.noreply.github.com>
2026-02-20 04:23:26 +00:00
copilot-swe-agent[bot]
366b197c2b Fix OCaml build error in solver_get_levels
Co-authored-by: NikolajBjorner <3085284+NikolajBjorner@users.noreply.github.com>
2026-02-18 22:21:58 +00:00
copilot-swe-agent[bot]
ac10af417a Add missing API methods to Go and OCaml bindings
Co-authored-by: NikolajBjorner <3085284+NikolajBjorner@users.noreply.github.com>
2026-02-18 17:28:12 +00:00
copilot-swe-agent[bot]
ac39c021bf Add datatype_update_field to C++, Python, TypeScript, and OCaml bindings
Co-authored-by: NikolajBjorner <3085284+NikolajBjorner@users.noreply.github.com>
2026-02-04 21:57:57 +00:00
Copilot
01948e168b
Add polymorphic datatype support to ML API (#8378)
* Initial plan

* Add ML bindings for polymorphic datatypes (mk_type_variable and mk_polymorphic_sort)

Co-authored-by: NikolajBjorner <3085284+NikolajBjorner@users.noreply.github.com>

* Add polymorphic datatype example for ML API

Co-authored-by: NikolajBjorner <3085284+NikolajBjorner@users.noreply.github.com>

* Delete examples/ml/polymorphic_datatype_example.ml

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: NikolajBjorner <3085284+NikolajBjorner@users.noreply.github.com>
Co-authored-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2026-01-27 11:44:35 -08:00
Nikolaj Bjorner
8346bb6679 open_log returns bool
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2025-11-25 20:48:57 -08:00
Copilot
5163411f9b
Update Z3_mk_datatype_sort API to accept array of sort parameters and add Z3_mk_polymorphic_datatype (#7966)
* Initial plan

* Update Z3_mk_datatype_sort API to accept array of parameters

Co-authored-by: NikolajBjorner <3085284+NikolajBjorner@users.noreply.github.com>

* Update language bindings for parametric datatype sort API

- Python: Updated DatatypeSort() to accept optional params list
- OCaml: Added mk_sort_ref_p/mk_sort_ref_ps for parametric datatypes
- .NET: Added MkDatatypeSortRef() methods with optional params
- Java: Added mkDatatypeSortRef() methods with optional params
- All changes maintain backward compatibility

Co-authored-by: NikolajBjorner <3085284+NikolajBjorner@users.noreply.github.com>

* Fix .NET build error - rename params to parameters

The 'params' keyword is reserved in C#, causing compilation errors.
Renamed parameter from 'params' to 'parameters' in MkDatatypeSortRef methods.

Co-authored-by: NikolajBjorner <3085284+NikolajBjorner@users.noreply.github.com>

* Add unit test for parametric datatypes

Added test_parametric_datatype.cpp to demonstrate polymorphic datatypes.
The test creates two concrete instantiations of a generic pair concept:
- pair_int_real with fields (first:Int, second:Real)
- pair_real_int with fields (first:Real, second:Int)
Then verifies that accessors work correctly and type checking is enforced.

Co-authored-by: NikolajBjorner <3085284+NikolajBjorner@users.noreply.github.com>

* Implement polymorphic type variables support for parametric datatypes

- Modified datatype_decl_plugin to allow type variables as parameters
- Updated mk_datatype_decl to extract type variables from field sorts
- Type variables are collected in order of first appearance
- Revised unit test to use Z3_mk_type_variable for polymorphic datatypes
- Test creates pair datatype with type variables alpha and beta
- Successfully instantiates with concrete types (pair Int Real) and (pair Real Int)
- Verifies accessor types match and equality terms are well-typed
- All tests pass

Co-authored-by: NikolajBjorner <3085284+NikolajBjorner@users.noreply.github.com>

* Add Z3_mk_polymorphic_datatype API and refactor datatype creation

- Added new API Z3_mk_polymorphic_datatype to z3_api.h
- Renamed static mk_datatype_decl to api_datatype_decl in api_datatype.cpp
- Modified api_datatype_decl to accept explicit type parameters
- Updated all callers to use renamed function
- Added test_polymorphic_datatype_api demonstrating new API usage
- Both tests pass successfully

Co-authored-by: NikolajBjorner <3085284+NikolajBjorner@users.noreply.github.com>

* Remove type variable collection logic from constructors

Removed the logic for collecting type variables from field sorts based on constructors.

* Update comments on parameter handling in api_datatype.cpp

Clarify usage of parameters in API documentation.

* Fix OCaml build error - use list instead of array for mk_datatype_sort

Changed mk_sort_ref to pass empty list [] instead of empty array [||].
Changed mk_sort_ref_p to pass params list directly instead of converting to array.
Z3native.mk_datatype_sort expects a list, not an array.

Co-authored-by: NikolajBjorner <3085284+NikolajBjorner@users.noreply.github.com>

* Add polymorphic datatype example to C++ examples

Added polymorphic_datatype_example() demonstrating:
- Creating type variables alpha and beta with Z3_mk_type_variable
- Defining parametric Pair datatype with fields of type alpha and beta
- Instantiating with concrete types (Pair Int Real) and (Pair Real Int)
- Getting constructors and accessors from instantiated datatypes
- Creating constants and expressions using the polymorphic types
- Verifying type correctness with equality (= (first p1) (second p2))

Co-authored-by: NikolajBjorner <3085284+NikolajBjorner@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: NikolajBjorner <3085284+NikolajBjorner@users.noreply.github.com>
Co-authored-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2025-10-15 20:51:21 +02:00
Shiwei Weng 翁士伟
c2efd3dc6d
Update on building OCaml binding with CMake (#7698)
* fix: add generating META for ocamlfind.

* Patch macos. We need to keep the `@rpath` and use environment var to enable the test because we need to leave it to be fixed by package managers.

* Trigger CI.

* Debug.

* Debug.

* Debug.

* Debug.

* Debug.

* Debug.

* Hacky fix for ocaml building warning.

* Fix typo and rename variables.
2025-06-27 17:55:58 -07:00
Brandon Stride
257b8e91e6
Fix out of bounds error in OCaml API (#7665) (#7666) 2025-05-29 17:06:48 +01:00
zapashcanon
91886dafca
some code cleaning and complexity improvements (#7133)
* do not use `and` for non mutually recursive types

* use List.init, fix complexity of a few operations and make some code
more readable

* explicit some parameters to make working without LSP/Merlin easier

* use fold_left instead of filteri because it is not available on old
OCaml versions
2024-02-29 08:54:53 -08:00
Christoph M. Wintersteiger
68a2c08d5e
Add Z3_get_estimated_alloc_size to OCaml API (#7068) 2023-12-21 12:54:30 -08:00
Christoph M. Wintersteiger
16753e43f1
Add accessors for RCF numeral internals (#7013) 2023-11-23 17:54:23 +01:00
Christoph M. Wintersteiger
36382ccb57
Fix memory and concurrency issues in OCaml API (#6992)
* Fix memory and concurrency issues in OCaml API

* Undo locking changes
2023-11-16 18:28:12 -08:00
Christoph M. Wintersteiger
3af2b36cd7
Add Z3_solver_interrupt to OCaml API (#6976) 2023-10-31 08:48:06 -07:00
Christoph M. Wintersteiger
23de8056d7
Add RCF functions to OCaml API (#6932) 2023-10-06 11:49:22 +09:00
권승완
6670807103
update ocaml binding to support more string apis (#6656) 2023-03-29 05:49:33 -07:00
Patrick LaFontaine
0a59617bac
Fix Ocaml bindings FuncEntry to_string (#6639)
Hello, I was looking at the different api string conversions for FuncEntry and I believe that the ml version is incorrect? Clearly we want the argument(`c`) to be comma separated from the accumulated string `p`. The current implementation just so happens to have most of the arguments separated, but the order is flipped and one of the commas is misplaced.
2023-03-27 13:04:32 -07:00
Nikolaj Bjorner
63c0f35978 update ml api
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2023-01-31 19:27:17 -08:00
Nikolaj Bjorner
d51d518f96 update ml api
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2023-01-31 19:24:45 -08:00
Nikolaj Bjorner
4c6d44f974 add ocaml signature for simplifier
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2023-01-31 18:58:18 -08:00
Nikolaj Bjorner
fa72ec5405 switch to expose fresh function instead of changing legacy function
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2023-01-24 13:05:34 -08:00
Nikolaj Bjorner
3f1b7866ca convert caml mk_real to int64
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2023-01-24 03:53:42 -08:00
Nikolaj Bjorner
aefd336c18 set OCaml default behaivor to enable concurrent dec ref #6160
Add Z3_enable_concurrent_dec_ref to the API.
It is enables behavior of dec_ref functions that are exposed over the API to work with concurrent GC. The API calls to dec_ref are queued and processed in the main thread where context operations take place (in a way that is assumed thread safe as context operations are only allowed to be serialized on one thread at a time).
2022-07-16 16:49:39 -07:00
Sacha Ayoun
ffbabf251d
enhance ocaml seq api (#6010)
Signed-off-by: Sacha Ayoun <sachaayoun@gmail.com>
2022-05-04 12:03:22 -07:00
Ryan Goulden
99e299b90c
ocaml: fix is_arithmetic_numeral and is_bv_numeral (#6003) 2022-04-27 12:36:09 +02:00
Anton Kochkov
f3af2193d0
Use Stdlib. instead of Pervasives. due to deprecation (#5730) 2021-12-22 07:53:47 -08:00
Gabriel Radanne
0c7625cd26
Remove size argument in OCaml's Z3.mk_re_intersect (#5383)
* Remove size argument in OCaml's `Z3.mk_re_intersect`

Passing the size as argument is unnecessary in OCaml, and that argument is abridged in all similar `Seq` functions. This applies the same pattern.

* Enable the ocaml documentation in Seq.

Turn all the comments into proper documentation comments.
2021-07-06 01:21:04 -07:00
Nikolaj Bjorner
04a1d4245c fix #4801 2021-02-12 20:20:00 -08:00
Nikolaj Bjorner
006418e027 build
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2020-07-04 23:34:21 -07:00
Nikolaj Bjorner
74eb401c3b addrecdef
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2020-07-04 18:18:25 -07:00
Nikolaj Bjorner
2bb712c9da ml
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2020-07-04 17:09:08 -07:00
Nikolaj Bjorner
5ea145ce26 ml
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2020-07-04 17:08:22 -07:00
Nikolaj Bjorner
10d0404175 add rec decl/def to ML #4563
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2020-07-04 15:38:32 -07:00
Nicola Mometto
77c3f1fb82 fix ocaml build by moving to Zarith methods 2019-10-14 09:48:51 -07:00
philzook58
ea8ef3edf8 edited error message string 2019-10-03 17:06:14 -07:00
philzook58
0321312c8d Changed to get_const_interp to match Java and C# bindings 2019-10-03 17:06:14 -07:00
Nikolaj Bjorner
40e329fc92 remove push/pop for fixedpoint objects from API #2249
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2019-04-27 10:13:15 -07:00
Nicola Mometto
fa97f4a626 fix name clash in ocaml api 2019-03-26 14:16:31 +00:00
Nicola Mometto
f18227bf2d Add Memory.reset to OCaml API 2018-11-26 17:24:51 +00:00
Nikolaj Bjorner
b1ab473035 add arguments to optimize_check fix #1866
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2018-10-14 20:44:46 -07:00
Nikolaj Bjorner
09e40f6e23 add arguments to optimize_check fix #1866
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2018-10-14 20:43:35 -07:00
Nikolaj Bjorner
0457b5a73f add arguments to optimize_check fix #1866
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2018-10-14 20:39:54 -07:00
Nikolaj Bjorner
3bc2213d54 fix #1577
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2018-10-03 17:43:42 -07:00
Nikolaj Bjorner
80d0c5cf82 fix #1836 again
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2018-09-24 16:52:25 -07:00
Nikolaj Bjorner
382bce4bb7 fix #1836
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2018-09-20 19:19:40 -07:00
Nikolaj Bjorner
94ffa3963e fix #1800 by converting large integers to strings
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2018-08-24 16:54:22 +02:00
Nikolaj Bjorner
6dc9c3a587 fix ml build breakd #1659, #1660
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2018-05-29 07:37:27 -07:00
Nikolaj Bjorner
2b2aee3c18 remove unused operators #1530
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2018-03-14 07:29:26 -07:00