New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Error with bdd.dump #10
Comments
Thanks, good catch! Tested in 864be6a and corrected in d25596f. This error was caused due to propagating This change is motivated by the API that CUDD exposes, thus Currently, the API of For example, For small to medium BDDs, unifying things is relatively straightforward, because the details don't matter much. However, for large BDDs details matter, and serialization and loading has to happen on-the-fly, not in memory. In other words, |
The infrequent use of the method Suppose It is possible to write an enumerative algorithm that uses BDDs as data structures, but there is little to be gained, compared to the same enumerative algorithm using a, say, graph data structure enumerated in memory. Usually, BDDs are used in symbolic algorithms. A symbolic algorithm manipulates sets, instead of individual assignments. So, we never really have to evaluate the function At this point, one may remark that all this sounds good, but at the end of the day, we want to use the result that the algorithm produced as a BDD. This result can have 2 forms:
The implicit representation is a BDD The explicit representation is a collection of BDDs, one for each output variable. This does distinguish between inputs and outputs. In this case, we would have An example of a symbolic algorithm that solves games to produce programs (as BDDs) from logical formulae is |
Thank you for the detailed explanation. In addition to squashing the bug and answering my question, you also pointed me toward the In my project I'm modeling a firewall rule set with a BDD to perform rule analysis. In this case, after the BDD representation has been constructed its natural to want to construct a packet (i.e. assign a value to all applicable variables) and then see what the function evaluates to. This wasn't my motivation for working with BDDs but it has been good check to make sure my BDD implementation was working as expected. Since the I can confirm that dump is now working as expected. Thanks! |
Thanks for the feedback. Please note that
|
First, thank you for the excellent library.
I installed
dd[dot]
and I pasted in the example from https://github.com/johnyf/dd/blob/master/doc.md#plotting to try to get a pdf of my bdd. However, I get an error whenever I calldump
for either a pdf or a pickle. I'm using version0.3.0
but haven't tried any earlier versions.Any thoughts on this?
One additional question out of curiosity. I noticed in the docs you say "Some less frequently used BDD methods are...evaluate...". I was wondering why
evaluate
isn't used very often. Since BDDs are basically binary functions, wouldn't people want to evaluate them? I first noticed this in the pyeda library that is missing this feature completely.The text was updated successfully, but these errors were encountered: