/*++ 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 : seq::str_eq { enode *m_l, *m_r; tracked_str_eq(euf::snode const* lhs, euf::snode const* rhs, enode* l, enode* r, seq::dep_tracker const &dep) : str_eq(lhs, rhs, dep), m_l(l), m_r(r) {} }; struct tracked_str_deq : seq::str_deq { sat::literal lit; tracked_str_deq(euf::snode const* lhs, euf::snode const* rhs, const sat::literal lit, seq::dep_tracker const &dep) : str_deq(lhs, rhs, dep), lit(lit) {} }; struct tracked_str_mem : seq::str_mem { sat::literal lit; tracked_str_mem(euf::snode const* str, euf::snode const* regex, const sat::literal lit, seq::dep_tracker const &dep) : str_mem(str, regex, dep), lit(lit) {} }; }