3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-08-26 13:06:05 +00:00
Commit graph

55 commits

Author SHA1 Message Date
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
Lev Nachmanson
8f88bf9998 use is_square_free_at_sample instead of is_well_oriented
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
2025-06-17 07:22:03 -07:00
Lev Nachmanson
0e71a9d11c comment and restore
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
2025-06-17 07:22:03 -07:00
Lev Nachmanson
84c8a93ca5 renaming
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
2025-06-17 07:22:03 -07:00
Lev Nachmanson
945eef7ab6 work on well-orientedness
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
2025-06-17 07:22:03 -07:00
LeeYoungJoon
0a93ff515d
Centralize and document TRACE tags using X-macros (#7657)
* Introduce X-macro-based trace tag definition
- Created trace_tags.def to centralize TRACE tag definitions
- Each tag includes a symbolic name and description
- Set up enum class TraceTag for type-safe usage in TRACE macros

* Add script to generate Markdown documentation from trace_tags.def
- Python script parses trace_tags.def and outputs trace_tags.md

* Refactor TRACE_NEW to prepend TraceTag and pass enum to is_trace_enabled

* trace: improve trace tag handling system with hierarchical tagging

- Introduce hierarchical tag-class structure: enabling a tag class activates all child tags
- Unify TRACE, STRACE, SCTRACE, and CTRACE under enum TraceTag
- Implement initial version of trace_tag.def using X(tag, tag_class, description)
  (class names and descriptions to be refined in a future update)

* trace: replace all string-based TRACE tags with enum TraceTag
- Migrated all TRACE, STRACE, SCTRACE, and CTRACE macros to use enum TraceTag values instead of raw string literals

* trace : add cstring header

* trace : Add Markdown documentation generation from trace_tags.def via mk_api_doc.py

* trace : rename macro parameter 'class' to 'tag_class' and remove Unicode comment in trace_tags.h.

* trace : Add TODO comment for future implementation of tag_class activation

* trace : Disable code related to tag_class until implementation is ready (#7663).
2025-05-28 14:31:25 +01:00
Lev Nachmanson
f89e133d52
revert the behavior of add_zero_assumption (#7631)
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
2025-04-28 16:07:46 -07:00
Nuno Lopes
3586b613f7 remove default destructors 2024-10-02 22:20:12 +01:00
Nikolaj Bjorner
b84b4e7f9a fix attribute order
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2024-08-26 11:38:27 -07:00
Nikolaj Bjorner
49ba3bc12f address compiler warnings gcc-13
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2024-08-26 11:33:54 -07:00
Lev Nachmanson
209366ba55 cleanup porting comments
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
2024-08-11 12:45:36 -10:00
Lev Nachmanson
a09e412cf0 cleaning up
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
2024-08-11 12:45:36 -10:00
Lev Nachmanson
6ce0fcd3ef port sample cell projection
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
2024-08-11 12:45:36 -10:00
Nikolaj Bjorner
c18a42cf5b change signed projection to include root object. 2024-03-23 16:14:24 -04:00
Nikolaj Bjorner
f840d5d965 na
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2024-03-20 21:29:13 -07:00
Nikolaj Bjorner
70d2263a85 cast, updated nlexplain 2024-03-20 21:29:08 -07:00
Lev Nachmanson
730f9ad9b7 Nikolaj's fix in add_zero_assumption
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
2024-03-20 09:39:20 -10:00
Lev Nachmanson
4d06c399cc replace DEBUG_CODE by #ifdef Z3DEBUG in nlsat
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
2024-02-13 10:51:44 -10:00
Nikolaj Bjorner
1b94d43a8b fix build
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2024-01-24 08:52:56 -08:00
Nikolaj Bjorner
fad428381a prepare for integer intervals 2024-01-23 15:33:48 -08:00
Nikolaj Bjorner
be7856c57d fix #7027
TODO: review old nlsat bugs for effect of this fix.
2024-01-23 14:56:15 -08:00
Nuno Lopes
d9fcfdab34 fix debug build 2022-06-17 14:35:33 +01:00
Nikolaj Bjorner
4a6083836a call it data instead of c_ptr for approaching C++11 std::vector convention. 2021-04-13 18:17:35 -07:00
Nikolaj Bjorner
b56372fe76 fix some build warnings exposed in #5005
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2021-02-08 10:57:50 -08:00
Nikolaj Bjorner
b889b110ee bool_vector, some spacer tidy
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2020-04-05 12:59:04 -07:00
Nikolaj Bjorner
193a99da29 fix #3152
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2020-03-05 09:46:32 +01:00
Lev Nachmanson
9c62b431e4 address the NB's comments
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
2020-01-28 10:04:21 -08:00
Lev
cc6dc9e7d4 switching to rooted monomials if there is no sign lemma
Signed-off-by: Lev <levnach@hotmail.com>
2020-01-28 10:04:21 -08:00
Nikolaj Bjorner
d3b105f9f8 move out sign
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2020-01-20 16:22:38 -06:00
Nikolaj Bjorner
64dd4e1c83 fix #2659
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2019-10-25 10:42:21 -07:00
Nikolaj Bjorner
60dde9f3d5 unit test for #2650
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2019-10-24 10:32:56 -07:00
Nikolaj Bjorner
3fcd9e64c7 logging
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2019-10-23 20:18:21 -07:00
Nuno Lopes
bc50b6bea2 fix a few warnings 2019-10-09 14:09:33 +01:00
Nikolaj Bjorner
39edf73e78 fix #2613 fix #2612
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2019-10-05 16:57:51 -07:00
Nikolaj Bjorner
88f0e4a64c fix #2592 #2593 #2597 #2573 - duplicates, also fix #2603
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2019-10-01 13:14:12 -07:00
Nikolaj Bjorner
0b06a9b5d8 fix minor version numbering
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2019-09-23 01:57:03 -07:00
Nikolaj Bjorner
f8df7770a2 na
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2019-09-19 16:41:28 -07:00
Nikolaj Bjorner
0f20175bdd fix #2556, sign of of inequality is not restricted to -1, 0, 1, but can be -2, -3 etc
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2019-09-14 19:41:01 -04:00
Nikolaj Bjorner
67c4777514 fix #2548 fix #2530
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2019-09-13 15:03:04 +02:00
Nikolaj Bjorner
2e6908bd9e fix #2509, fix issue with model inheritance exposed by #2483
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2019-08-27 10:48:22 -03:00
Nikolaj Bjorner
4431a534b3 fix #2450 - track assumptions across lazy explanations and variable equalities
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2019-08-03 07:57:16 -07:00
Nikolaj Bjorner
19e2f8c9d5 fix #1694
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2018-06-20 17:35:41 -07:00
Nikolaj Bjorner
8040eddf65 fix #1658 fix #1689
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2018-06-18 16:41:04 -07:00
Nikolaj Bjorner
363d7aad2a fix bug reported in #1637
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2018-05-22 20:02:08 -07:00
Bruce Mitchener
76eb7b9ede Use nullptr. 2018-02-12 14:05:55 +07:00
Bruce Mitchener
ae8027e594 Fix typos. 2018-02-01 19:39:43 +07:00
Nikolaj Bjorner
b19f94ae5b make include paths uniformly use path relative to src. #534
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2017-07-31 13:24:11 -07:00
Nikolaj Bjorner
49f88d9d90 fix uninitialized warning
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2017-07-24 12:52:10 -07:00
Nikolaj Bjorner
96e157e201 fix warnings for unused variables
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2016-05-17 13:54:22 -07:00
Nikolaj Bjorner
20bbdfe31a moving remaining qsat functionality over
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2016-03-19 15:35:26 -07:00