3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-08-25 12:35:59 +00:00
z3/scripts
Ilana Shapiro 6044389446
Parallel solving (#7771)
* very basic setup

* ensure solve_eqs is fully disabled when smt.solve_eqs=false, #7743

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>

* respect smt configuration parameter in elim_unconstrained simplifier

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>

* indentation

* add bash files for test runs

* add option to selectively disable variable solving for only ground expressions

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>

* remove verbose output

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>

* fix #7745

axioms for len(substr(...)) escaped due to nested rewriting

* ensure atomic constraints are processed by arithmetic solver

* #7739 optimization

add simplification rule for at(x, offset) = ""

Introducing j just postpones some rewrites that prevent useful simplifications. Z3 already uses common sub-expressions.
The example highlights some opportunities for simplification, noteworthy at(..) = "".
The example is solved in both versions after adding this simplification.

* fix unsound len(substr) axiom

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>

* FreshConst is_sort (#7748)

* #7750

add pre-processing simplification

* Add parameter validation for selected API functions

* updates to ac-plugin

fix incrementality bugs by allowing destructive updates during saturation at the cost of redoing saturation after a pop.

* enable passive, add check for bloom up-to-date

* add top-k fixed-sized min-heap priority queue for top scoring literals

* set up worker thread batch manager for multithreaded batch cubes paradigm, need to debug as I am getting segfault still

* fix bug in parallel solving batch setup

* fix bug

* allow for internalize implies

* disable pre-processing during cubing

* debugging

* remove default constructor

* remove a bunch of string copies

* Update euf_ac_plugin.cpp

include reduction rules in forward simplification

* Update euf_completion.cpp

try out restricting scope of equalities added by instantation

* Update smt_parallel.cpp

Drop non-relevant units from shared structures.

* process cubes as lists of individual lits

* merge

* Add support for Algebraic Datatypes in JavaScript/TypeScript bindings (#7734)

* Initial plan

* Add datatype type definitions to types.ts (work in progress)

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

* Complete datatype type definitions with working TypeScript compilation

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

* Implement core datatype functionality with TypeScript compilation success

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

* Complete datatype implementation with full Context integration and tests

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>

* chipping away at the new code structure

* comments

* debug infinite recursion and split cubes on existing split atoms that aren't in the cube

* share lemmas, learn from unsat core, try to debug a couple of things, there was a subtle bug that i have a hard time repro'ing

* merge

* fix #7603: race condition in Ctrl-C handling (#7755)

* fix #7603: race condition in Ctrl-C handling

* fix race in cancel_eh

* fix build

* add arithemtic saturation

* add an option to register callback on quantifier instantiation

Suppose a user propagator encodes axioms using quantifiers and uses E-matching for instantiation. If it wants to implement a custom priority scheme or drop some instances based on internal checks it can register a callback with quantifier instantiation

* missing new closure

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>

* add Z3_solver_propagate_on_binding to ml callback declarations

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>

* add python file

Signed-off-by: Lev Nachmanson <levnach@Levs-MacBook-Pro.local>

* debug under defined calls

Signed-off-by: Lev Nachmanson <levnach@hotmail.com>

* more untangle params

Signed-off-by: Lev Nachmanson <levnach@hotmail.com>

* precalc parameters to define the eval order

Signed-off-by: Lev Nachmanson <levnach@hotmail.com>

* remove a printout

Signed-off-by: Lev Nachmanson <levnach@hotmail.com>

* rename a Python file

Signed-off-by: Lev Nachmanson <levnach@hotmail.com>

* add on_binding callbacks across APIs

update release notes,
add to Java, .Net, C++

* use jboolean in Native interface

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>

* register on_binding attribute

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>

* fix java build for java bindings

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>

* avoid interferring side-effects in function calls

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>

* remove theory_str and classes that are only used by it

* remove automata from python build

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>

* remove ref to theory_str

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>

* get the finest factorizations before project

Signed-off-by: Lev Nachmanson <levnach@hotmail.com>

* rename add_lcs to add_lc

Signed-off-by: Lev Nachmanson <levnach@hotmail.com>

* resolve bad bug about l2g and g2l translators using wrong global context. add some debug prints

* initial attempt at dynamically switching from greedy to frugal splitting strategy in return_cubes. need to test. also there is some bug where the threads take forever to cancel?

* Update RELEASE_NOTES.md

* resolve bug about not translating managers correctly for the second phase of the greedy cubing, and the frugal fallback

---------

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
Signed-off-by: Lev Nachmanson <levnach@Levs-MacBook-Pro.local>
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
Co-authored-by: Nikolaj Bjorner <nbjorner@microsoft.com>
Co-authored-by: humnrdble <83878671+humnrdble@users.noreply.github.com>
Co-authored-by: Nuno Lopes <nuno.lopes@tecnico.ulisboa.pt>
Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
Co-authored-by: NikolajBjorner <3085284+NikolajBjorner@users.noreply.github.com>
Co-authored-by: Lev Nachmanson <levnach@hotmail.com>
2025-08-11 09:14:20 -07:00
..
build-win-signed-cmake.yml Update build-win-signed-cmake.yml 2025-06-19 10:18:03 -07:00
build-win-signed.yml Update build-win-signed.yml 2025-06-19 10:17:39 -07:00
build_libcxx_msan.sh restore exec bit on configure & scripts/*.sh 2020-05-16 20:07:36 +01:00
coverage.yml jobs 2021-07-30 22:38:56 -07:00
find_non_defined_param_eval_patterns.py Parallel solving (#7771) 2025-08-11 09:14:20 -07:00
generate-doc.yml ocamldoc 2021-01-29 06:47:10 -08:00
jsdoctest.yml Standardize ubutu-latest vmImage 2022-08-15 07:55:45 -07:00
mk_consts_files.py try without #!/bin/env python #5397 2021-07-10 15:20:56 +02:00
mk_copyright.py tabs 2016-01-04 21:04:07 +00:00
mk_def_file.py try without #!/bin/env python #5397 2021-07-10 15:20:56 +02:00
mk_exception.py checkpoint 2012-10-23 12:12:59 -07:00
mk_genfile_common.py Typo Fixes (#6803) 2023-07-09 11:56:10 -07:00
mk_gparams_register_modules_cpp.py try without #!/bin/env python #5397 2021-07-10 15:20:56 +02:00
mk_install_tactic_cpp.py try without #!/bin/env python #5397 2021-07-10 15:20:56 +02:00
mk_make.py removed comments 2016-02-14 19:57:21 +00:00
mk_mem_initializer_cpp.py try without #!/bin/env python #5397 2021-07-10 15:20:56 +02:00
mk_nuget_task.py fix #7295 2025-03-12 11:43:31 -07:00
mk_pat_db.py try without #!/bin/env python #5397 2021-07-10 15:20:56 +02:00
mk_project.py Parallel solving (#7771) 2025-08-11 09:14:20 -07:00
mk_unix_dist.py Downgrade arm cross compile toolchain to glibc 2.34 (#7153) 2024-03-06 20:14:06 -08:00
mk_unix_dist_cmake.py porting unix distribution script to cmake 2024-01-30 16:28:52 -08:00
mk_util.py Fix #7623 (#7672) 2025-06-06 20:29:04 +02:00
mk_win_dist.py use single thread for win-dist 2025-03-02 19:23:19 -08:00
mk_win_dist_cmake.py 2nd attempt to use uniform java library location under bin #7406 2024-09-30 10:05:09 -07:00
nightly.yaml Update nightly.yaml for Azure Pipelines 2025-06-28 16:11:16 -07:00
policy.json add ESRP signing of nuget packages 2019-02-27 14:43:39 -08:00
pyg2hpp.py try without #!/bin/env python #5397 2021-07-10 15:20:56 +02:00
README updated docs 2012-10-25 18:46:37 -07:00
release.yml update minor version number 2025-06-25 09:14:13 -07:00
test-examples-cmake.yml remove test-examples from MacOS build, re-add maxsat example 2020-05-19 13:52:44 -07:00
test-java-cmake.yml fix typos in script 2023-11-28 16:50:28 -08:00
test-jupyter.yml extract jupyter template 2019-06-11 11:52:42 -07:00
test-regressions-coverage.yml rename 2021-07-29 11:32:20 -07:00
test-regressions.yml more templates 2019-06-12 08:35:34 -07:00
test-z3.yml update pipelines 2019-06-12 01:25:43 -07:00
trackall.sh restore exec bit on configure & scripts/*.sh 2020-05-16 20:07:36 +01:00
update_api.py Parallel solving (#7771) 2025-08-11 09:14:20 -07:00
update_header_guards.py tabs 2016-01-04 21:04:07 +00:00
update_include.py update header include generation to use relative paths #534 2017-08-03 08:50:04 -07:00
vsts-mac.sh remove stale references to gac/csc 2020-07-26 12:03:03 -07:00
vsts-vs2013.cmd remove python doc test 2018-03-20 13:37:04 -07:00
vsts-vs2017.cmd rename additional build options #2709 2019-11-18 23:02:44 -08:00

Instructions for updating external Z3 API
-----------------------------------------

The python "macros": def_Type() and def_API() are used to add new types and function definitions to the Z3 API.
The .h files provided to `mk_bindings(API_files)` contain these definitions.
See src\api\z3_api.h for many examples.

The bindings for .Net and Python are generated when mk_make.py is invoked.