3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-04-23 17:15:31 +00:00

working on viable explanations

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
Nikolaj Bjorner 2024-01-02 16:20:13 -08:00
parent b706434282
commit 21236dc80a
5 changed files with 53 additions and 23 deletions

View file

@ -1860,14 +1860,11 @@ namespace dd {
return (*this) * rational::power_of_two(n);
}
bool pdd::has_unit(pdd& x, pdd& rest) const {
if (is_val())
return false;
bool pdd::has_unit(pdd& x) const {
pdd r = *this;
while (!r.is_val()) {
if (r.hi().is_one()) {
x = m->mk_var(r.var());
rest = *this - x;
return true;
}
r = r.lo();

View file

@ -441,7 +441,7 @@ namespace dd {
bool is_unary() const { return !is_val() && lo().is_zero() && hi().is_val(); }
bool is_offset() const { return !is_val() && lo().is_val() && hi().is_one(); }
bool is_binary() const { return m->is_binary(root); }
bool has_unit(pdd& x, pdd& rest) const;
bool has_unit(pdd& x) const;
bool is_monomial() const { return m->is_monomial(root); }
bool is_univariate() const { return m->is_univariate(root); }
bool is_univariate_in(unsigned v) const { return m->is_univariate_in(root, v); }