adiar icon indicating copy to clipboard operation
adiar copied to clipboard

Add `bdd_project`

Open SSoelvsten opened this issue 1 year ago • 0 comments

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 the zdd_project function.

  • [ ] Add bdd_project(const bdd&, const predicate<bdd::label_type>&)
  • [ ] Add bdd_project(const bdd&, const generator&)
  • [ ] Add bdd_project(const bdd&, ForwardIt, ForwardIt)

Doing so only requires inheriting from the bdd_quantify_policy and flip the quantify_onset variable. Of course, relevant unit tests should also be added.

Additional context This feature exists in Sylvan and MONA.

SSoelvsten avatar Oct 28 '23 12:10 SSoelvsten