adiar
adiar copied to clipboard
An I/O-efficient implementation of (Binary) Decision Diagrams
When trying to build the *EPFL* *sin* circuit optimised for depth with *ZDD*s, the *auto*, *pq*, and *ra* version crashes with a `double free or corruption (!prev)` error. ``` Picotrav...
To allow wider and easier use of Adiar, we ought to provide bindings for the public API in other programming languages than C++. This depends on #200 . **C++ Wrappers**...
We currently provide `bdd_exists` and `bdd_forall`. But, the end-user may rather want to specify what variables should be left at the end (as a predicate, generator, or iterator) similar to...
In the same vein as #592 and Sylvan, we should add a `zdd_exists` and `zdd_forall` implementation for usage of ZDDs with BDD semantics. Here, a quantified level should leave *don't...
Since we already provide ZDD operations with BDD semantics (i.e. `zdd_top()`, `zdd_bot()`, `zdd_ithvar(x)`, and `zdd_nithvar(x)`), we may as well also provide the if-then-else operation. Currently, the end-user would have to...
To use BDDs, resp. ZDDs, in any hash-related context (e.g. `std::unordered_map` and `std::unordered_set`), one needs to derive a hash value for each BDD, resp. ZDD, care about the hash value...
As a follow-up on #532 (similar to the aliases in #452), we should provide the following overloads - [x] `bdd_restrict(bdd f, bdd::label_type x, bool v)` ( done for #557 )...
In #546 , we cleaned up the interface to use an `exec_policy` object to be passed around, instead of reading (thread unsafely) from a set of global enum values. Based...
The Code Coverage in #573 prove there are missing unit tests for `bdd_ite`. - [ ] Forwarding of additional requests to `ite_pq_2` - [ ] Forwarding of additional requests to...
For code clarity (and performance?), we should ditch the `make_generator` in favour of making the streams into generators directly. **Tasks (Internal/IO)** - [ ] Add `operator()` to `internal::file_stream` which wraps...