mirror of
https://github.com/Z3Prover/z3
synced 2026-06-22 00:20:27 +00:00
48 lines
1.3 KiB
C++
48 lines
1.3 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 : 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) {}
|
|
};
|
|
|
|
}
|