3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-08-26 13:06:05 +00:00
z3/src/sat
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
..
sat_solver Parallel solving (#7771) 2025-08-11 09:14:20 -07:00
smt Parallel solving (#7771) 2025-08-11 09:14:20 -07:00
tactic Centralize and document TRACE tags using X-macros (#7657) 2025-05-28 14:31:25 +01:00
CMakeLists.txt remove unused bdd based variable elimination 2025-04-14 16:07:41 -07:00
dimacs.cpp deal with compiler warnings and include value exchange prior to final check. 2025-01-24 09:40:33 -08:00
dimacs.h inherit more exceptions from std::exception 2024-11-04 13:52:14 -08:00
sat_aig_cuts.cpp Centralize and document TRACE tags using X-macros (#7657) 2025-05-28 14:31:25 +01:00
sat_aig_cuts.h running updates to bv_solver (#4674) 2020-09-07 20:35:32 -07:00
sat_aig_finder.cpp Typo Fixes (#6803) 2023-07-09 11:56:10 -07:00
sat_aig_finder.h remove a hundred implicit constructors/destructors 2021-05-23 14:25:01 +01:00
sat_allocator.h booyah 2020-07-04 15:56:30 -07:00
sat_anf_simplifier.cpp Centralize and document TRACE tags using X-macros (#7657) 2025-05-28 14:31:25 +01:00
sat_anf_simplifier.h remove a hundred implicit constructors/destructors 2021-05-23 14:25:01 +01:00
sat_asymm_branch.cpp Centralize and document TRACE tags using X-macros (#7657) 2025-05-28 14:31:25 +01:00
sat_asymm_branch.h booyah 2020-07-04 15:56:30 -07:00
sat_asymm_branch_params.pyg bug fixes 2018-02-19 21:49:03 -08:00
sat_bcd.cpp Centralize and document TRACE tags using X-macros (#7657) 2025-05-28 14:31:25 +01:00
sat_bcd.h bool_vector, some spacer tidy 2020-04-05 12:59:04 -07:00
sat_big.cpp call it data instead of c_ptr for approaching C++11 std::vector convention. 2021-04-13 18:17:35 -07:00
sat_big.h booyah 2020-07-04 15:56:30 -07:00
sat_clause.cpp Centralize and document TRACE tags using X-macros (#7657) 2025-05-28 14:31:25 +01:00
sat_clause.h remove unneeded iterator functions 2024-09-23 12:59:04 +01:00
sat_clause_set.cpp
sat_clause_set.h booyah 2020-07-04 15:56:30 -07:00
sat_clause_use_list.cpp fixes to build warnings 2024-09-30 08:23:31 -07:00
sat_clause_use_list.h Centralize and document TRACE tags using X-macros (#7657) 2025-05-28 14:31:25 +01:00
sat_cleaner.cpp Centralize and document TRACE tags using X-macros (#7657) 2025-05-28 14:31:25 +01:00
sat_cleaner.h booyah 2020-07-04 15:56:30 -07:00
sat_config.cpp remove binspr experiment 2025-01-12 13:39:26 -08:00
sat_config.h remove binspr experiment 2025-01-12 13:39:26 -08:00
sat_cut_simplifier.cpp Centralize and document TRACE tags using X-macros (#7657) 2025-05-28 14:31:25 +01:00
sat_cut_simplifier.h fixing #4670 (#4682) 2020-09-10 04:35:11 -07:00
sat_cutset.cpp remove a few string copies 2023-12-20 16:55:09 +00:00
sat_cutset.h Use noexcept more. (#7058) 2023-12-16 12:14:53 +00:00
sat_cutset_compute_shift.h Make sure all headers do #pragma once. (#6188) 2022-07-23 10:41:14 -07:00
sat_ddfw_wrapper.cpp flip tabu on predicate being repaired, add model rotation code 2025-01-02 14:39:36 -08:00
sat_ddfw_wrapper.h flip tabu on predicate being repaired, add model rotation code 2025-01-02 14:39:36 -08:00
sat_drat.cpp Centralize and document TRACE tags using X-macros (#7657) 2025-05-28 14:31:25 +01:00
sat_drat.h remove deprecated theory aware drat functionality 2022-10-24 08:32:10 -07:00
sat_elim_eqs.cpp Centralize and document TRACE tags using X-macros (#7657) 2025-05-28 14:31:25 +01:00
sat_elim_eqs.h booyah 2020-07-04 15:56:30 -07:00
sat_extension.h fix build 2023-12-02 19:52:59 -08:00
sat_gc.cpp Centralize and document TRACE tags using X-macros (#7657) 2025-05-28 14:31:25 +01:00
sat_integrity_checker.cpp Centralize and document TRACE tags using X-macros (#7657) 2025-05-28 14:31:25 +01:00
sat_integrity_checker.h fixes to trim 2023-07-03 19:26:19 +02:00
sat_justification.h remove ternary clause optimization 2022-10-30 03:57:39 -07:00
sat_local_search.cpp Centralize and document TRACE tags using X-macros (#7657) 2025-05-28 14:31:25 +01:00
sat_local_search.h remove default destructors 2024-10-02 22:20:12 +01:00
sat_lookahead.cpp Centralize and document TRACE tags using X-macros (#7657) 2025-05-28 14:31:25 +01:00
sat_lookahead.h Centralize and document TRACE tags using X-macros (#7657) 2025-05-28 14:31:25 +01:00
sat_lut_finder.cpp Centralize and document TRACE tags using X-macros (#7657) 2025-05-28 14:31:25 +01:00
sat_lut_finder.h remove a hundred implicit constructors/destructors 2021-05-23 14:25:01 +01:00
sat_model_converter.cpp Centralize and document TRACE tags using X-macros (#7657) 2025-05-28 14:31:25 +01:00
sat_model_converter.h remove default destructors 2024-10-02 22:20:12 +01:00
sat_mus.cpp Centralize and document TRACE tags using X-macros (#7657) 2025-05-28 14:31:25 +01:00
sat_mus.h remove default destructors & some default constructors 2024-09-04 22:30:23 +01:00
sat_npn3_finder.cpp No need to hash quaternaries for AND. 2020-03-01 04:10:25 -08:00
sat_npn3_finder.h remove a hundred implicit constructors/destructors 2021-05-23 14:25:01 +01:00
sat_parallel.cpp set clean shutdown for local search and re-enable local search when it parallelizes with PB solver 2024-06-30 16:06:51 -07:00
sat_parallel.h set clean shutdown for local search and re-enable local search when it parallelizes with PB solver 2024-06-30 16:06:51 -07:00
sat_prob.cpp create insert-fresh and insert for indexed_uint_set to make use cases with non-fresh inserts easier 2023-08-03 09:48:07 -07:00
sat_prob.h fix #6599 2023-02-18 14:18:02 -08:00
sat_probing.cpp Centralize and document TRACE tags using X-macros (#7657) 2025-05-28 14:31:25 +01:00
sat_probing.h optimizations to bv-solver and euf-egraph (#4698) 2020-09-20 06:47:27 -07:00
sat_proof_trim.cpp fix bug in trim code missing dependecy 2025-06-07 15:39:05 -07:00
sat_proof_trim.h fixup dependencies for trim' 2023-07-17 11:00:02 -07:00
sat_scc.cpp Centralize and document TRACE tags using X-macros (#7657) 2025-05-28 14:31:25 +01:00
sat_scc.h expose extract roots as separate 2022-01-31 11:56:44 -08:00
sat_scc_params.pyg working on completing ATE/ALA for acce and abce 2018-01-29 20:32:06 -08:00
sat_simplifier.cpp Centralize and document TRACE tags using X-macros (#7657) 2025-05-28 14:31:25 +01:00
sat_simplifier.h fix #7532 2025-01-27 10:51:12 -08:00
sat_simplifier_params.pyg remove unused bdd based variable elimination 2025-04-14 16:07:41 -07:00
sat_solver.cpp Centralize and document TRACE tags using X-macros (#7657) 2025-05-28 14:31:25 +01:00
sat_solver.h Centralize and document TRACE tags using X-macros (#7657) 2025-05-28 14:31:25 +01:00
sat_solver_core.h Use = default for virtual constructors. 2022-08-05 18:11:46 +03:00
sat_types.h fixes and tests for arith-sls 2023-02-28 17:40:09 -08:00
sat_watched.cpp remove ternary clause optimization 2022-10-30 03:57:39 -07:00
sat_watched.h remove ternary clause optimization 2022-10-30 03:57:39 -07:00
sat_xor_finder.cpp Centralize and document TRACE tags using X-macros (#7657) 2025-05-28 14:31:25 +01:00
sat_xor_finder.h remove a hundred implicit constructors/destructors 2021-05-23 14:25:01 +01:00