3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-04-24 09:35:32 +00:00
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
Nikolaj Bjorner 2018-09-20 20:41:00 -07:00
commit 618e1bee5b
3 changed files with 11 additions and 3 deletions

View file

@ -262,25 +262,27 @@ expr_ref_vector solver::get_non_units(ast_manager& m) {
get_assertions(fmls);
family_id bfid = m.get_basic_family_id();
expr_mark marked;
unsigned sz0 = fmls.size();
for (unsigned i = 0; i < fmls.size(); ++i) {
expr* f = fmls.get(i);
if (marked.is_marked(f)) continue;
marked.mark(f);
if (!is_app(f)) {
result.push_back(f);
if (i >= sz0) result.push_back(f);
continue;
}
app* _f = to_app(f);
if (_f->get_family_id() == bfid) {
// basic objects are true/false/and/or/not/=/distinct and proof objects (that are not Boolean)
if (_f->get_num_args() > 0 && m.is_bool(_f->get_arg(0))) {
fmls.append(_f->get_num_args(), _f->get_args());
}
else if (m.is_eq(f) || m.is_distinct(f)) {
result.push_back(f);
if (i >= sz0) result.push_back(f);
}
}
else {
result.push_back(f);
if (i >= sz0) result.push_back(f);
}
}
return result;