Add bdd_replace
for monotonic renamings
#498
Labels
📁 bdd
Binary Decision Diagrams
✨ feature
New operation or other feature
🎓 student programmer
Work, work...
Milestone
As an initial step from the nested sweeping in v2.0 for the multi-variable quantification and the relational product in v2.1, we should address the basics of relabelling (assuming the relabelling function is monotonic).
enum class
replace_type
: We need the user to differentiate between the following classes of renamings (enum values):ax + b
where a is a fraction (whereax
is still an integer) and b is an integer.x+b
where b is an integer.Multi-call Mapping (
bdd
): functions with the following interfaceptr
,node
andlevel_info
.Multi-call Mapping (
__bdd
): functions with the following interfacereduce
to take a (monotonic) variable renaming.Single-call Mapping (
bdd
/__bdd
): functions with the following interface:reduce
algorithm. To this end, thebdd
is initially transposed.Affine Renaming (
bdd
): In this case, the relabelling can (similar to negation) be postponed until it is read later.double
) and affine_add (int
).ptr
,node
andlevel_info
.node_stream
class.Shift Renaming (
bdd
): In this case, the relabelling can also be postponed. One can do so much cheaper than the affine renaming (in terms of CPU instructions). The approach is the same as the one above.The text was updated successfully, but these errors were encountered: