mirror of
https://github.com/Z3Prover/z3
synced 2026-03-07 22:04:53 +00:00
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> |
||
|---|---|---|
| .. | ||
| arith_rewriter_params.pyg | ||
| array_rewriter_params.pyg | ||
| bit_blaster_params.h | ||
| bool_rewriter_params.pyg | ||
| bv_rewriter_params.pyg | ||
| CMakeLists.txt | ||
| context_params.cpp | ||
| context_params.h | ||
| dyn_ack_params.cpp | ||
| dyn_ack_params.h | ||
| fpa2bv_rewriter_params.pyg | ||
| fpa_rewriter_params.pyg | ||
| pattern_inference_params.cpp | ||
| pattern_inference_params.h | ||
| pattern_inference_params_helper.pyg | ||
| poly_rewriter_params.pyg | ||
| preprocessor_params.cpp | ||
| preprocessor_params.h | ||
| qi_params.cpp | ||
| qi_params.h | ||
| rewriter_params.pyg | ||
| sat_params.pyg | ||
| seq_rewriter_params.pyg | ||
| sls_params.pyg | ||
| smt_parallel_params.pyg | ||
| smt_params.cpp | ||
| smt_params.h | ||
| smt_params_helper.pyg | ||
| solver_params.pyg | ||
| tactic_params.pyg | ||
| theory_arith_params.cpp | ||
| theory_arith_params.h | ||
| theory_array_params.cpp | ||
| theory_array_params.h | ||
| theory_bv_params.cpp | ||
| theory_bv_params.h | ||
| theory_datatype_params.h | ||
| theory_pb_params.cpp | ||
| theory_pb_params.h | ||
| theory_seq_params.cpp | ||
| theory_seq_params.h | ||