3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-04-28 19:35:50 +00:00

disable order and tangent lemmas on reals

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
Nikolaj Bjorner 2020-05-11 13:46:25 -07:00
parent 81b3c440ce
commit 16478b415b
6 changed files with 31 additions and 25 deletions

View file

@ -1061,6 +1061,8 @@ bool core::find_bfc_to_refine(const monic* & m, factorization & bf){
lpvar i = m_to_refine[(k + r) % sz];
m = &m_emons[i];
SASSERT (!check_monic(*m));
if (has_real(m))
continue;
if (m->size() == 2) {
bf.set_mon(m);
bf.push_back(factor(m->vars()[0], factor_type::VAR));
@ -1320,9 +1322,7 @@ void core::update_to_refine_of_var(lpvar j) {
}
bool core::var_is_big(lpvar j) const {
if (var_is_int(j))
return false;
return val(j).is_big();
return !var_is_int(j) && val(j).is_big();
}
bool core::has_big_num(const monic& m) const {
@ -1334,6 +1334,24 @@ bool core::has_big_num(const monic& m) const {
return false;
}
bool core::has_real(const factorization& f) const {
for (const factor& fc: f) {
lpvar j = var(fc);
if (!var_is_int(j))
return true;
}
return false;
}
bool core::has_real(const monic& m) const {
for (lpvar j : m.vars())
if (!var_is_int(j))
return true;
return false;
}
bool core::patch_blocker(lpvar u, const monic& m) const {
SASSERT(m_to_refine.contains(m.var()));
if (var_is_used_in_a_correct_monic(u)) {