3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2026-06-22 00:20:27 +00:00
z3/src/smt/seq/seq_state.h
CEisenhofer be627007e1 Use lookahead for regex decomposition
Make snode const
2026-06-11 15:34:25 +02:00

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) {}
};
}