Skip to content

Commit 7f7d825

Browse files
committed
DRAFT: ENH: add module dd.cudd_add
1 parent 09db14f commit 7f7d825

File tree

8 files changed

+3427
-6
lines changed

8 files changed

+3427
-6
lines changed

.github/workflows/main.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ jobs:
3535
DD_FETCH=1 \
3636
DD_CUDD=1 \
3737
DD_CUDD_ZDD=1 \
38+
DD_CUDD_ADD=1 \
3839
DD_SYLVAN=1
3940
pip install . \
4041
--verbose \

Makefile

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ wheel_deps:
6060
wheel: clean wheel_deps
6161
-rm dist/*.whl
6262
-rm wheelhouse/*.whl
63-
export DD_CUDD=1 DD_CUDD_ZDD=1; \
63+
export DD_CUDD=1 DD_CUDD_ZDD=1 DD_CUDD_ADD=1; \
6464
pip wheel . \
6565
-vvv \
6666
--wheel-dir dist \
@@ -77,15 +77,15 @@ install: wheel_deps
7777
pip install . -vvv --use-pep517 --no-build-isolation
7878

7979
reinstall: uninstall wheel_deps
80-
export DD_CUDD=1 DD_CUDD_ZDD DD_SYLVAN; \
80+
export DD_CUDD=1 DD_CUDD_ZDD DD_CUDD_ADD=1 DD_SYLVAN; \
8181
pip install . -vvv --use-pep517 --no-build-isolation
8282

8383
reinstall_buddy: uninstall wheel_deps
8484
export DD_BUDDY=1; \
8585
pip install . -vvv --use-pep517 --no-build-isolation
8686

8787
reinstall_cudd: uninstall wheel_deps
88-
export DD_CUDD=1 DD_CUDD_ZDD=1; \
88+
export DD_CUDD=1 DD_CUDD_ZDD=1 DD_CUDD_ADD=1; \
8989
pip install . -vvv --use-pep517 --no-build-isolation
9090

9191
reinstall_sylvan: uninstall wheel_deps
@@ -167,6 +167,7 @@ clean:
167167
-rm dd/buddy.c
168168
-rm dd/cudd.c
169169
-rm dd/cudd_zdd.c
170+
-rm dd/cudd_add.c
170171
-rm dd/sylvan.c
171172
-rm *.pyc */*.pyc
172173
-rm -rf __pycache__ */__pycache__

dd/_abc.py

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -127,10 +127,43 @@ def _literals_of_recurse(
127127
*TERNARY_OPERATOR_SYMBOLS}
128128
if len(BDD_OPERATOR_SYMBOLS) != 3 + 23 + 1:
129129
raise AssertionError(BDD_OPERATOR_SYMBOLS)
130+
_AgdUnaryOperatorSymbol: _ty.TypeAlias = (
131+
_UnaryOperatorSymbol |
132+
_ty.Literal['log'])
133+
ADD_UNARY_OPERATOR_SYMBOLS: _ty.Final = _literals_of(
134+
_AgdUnaryOperatorSymbol)
135+
if len(ADD_UNARY_OPERATOR_SYMBOLS) != 3 + 1:
136+
raise AssertionError(ADD_UNARY_OPERATOR_SYMBOLS)
137+
_AgdBinaryOperatorSymbol: _ty.TypeAlias = (
138+
_BinaryOperatorSymbol |
139+
_ty.Literal[
140+
'+',
141+
'*',
142+
'/',
143+
'nand'])
144+
ADD_BINARY_OPERATOR_SYMBOLS: _ty.Final = _literals_of(
145+
_AgdBinaryOperatorSymbol)
146+
if len(ADD_BINARY_OPERATOR_SYMBOLS) != 23 + 4:
147+
# `'-' in BINARY_OPERATOR_SYMBOLS`
148+
raise AssertionError(ADD_BINARY_OPERATOR_SYMBOLS)
149+
ADD_TERNARY_OPERATOR_SYMBOLS: _ty.Final = {
150+
*TERNARY_OPERATOR_SYMBOLS}
151+
if len(ADD_TERNARY_OPERATOR_SYMBOLS) != 1:
152+
raise AssertionError(ADD_TERNARY_OPERATOR_SYMBOLS)
153+
ADD_OPERATOR_SYMBOLS: _ty.Final = {
154+
*ADD_UNARY_OPERATOR_SYMBOLS,
155+
*ADD_BINARY_OPERATOR_SYMBOLS,
156+
*ADD_TERNARY_OPERATOR_SYMBOLS}
157+
if len(ADD_OPERATOR_SYMBOLS) != 4 + 27 + 1:
158+
raise AssertionError(ADD_OPERATOR_SYMBOLS)
130159
OperatorSymbol: _ty.TypeAlias = (
131160
_UnaryOperatorSymbol |
132161
_BinaryOperatorSymbol |
133162
_TernaryOperatorSymbol)
163+
AgdOperatorSymbol: _ty.TypeAlias = (
164+
_AgdUnaryOperatorSymbol |
165+
_AgdBinaryOperatorSymbol |
166+
_TernaryOperatorSymbol)
134167
ImageFileType: _ty.TypeAlias = _ty.Literal[
135168
'pdf',
136169
'png',

dd/_utils.py

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -267,7 +267,12 @@ def total_memory(
267267
unary=dd._abc.UNARY_OPERATOR_SYMBOLS,
268268
binary=dd._abc.BINARY_OPERATOR_SYMBOLS,
269269
ternary=dd._abc.TERNARY_OPERATOR_SYMBOLS,
270-
all=dd._abc.BDD_OPERATOR_SYMBOLS))
270+
all=dd._abc.BDD_OPERATOR_SYMBOLS),
271+
agd=dict(
272+
unary=dd._abc.ADD_UNARY_OPERATOR_SYMBOLS,
273+
binary=dd._abc.ADD_BINARY_OPERATOR_SYMBOLS,
274+
ternary=dd._abc.ADD_TERNARY_OPERATOR_SYMBOLS,
275+
all=dd._abc.ADD_OPERATOR_SYMBOLS))
271276

272277

273278
def assert_operator_arity(
@@ -281,7 +286,8 @@ def assert_operator_arity(
281286
None,
282287
diagram_type:
283288
_ty.Literal[
284-
'bdd']
289+
'bdd',
290+
'agd']
285291
) -> None:
286292
"""Raise `ValueError` if unexpected values.
287293

0 commit comments

Comments
 (0)