3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2026-05-22 01:49:36 +00:00
Commit graph

4855 commits

Author SHA1 Message Date
Nikolaj Bjorner
1863290b71 add deterministic solving for unit equations
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2026-03-22 15:34:16 -07:00
Copilot
6b5401ef68
Remove s_other from snode_kind; unify under s_var and is_var() (#9087)
* remove s_other, use s_var and is_var() instead

Co-authored-by: NikolajBjorner <3085284+NikolajBjorner@users.noreply.github.com>
Agent-Logs-Url: https://github.com/Z3Prover/z3/sessions/d56594ed-7f7e-436a-a4b2-e6dc986b18a8

* fix build: add reset() override to test dummy solver stubs

Co-authored-by: NikolajBjorner <3085284+NikolajBjorner@users.noreply.github.com>
Agent-Logs-Url: https://github.com/Z3Prover/z3/sessions/d437376d-55d8-4087-baf1-e89451d2d597

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: NikolajBjorner <3085284+NikolajBjorner@users.noreply.github.com>
2026-03-22 12:05:24 -07:00
Nikolaj Bjorner
aa210882c5 add review
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2026-03-21 10:14:34 -07:00
Copilot
2ab53072e9
Implement ensure_digit_axiom in theory_nseq (#9075)
Agent-Logs-Url: https://github.com/Z3Prover/z3/sessions/9b679ca3-dba7-469c-907a-9abd5edf1e1d

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: NikolajBjorner <3085284+NikolajBjorner@users.noreply.github.com>
2026-03-20 19:46:22 -07:00
Nikolaj Bjorner
ae12956545 updates based on discussion
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2026-03-20 11:20:29 -07:00
CEisenhofer
2bd5283f6a Assertions 2026-03-20 15:11:51 +01:00
CEisenhofer
737c5d44ed Simplify regex splits 2026-03-20 13:33:53 +01:00
CEisenhofer
5d912bdfa5 ... 2026-03-20 12:22:38 +01:00
CEisenhofer
fdb7f33552 ... one more 2026-03-20 12:20:16 +01:00
CEisenhofer
e3ed7f214b Removed debug lines 2026-03-20 12:19:53 +01:00
CEisenhofer
a873d5cdda Fixed output error 2026-03-20 11:51:37 +01:00
CEisenhofer
3662b89adc Missing range cases 2026-03-20 10:41:56 +01:00
Nikolaj Bjorner
d77e9d5c95 add code review comment
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2026-03-20 00:26:57 -07:00
Nikolaj Bjorner
0f4126f665 add filter for avoiding creating redundant disequality axioms
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2026-03-19 23:15:23 -07:00
Nikolaj Bjorner
1d928663de add reset method
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2026-03-19 22:57:59 -07:00
Nikolaj Bjorner
a895548b99 cleanup
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2026-03-19 16:39:41 -07:00
Nikolaj Bjorner
7a93e2296d coding nit
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2026-03-19 16:39:40 -07:00
Copilot
59bc9b17ea
theory_nseq: remove seq_state, embed tracked entries directly in prop_queue (#9045)
* Remove seq_state: embed tracked_str_eq/tracked_str_mem directly in prop_queue

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

* theory_nseq: use type aliases for eq_item/mem_item instead of wrapper structs

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

* seq_model: validate_regex takes single tracked_str_mem, caller loops

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>
2026-03-19 14:45:53 -07:00
Copilot
8795bf06fb
theory_nseq: dispatch assign_eh on all seq predicate cases via m_axioms, add enqueue/dequeue_axiom with variant prop_item (#9040)
* dispatch assign_eh cases via m_axioms: add prefix/suffix/contains true axioms

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

* fix build: remove stale snode_label_html declaration from seq_nielsen.h

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

* theory_nseq: add enqueue/dequeue_axiom + std::variant prop_item + relevant_eh

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>
2026-03-19 10:42:18 -07:00
CEisenhofer
109ab7d098 Fixed regex witness 2026-03-19 17:16:29 +01:00
CEisenhofer
51f3996464 Create dummy sat-node to avoid problems in case the preprocessor solves the problem entirely 2026-03-19 16:02:51 +01:00
CEisenhofer
9f4e823c8b ... and another one... 2026-03-19 15:44:15 +01:00
CEisenhofer
4271bdad55 Another minterm bug 2026-03-19 15:12:22 +01:00
Copilot
f837651434
seq_nielsen: replace mk_fresh_var() with mk_fresh_var(sort* s) (#9037)
* replace mk_fresh_var() with mk_fresh_var(sort* s) in seq_nielsen; fix snode_label_html linkage

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

* remove mk_var(symbol const&) from sgraph; update all callers to pass sort explicitly

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>
2026-03-18 20:41:41 -07:00
Nikolaj Bjorner
4b40969da6 added diseq
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2026-03-18 13:32:18 -07:00
CEisenhofer
777bda01a5 Subsolver was not reset properly 2026-03-18 20:22:08 +01:00
Nikolaj Bjorner
c43df60182 fix build of unit tests
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2026-03-18 10:29:41 -07:00
Nikolaj Bjorner
23b7e109bd partial updates to test
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2026-03-18 10:04:07 -07:00
Nikolaj Bjorner
8ac8eb4ae7 create sub-class for tracked eq and mem relations to separate from seq_nielsen
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2026-03-18 10:04:01 -07:00
CEisenhofer
e7431400b4 Regex bug fixes (still not there) 2026-03-18 18:01:44 +01:00
CEisenhofer
983379f5e2 Missing semicolon 2026-03-18 16:16:59 +01:00
CEisenhofer
0a32337f0a Removed some brackets 2026-03-18 16:15:37 +01:00
CEisenhofer
d8a6ea1321 Fixed crasb if regex is reported SAT by pre-check 2026-03-18 16:08:02 +01:00
CEisenhofer
43950569eb More fixes 2026-03-18 15:41:27 +01:00
CEisenhofer
b288c2e7dc Some more bug fixes 2026-03-18 14:54:12 +01:00
CEisenhofer
ab53889c10 Fixed couple of regex problems [there are still others] 2026-03-18 14:29:18 +01:00
Lev Nachmanson
b5bf4be87e fix: move m_fixed insertion after check_long_strings guard
m_fixed.insert(e) was placed before the check_long_strings guard,
causing check_fixed_length(false, false) to mark variables with
len > 20 as processed without actually decomposing them. The
subsequent check_fixed_length(false, true) then skipped them.

Move the insertion after the guard so variables are only marked
as fixed once they are actually decomposed.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-03-17 20:19:12 -10:00
copilot-swe-agent[bot]
960ab8e67a perf: move check_fixed_length(false,true) before check_contains in final_check_eh
Co-authored-by: levnach <5377127+levnach@users.noreply.github.com>
2026-03-17 20:19:12 -10:00
Lev Nachmanson
09c13a75e3 fix #8023: don't skip axiom clauses with non-base-level satisfying literals
The add_axiom optimization that skips adding clauses when a literal is
already true was unsound: the satisfying literal could be retracted by
backtracking, leaving the axiom clause missing. This caused the solver
to miss propagations, e.g., not propagating indexof(a,s) = -1 when
contains(a,s) becomes false after backtracking.

Fix: only skip the clause if the satisfying literal is assigned at
base level (scope 0), where it can never be retracted.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-03-17 15:05:41 -10:00
Nikolaj Bjorner
b1bae695e6 comment
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2026-03-17 16:32:01 -07:00
Nikolaj Bjorner
2847dd8bb3 small simplification
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2026-03-17 16:30:53 -07:00
Nikolaj Bjorner
3719b449e8 re-organize dependencies
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2026-03-17 16:18:27 -07:00
copilot-swe-agent[bot]
3745bdd43b fix: reduce verbose lock contention in theory_diff_logic (issue #8019)
In multi-threaded solving, IF_VERBOSE(0, ...) in found_non_diff_logic_expr
was always acquiring the global g_verbose_mux mutex (since verbosity >= 0 is
always true) while holding it for potentially expensive mk_pp() calls. This
caused catastrophic lock contention when multiple threads internalized atoms.

Change IF_VERBOSE(0, ...) to IF_VERBOSE(2, ...) in both theory_diff_logic_def.h
and theory_dense_diff_logic_def.h. The diagnostic message is still available at
verbosity level 2 (-v:2), but is no longer printed (or locked) at the default
verbosity level, eliminating the contention.

Co-authored-by: levnach <5377127+levnach@users.noreply.github.com>
2026-03-17 13:07:20 -10:00
Copilot
ef22ae8871
Replace dep_tracker uint_set with scoped_dependency_manager<dep_source> in seq_nielsen (#9014)
* Initial plan

* replace dep_tracker uint_set with scoped_dependency_manager<dep_source>

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

* fix test build: update dep_tracker usages in test files and seq_state.h

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>
2026-03-16 15:52:18 -07:00
CEisenhofer
84d371f2e9 Bugfix in regex overapproximation 2026-03-16 19:54:12 +01:00
CEisenhofer
16f693b09a Regex intersection bug fixe 2026-03-16 16:30:20 +01:00
Nikolaj Bjorner
db8a2f4f9e update print and cancelation
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2026-03-15 20:43:49 -07:00
Nikolaj Bjorner
7dea14f732 move statistics
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2026-03-15 20:09:19 -07:00
Nikolaj Bjorner
d137f25b65 na
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2026-03-15 19:58:21 -07:00
Nikolaj Bjorner
d15aed0d04 code organization in theory_nseq
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2026-03-15 19:39:53 -07:00