mirror of
https://github.com/Z3Prover/z3
synced 2025-06-19 12:23:38 +00:00
deal with recursive calls to internalization with the same formula
This commit is contained in:
parent
2fedcbd41e
commit
ef28f0e2f0
1 changed files with 12 additions and 0 deletions
|
@ -405,6 +405,8 @@ struct goal2sat::imp : public sat::sat_internalizer {
|
||||||
m_result_stack.shrink(old_sz);
|
m_result_stack.shrink(old_sz);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
if (process_cached(t, root, sign))
|
||||||
|
return;
|
||||||
SASSERT(num <= m_result_stack.size());
|
SASSERT(num <= m_result_stack.size());
|
||||||
sat::bool_var k = add_var(false, t);
|
sat::bool_var k = add_var(false, t);
|
||||||
sat::literal l(k, false);
|
sat::literal l(k, false);
|
||||||
|
@ -454,6 +456,8 @@ struct goal2sat::imp : public sat::sat_internalizer {
|
||||||
m_result_stack.shrink(old_sz);
|
m_result_stack.shrink(old_sz);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
if (process_cached(t, root, sign))
|
||||||
|
return;
|
||||||
SASSERT(num <= m_result_stack.size());
|
SASSERT(num <= m_result_stack.size());
|
||||||
sat::bool_var k = add_var(false, t);
|
sat::bool_var k = add_var(false, t);
|
||||||
sat::literal l(k, false);
|
sat::literal l(k, false);
|
||||||
|
@ -507,6 +511,8 @@ struct goal2sat::imp : public sat::sat_internalizer {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
if (process_cached(n, root, sign))
|
||||||
|
return;
|
||||||
sat::bool_var k = add_var(false, n);
|
sat::bool_var k = add_var(false, n);
|
||||||
sat::literal l(k, false);
|
sat::literal l(k, false);
|
||||||
cache(n, l);
|
cache(n, l);
|
||||||
|
@ -537,6 +543,8 @@ struct goal2sat::imp : public sat::sat_internalizer {
|
||||||
mk_root_clause(sign ? lit : ~lit);
|
mk_root_clause(sign ? lit : ~lit);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
if (process_cached(t, root, sign))
|
||||||
|
return;
|
||||||
sat::bool_var k = add_var(false, t);
|
sat::bool_var k = add_var(false, t);
|
||||||
sat::literal l(k, false);
|
sat::literal l(k, false);
|
||||||
cache(t, l);
|
cache(t, l);
|
||||||
|
@ -567,6 +575,8 @@ struct goal2sat::imp : public sat::sat_internalizer {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
if (process_cached(t, root, sign))
|
||||||
|
return;
|
||||||
sat::bool_var k = add_var(false, t);
|
sat::bool_var k = add_var(false, t);
|
||||||
sat::literal l(k, false);
|
sat::literal l(k, false);
|
||||||
cache(t, l);
|
cache(t, l);
|
||||||
|
@ -603,6 +613,8 @@ struct goal2sat::imp : public sat::sat_internalizer {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
if (process_cached(t, root, sign))
|
||||||
|
return;
|
||||||
sat::bool_var k = add_var(false, t);
|
sat::bool_var k = add_var(false, t);
|
||||||
sat::literal l(k, false);
|
sat::literal l(k, false);
|
||||||
if (m.is_xor(t))
|
if (m.is_xor(t))
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue