Follow-up on #147 , #419 , and #225 :
The Restrict and Eval function currently takes a shared_file<assignment_t> as an input which is quite clunky.
⚠️ These will break when we introduce variable reordering (?).
bdd_restrict
bdd_eval
Notes
We may also at this point want to reconsider some of the design choices on assignment_func in #419 . The generator functions should definitely return true or false rather having a third "incorrect" value.
Follow-up on #147 , #419 , and #225 :
The Restrict and Eval function currently takes a
shared_file<assignment_t>as an input which is quite clunky.bdd_restrict
bdd_restrict(bdd f, function<optional<bool>(bdd::label_type)> af)bdd_restrict(bdd f, generator<int> as)bdd_restrict(bdd f, generator<std::pair<bdd::label_type, bool>> as)template<typename IT> bdd_restrict(bdd f, IT begin, IT end)bdd_eval
bdd_eval(bdd f, std::function<std::pair<label_t, bool>()> gen)template<typename IT> bdd_eval(bdd f, IT begin, IT end)Notes
We may also at this point want to reconsider some of the design choices on
assignment_funcin #419 . The generator functions should definitely returntrueorfalserather having a third "incorrect" value.