cjdrake / pyeda

Python EDA
BSD 2-Clause "Simplified" License
301 stars 55 forks source link

Conjunction of disjoint BDDs #176

Open egolf-cs opened 1 year ago

egolf-cs commented 1 year ago

This is a feature request.

If I have BDD A over variables v1..v50 and BDD B over variables v51..v100, then I believe A & B reduces to a sort of concatenation: all edges from A pointing to 1 should now point to v51. I don't think this is how it is implemented as it takes a surprisingly long time in some cases to compute A & B with this property. I apologize in advance if I'm not taking into account some nuance of the data structure that's shared between BDDs.

Is it challenging to add this optimization?