mirror of
https://github.com/Z3Prover/z3
synced 2025-06-18 11:58:31 +00:00
track refinement source
This commit is contained in:
parent
e978e4fc8e
commit
3d06a90e7f
2 changed files with 7 additions and 1 deletions
|
@ -70,6 +70,7 @@ namespace polysat {
|
||||||
auto* e = m_alloc.back();
|
auto* e = m_alloc.back();
|
||||||
e->side_cond.reset();
|
e->side_cond.reset();
|
||||||
e->coeff = 1;
|
e->coeff = 1;
|
||||||
|
e->refined = nullptr;
|
||||||
m_alloc.pop_back();
|
m_alloc.pop_back();
|
||||||
return e;
|
return e;
|
||||||
}
|
}
|
||||||
|
@ -348,6 +349,7 @@ namespace polysat {
|
||||||
pdd lop = s.var2pdd(v).mk_val(lo);
|
pdd lop = s.var2pdd(v).mk_val(lo);
|
||||||
pdd hip = s.var2pdd(v).mk_val(hi);
|
pdd hip = s.var2pdd(v).mk_val(hi);
|
||||||
entry* ne = alloc_entry();
|
entry* ne = alloc_entry();
|
||||||
|
ne->refined = e;
|
||||||
ne->src = e->src;
|
ne->src = e->src;
|
||||||
ne->side_cond = e->side_cond;
|
ne->side_cond = e->side_cond;
|
||||||
ne->coeff = 1;
|
ne->coeff = 1;
|
||||||
|
@ -384,6 +386,7 @@ namespace polysat {
|
||||||
pdd lop = s.var2pdd(v).mk_val(lo);
|
pdd lop = s.var2pdd(v).mk_val(lo);
|
||||||
pdd hip = s.var2pdd(v).mk_val(hi);
|
pdd hip = s.var2pdd(v).mk_val(hi);
|
||||||
entry* ne = alloc_entry();
|
entry* ne = alloc_entry();
|
||||||
|
ne->refined = e;
|
||||||
ne->src = e->src;
|
ne->src = e->src;
|
||||||
ne->side_cond = e->side_cond;
|
ne->side_cond = e->side_cond;
|
||||||
ne->coeff = 1;
|
ne->coeff = 1;
|
||||||
|
@ -471,6 +474,7 @@ namespace polysat {
|
||||||
pdd lop = s.var2pdd(v).mk_val(lo);
|
pdd lop = s.var2pdd(v).mk_val(lo);
|
||||||
pdd hip = s.var2pdd(v).mk_val(hi);
|
pdd hip = s.var2pdd(v).mk_val(hi);
|
||||||
entry* ne = alloc_entry();
|
entry* ne = alloc_entry();
|
||||||
|
ne->refined = e;
|
||||||
ne->src = e->src;
|
ne->src = e->src;
|
||||||
ne->side_cond = e->side_cond;
|
ne->side_cond = e->side_cond;
|
||||||
ne->coeff = 1;
|
ne->coeff = 1;
|
||||||
|
|
|
@ -38,7 +38,9 @@ namespace polysat {
|
||||||
solver& s;
|
solver& s;
|
||||||
forbidden_intervals m_forbidden_intervals;
|
forbidden_intervals m_forbidden_intervals;
|
||||||
|
|
||||||
struct entry final : public dll_base<entry>, public fi_record {};
|
struct entry final : public dll_base<entry>, public fi_record {
|
||||||
|
entry const* refined = nullptr;
|
||||||
|
};
|
||||||
enum class entry_kind { unit_e, equal_e, diseq_e };
|
enum class entry_kind { unit_e, equal_e, diseq_e };
|
||||||
|
|
||||||
ptr_vector<entry> m_alloc;
|
ptr_vector<entry> m_alloc;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue