3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2026-03-07 22:04:53 +00:00
z3/src/params
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
..
arith_rewriter_params.pyg shuffle dependencies 2020-08-29 09:51:39 -07:00
array_rewriter_params.pyg #5516 2021-09-01 17:44:17 -07:00
bit_blaster_params.h don't flush stream when printing param vals 2023-01-03 09:35:17 +00:00
bool_rewriter_params.pyg turn on ite simplification by default 2025-03-26 11:30:08 -07:00
bv_rewriter_params.pyg fix #5929 - add parameter bv_le2extract to allow disabling the disassembly to extract 2022-03-27 18:23:41 -10:00
CMakeLists.txt Some changes to improve LIA performance (#8101) 2025-12-22 17:47:36 +00:00
context_params.cpp Standardize for-loop increments to prefix form (++i) (#8199) 2026-01-14 19:55:31 -08:00
context_params.h add warning messages for #7100 2024-01-30 21:30:37 -08:00
dyn_ack_params.cpp move smt params to params directory, update release.yml 2025-06-09 10:47:22 -07:00
dyn_ack_params.h move smt params to params directory, update release.yml 2025-06-09 10:47:22 -07:00
fpa2bv_rewriter_params.pyg move fpa 2020-08-29 11:16:21 -07:00
fpa_rewriter_params.pyg move parameters from ast/rewriter to params 2020-08-29 11:11:16 -07:00
pattern_inference_params.cpp add parameter to disable pattern inference #6884 2023-09-03 15:27:37 -07:00
pattern_inference_params.h add parameter to disable pattern inference #6884 2023-09-03 15:27:37 -07:00
pattern_inference_params_helper.pyg add parameter to disable pattern inference #6884 2023-09-03 15:27:37 -07:00
poly_rewriter_params.pyg move parameters from ast/rewriter to params 2020-08-29 11:11:16 -07:00
preprocessor_params.cpp move smt params to params directory, update release.yml 2025-06-09 10:47:22 -07:00
preprocessor_params.h move smt params to params directory, update release.yml 2025-06-09 10:47:22 -07:00
qi_params.cpp move smt params to params directory, update release.yml 2025-06-09 10:47:22 -07:00
qi_params.h move smt params to params directory, update release.yml 2025-06-09 10:47:22 -07:00
rewriter_params.pyg fix #8109 2026-01-07 10:56:50 -08:00
sat_params.pyg remove stale experimental code #8063 2025-12-12 05:49:05 +00:00
seq_rewriter_params.pyg move parameters from ast/rewriter to params 2020-08-29 11:11:16 -07:00
sls_params.pyg update release version 2025-01-31 09:29:28 -08:00
smt_parallel_params.pyg Add SLS tactic as a separate worker thread (#8263) 2026-01-20 12:52:00 -08:00
smt_params.cpp Implement ZIPT string solver skeleton (theory_nseq) 2026-03-03 21:50:21 +00:00
smt_params.h remove theory_str and classes that are only used by it 2025-08-07 21:05:12 -07:00
smt_params_helper.pyg Implement ZIPT string solver skeleton (theory_nseq) 2026-03-03 21:50:21 +00:00
solver_params.pyg A slice solver option for interactive use case 2024-10-08 09:24:52 -07:00
tactic_params.pyg add missing dependencies 2025-06-09 13:05:09 -07:00
theory_arith_params.cpp add option to control epsilon #7791 2025-08-17 16:51:00 -07:00
theory_arith_params.h add option to control epsilon #7791 2025-08-17 16:51:00 -07:00
theory_array_params.cpp move smt params to params directory, update release.yml 2025-06-09 10:47:22 -07:00
theory_array_params.h move smt params to params directory, update release.yml 2025-06-09 10:47:22 -07:00
theory_bv_params.cpp move smt params to params directory, update release.yml 2025-06-09 10:47:22 -07:00
theory_bv_params.h move smt params to params directory, update release.yml 2025-06-09 10:47:22 -07:00
theory_datatype_params.h move smt params to params directory, update release.yml 2025-06-09 10:47:22 -07:00
theory_pb_params.cpp move smt params to params directory, update release.yml 2025-06-09 10:47:22 -07:00
theory_pb_params.h move smt params to params directory, update release.yml 2025-06-09 10:47:22 -07:00
theory_seq_params.cpp move smt params to params directory, update release.yml 2025-06-09 10:47:22 -07:00
theory_seq_params.h move smt params to params directory, update release.yml 2025-06-09 10:47:22 -07:00