v2.0.0-beta.6
Pre-releaseExtending many of the previous clean-up and refactorings to remaining parts of the library. The refactoring also includes some clean up of the random access version of the product construction algorithm introduced in v2.0-beta.3.
New Features
-
bdd_and(...)
andbdd_or(...)
These BDD builder functions now support negated variables. This can either be parsed as pairs with a negation flag, i.e.{x, true}
, or by parsing the negated label, i.e.-x
. -
bdd_satmin
,bdd_satmax
,zdd_minelem
, andzdd_maxelem
Added overload with output iterators. -
bdd_const(...)
andbdd_isconst(f)
Added as aliases forbdd_terminal(...)
andbdd_isterminal(f)
, respectively. -
bdd_topvar(f)
andzdd_topvar(A)
Added functions to get root variable. Until the addition of a non-identity variable ordering, this is equivalent tobdd_minvar(...)
andzdd_minvar(...)
-
bdd_restrict(f, ...)
,zdd_onset(A, ...)
, andzdd_offset(A, ...)
Added overload with a single variable. For ZDDs, the default variable iszdd_topvar(A)
. For BDDs,bdd_low(f)
andbdd_high(f)
sets the top variable to the desired value. -
bdd_iscube(f)
andbdd_cube(...)
, andzdd_ispoint(A)
andzdd_point(...)
The builder functions are aliases forbdd_and
andzdd_vars
. The predicates are new and run in constant-time. -
bdd_isvar(f)
,bdd_isithvar(f)
, andbdd_isnithvar(f)
Predicates for whether a BDD is a single variable. These are resolved in constant-time. -
<adiar/version.h>
Header file containing compile-time and inlinable integer/string variables with the current version of Adiar. -
Extended statistics with information from Nested Sweeping framework and Quantification algorithm
Optimisations
-
zdd_minelem
andzdd_maxelem
Reuses the optimisation introduced forbdd_satmin
andbdd_satmax
(in v2.0-beta.5) -
bdd_equal(f, g)
andzdd_equal(A, B)
Added constant time fail-fast if the width of the two BDDs do not match. -
Decreased
bdd::max_label
andzdd::max_label
by two to then doublebdd::max_id
andzdd::max_id
This way, we again support BDDs and ZDDs of up to 12 TiB.
Bug Fixes
- Fixed
internal::levelized_file<...>::copy()
does not copy over the constant-space meta information.
Breaking Changes
-
bdd_satmin
andbdd_satmax
Similar to other BDD packages, these operations now only report the labels of the nodes visited on the path through the BDD. That is, the output is now independent of the global variable domain and the BDD's levels.Furthermore, the consumer function now takes the label and its value as a single pair rather than two values.
-
bdd_varprofile(...)
andzdd_varprofile(...)
These have been renamed tobdd_support(...)
andzdd_support(...)
. This improves its discoverability and better reflects its content.
Contributors
- Steffan Sølvsten ( @SSoelvsten )