Интерфейс для пакета DDDMP доступен с привязками Cython к CUDD пакета Python dd
. Пример, который создает BDD логической функции, сохраняет ее в файл DDDMP и затем загружает его из этого файла, следующий:
from dd import cudd as _bdd
bdd = _bdd.BDD()
bdd.declare('x', 'y')
# The BDD node for the conjunction of variables x and y
u = bdd.add_expr('x /\ y')
# save to a DDDMP file (the file extension matters,
# for example a PDF extension would result in plotting
# a diagram using GraphViz)
bdd.dump('storage.dddmp', [u])
# load the BDD from the DDDMP file
u_ = bdd.load('storage.dddmp')
assert u == u_, (u, u_)
Исходный код модуля Cython dd/cudd.pyx
включает пример использования функций Dddmp_cuddBddStore
и Dddmp_cuddBddLoad
https://github.com/tulip-control/dd/blob/b625dd46120e2e1f5a12190332e6191d07681ee8/dd/cudd.pyx#L1157 -L1222
Установка dd
с модулем dd.cudd
описан здесь и может быть обобщен как
pip download dd --no-deps
tar -xzf dd-*.tar.gz
cd dd-*/
python setup.py install --fetch --cudd
Это загрузит и соберет CUDD, а также создаст и установит привязки Cython dd
к CUDD.