mirror of
https://github.com/Z3Prover/z3
synced 2026-05-17 15:39:27 +00:00
* 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>
42 lines
1.1 KiB
C++
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) {}
|
|
};
|
|
|
|
}
|