3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-04-28 11:25:51 +00:00
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
Nikolaj Bjorner 2021-06-20 12:38:20 -07:00
parent 4fad0385de
commit 19099244c4
5 changed files with 49 additions and 14 deletions

View file

@ -927,7 +927,7 @@ namespace dd {
SASSERT(a.size() == b.size());
bdd lt = mk_false();
bdd eq = mk_true();
for (unsigned i = a.size(); i-- > 0; ) {
for (unsigned i = a.size(); i-- > 0 && !eq.is_false(); ) {
lt |= eq && (!a[i] && b[i]);
eq &= !(a[i] ^ b[i]);
}
@ -1179,4 +1179,19 @@ namespace dd {
m_bits[size() - 1] = m->mk_false();
}
bdd bddv::all0() const {
bdd r = m->mk_true();
for (unsigned i = size(); i-- > 0; )
r &= !m_bits[i];
return r;
}
bdd bddv::all1() const {
bdd r = m->mk_true();
for (unsigned i = size(); i-- > 0; )
r &= m_bits[i];
return r;
}
}

View file

@ -338,6 +338,9 @@ namespace dd {
bdd slt(bddv const& other) const { return m->mk_slt(*this, other); }
bdd sgt(bddv const& other) const { return m->mk_sgt(*this, other); }
bdd all0() const;
bdd all1() const;
bdd operator==(bddv const& other) const { return m->mk_eq(*this, other); }
bdd operator==(rational const& other) const { return m->mk_eq(*this, other); }
bdd operator!=(bddv const& other) const { return !m->mk_eq(*this, other); }