mirror of
https://github.com/Z3Prover/z3
synced 2025-06-29 01:18:45 +00:00
add unconstrained elimination for sequences
This commit is contained in:
parent
a0f3727e90
commit
d1c7ff1a36
12 changed files with 148 additions and 16 deletions
|
@ -73,7 +73,7 @@ void elim_unconstrained::eliminate() {
|
|||
node& n = get_node(v);
|
||||
if (n.m_refcount == 0)
|
||||
continue;
|
||||
if (n.m_refcount > 1)
|
||||
if (n.m_refcount > 1)
|
||||
return;
|
||||
|
||||
if (n.m_parents.empty()) {
|
||||
|
@ -90,10 +90,10 @@ void elim_unconstrained::eliminate() {
|
|||
unsigned sz = m_args.size();
|
||||
for (expr* arg : *to_app(t))
|
||||
m_args.push_back(reconstruct_term(get_node(arg)));
|
||||
bool inverted = m_inverter(t->get_decl(), to_app(t)->get_num_args(), m_args.data() + sz, r);
|
||||
bool inverted = m_inverter(t->get_decl(), t->get_num_args(), m_args.data() + sz, r);
|
||||
proof_ref pr(m);
|
||||
if (inverted && m_enable_proofs) {
|
||||
expr * s = m.mk_app(t->get_decl(), to_app(t)->get_num_args(), m_args.data() + sz);
|
||||
expr * s = m.mk_app(t->get_decl(), t->get_num_args(), m_args.data() + sz);
|
||||
expr * eq = m.mk_eq(s, r);
|
||||
proof * pr1 = m.mk_def_intro(eq);
|
||||
proof * pr = m.mk_apply_def(s, r, pr1);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue