3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2026-05-17 15:39:27 +00:00
z3/src/smt/seq/seq_state.h
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

42 lines
1.1 KiB
C++

/*++
Copyright (c) 2026 Microsoft Corporation
Module Name:
seq_state.h
Abstract:
Tracked constraint types bridging the SMT context to the Nielsen graph.
tracked_str_eq and tracked_str_mem extend the core constraint types with
SMT-layer source information (enodes and literals) for conflict reporting.
Author:
Clemens Eisenhofer 2026-03-01
Nikolaj Bjorner (nbjorner) 2026-03-01
--*/
#pragma once
#include "util/vector.h"
#include "smt/seq/seq_nielsen.h"
#include "util/sat_literal.h"
namespace smt {
class enode;
struct tracked_str_eq : public seq::str_eq {
enode *m_l, *m_r;
tracked_str_eq(euf::snode *lhs, euf::snode *rhs, smt::enode *l, smt::enode *r, seq::dep_tracker const &dep)
: seq::str_eq(lhs, rhs, dep), m_l(l), m_r(r) {}
};
struct tracked_str_mem : public seq::str_mem {
sat::literal lit;
tracked_str_mem(euf::snode *str, euf::snode *regex, sat::literal lit, euf::snode *history, unsigned id, seq::dep_tracker const &dep)
: seq::str_mem(str, regex, history, id, dep), lit(lit) {}
};
}