Nikolaj Bjorner
aed76af2b5
deal with code smells/duplicate
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2026-04-21 18:57:25 +02:00
Nikolaj Bjorner
4446705eae
clean up conflict generation
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2026-04-21 18:28:25 +02:00
Nikolaj Bjorner
f09f6d5097
add internalization as fallback option
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2026-04-14 08:47:55 -07:00
CEisenhofer
2db99473a3
Removed irrelevant information from membership constraints
2026-04-14 16:27:50 +02:00
CEisenhofer
195f2caf25
Removed strange code that caused the solver to give up when finding a model instantly
2026-04-14 16:06:03 +02:00
CEisenhofer
a58a9114d2
Fix str.< Skolem length generation overhead
2026-04-04 18:32:02 +02:00
CEisenhofer
5ec28d3bc8
Eliminate length gradients from regexes
2026-04-02 15:58:15 +02:00
CEisenhofer
1282e4de11
Prevent unsoudness because of missing length propagation
2026-04-02 14:34:46 +02:00
CEisenhofer
36b01a51f1
Properly extract justifications from subsolver
2026-04-01 16:58:26 +02:00
Nikolaj Bjorner
9aceaf3cac
reviewing seq_nielsen, detect repeated final-check to avoid rebuilding nielsen graph
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2026-03-30 00:01:24 -07:00
CEisenhofer
3b5b53126e
Bug fixing with unit replacement
2026-03-26 15:56:58 +01:00
Nikolaj Bjorner
af4677950b
add code for adding assumptions after sat
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2026-03-25 11:45:43 -07:00
Nikolaj Bjorner
9d2244798d
fix insertions into subst.
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2026-03-25 09:00:37 -07:00
Copilot
46c76d89e0
Make dep_mgr private in seq_nielsen; expose conflict sources vector ( #9129 )
...
* make dep_mgr private in seq_nielsen, expose conflict_sources vector
Co-authored-by: NikolajBjorner <3085284+NikolajBjorner@users.noreply.github.com>
Agent-Logs-Url: https://github.com/Z3Prover/z3/sessions/998d8021-4808-4feb-afc5-b2447c6a64e5
* move deps_to_lits to seq namespace in seq_nielsen
Co-authored-by: NikolajBjorner <3085284+NikolajBjorner@users.noreply.github.com>
Agent-Logs-Url: https://github.com/Z3Prover/z3/sessions/8d736478-8f9b-4451-8d1f-539ce72525c7
---------
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-25 08:05:00 -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
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
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
Nikolaj Bjorner
4b40969da6
added diseq
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2026-03-18 13:32:18 -07:00
Nikolaj Bjorner
3719b449e8
re-organize dependencies
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2026-03-17 16:18:27 -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
Copilot
d53846d501
nseq: port ZIPT regex pre-check to fix benchmark discrepancy on regex-only problems ( #8994 )
...
* Initial plan
* Port ZIPT regex pre-check and DFS node budget to address nseq benchmark discrepancy
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-15 10:10:53 -07:00
Copilot
5a3dbaf9f3
Move nseq_regex/state into smt/seq and seq_model into smt/; rename to seq_* prefix ( #8984 )
...
* Initial plan
* build verified: nseq_regex moved to smt/seq
Co-authored-by: NikolajBjorner <3085284+NikolajBjorner@users.noreply.github.com>
* rename nseq_regex/state/model to seq_regex/state/model in smt/seq; add Clemens Eisenhofer as co-author
Co-authored-by: NikolajBjorner <3085284+NikolajBjorner@users.noreply.github.com>
* seq_model: remove theory_nseq dependency; get family_id from seq_util
Co-authored-by: NikolajBjorner <3085284+NikolajBjorner@users.noreply.github.com>
* Add comments for regex enhancements in seq_model
Added comments regarding future improvements for regex handling.
* Add comments for large exponent handling
Add comments for handling large exponents in seq_model.cpp
* Revise comments for clarity on sort usage
Updated comments to reflect review suggestions regarding the use of the sort of 'n'.
* seq_state: remove sgraph dep; seq_model: use snode sort for is_empty; remove NSB review comments
Co-authored-by: NikolajBjorner <3085284+NikolajBjorner@users.noreply.github.com>
* Update seq_state.h
* Remove unnecessary include for smt_context.h
* move seq_model from smt/seq/ to smt/; fix seq_state.h add_str_mem typo
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-14 11:45:32 -07:00
copilot-swe-agent[bot]
5744958e46
Replace lp_simple_solver in nielsen with context_solver using smt::kernel (seq_len)
...
Co-authored-by: NikolajBjorner <3085284+NikolajBjorner@users.noreply.github.com>
2026-03-10 21:39:29 +00:00
CEisenhofer
b2838b472d
We don't need to handle negative membership constraints explicitly
2026-03-04 19:07:36 +01:00
Nikolaj Bjorner
5aa3713d19
first end-pass. Atomic
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2026-03-04 02:05:26 -08:00
copilot-swe-agent[bot]
0bdec633d7
Implement ZIPT string solver skeleton (theory_nseq)
...
Add theory_nseq, a Nielsen-graph-based string solver plugin for Z3.
## New files
- src/smt/nseq_state.h/.cpp: constraint store bridging SMT context to
Nielsen graph with manual push/pop backtracking
- src/smt/nseq_regex.h/.cpp: regex membership handling via Brzozowski
derivatives (stub delegates to sgraph::brzozowski_deriv)
- src/smt/nseq_model.h/.cpp: model generation stub
- src/smt/theory_nseq.h/.cpp: main theory class implementing smt::theory
with its own private egraph/sgraph, returns FC_GIVEUP as skeleton
- src/test/nseq_basic.cpp: unit tests covering instantiation, parameter
validation, trivial-equality SAT, and node simplification
## Extensions to seq_nielsen.h/.cpp
- Add search_result enum and solve() iterative-deepening DFS entry point
- Add search_dfs() recursive DFS driver
- Add simplify_node(), generate_extensions(), collect_conflict_deps()
- Add nielsen_node::simplify_and_init(): trivial removal, empty
propagation, prefix matching, symbol clash detection
- Add nielsen_node::is_satisfied(), is_subsumed_by()
- Implement Det, Const Nielsen, and Eq-split modifiers in
generate_extensions()
## Integration
- smt_params.cpp: accept 'nseq' as valid string_solver value
- smt_params_helper.pyg: document 'nseq' option
- smt_setup.h/.cpp: add setup_nseq(), wire into setup_QF_S() and
setup_seq_str()
- smt/CMakeLists.txt: add new sources and smt_seq dependency
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-03-03 21:50:21 +00:00