Module aiger_dfa.test_aig2dfa

Expand source code
from dfa import DFA, dict2dfa

from aiger_dfa import dfa2aig, aig2dfa


def test_dfa2aig():
    dfa1 = DFA(
        start=0,
        inputs={0, 1},
        label=lambda s: (s % 4) == 3,
        transition=lambda s, c: (s + c) % 4,
    )
    circ, relabels, _ = dfa2aig(dfa1)
    dfa2 = aig2dfa(circ, relabels)
    for i in range(5):
        word = (0,)*i
        assert dfa1.label(word) == dfa2.label(word)

        word = (1,)*i
        assert dfa1.label(word) == dfa2.label(word)


def test_dfa2aig_smoke():
    dfa1 = dict2dfa({
        'foo': (False, {'a': 'foo', 'b': 'bar'}),
        'bar': (True, {'a': 'foo', 'b': 'foo'})
    }, 'foo')
    circ1, start, _ = dfa2aig(dfa1)
    dfa2 = aig2dfa(circ1, start)

    test = ('a', 'b', 'a', 'a', 'b')
    assert dfa1.label(test) == dfa2.label(test)

Functions

def test_dfa2aig()
Expand source code
def test_dfa2aig():
    dfa1 = DFA(
        start=0,
        inputs={0, 1},
        label=lambda s: (s % 4) == 3,
        transition=lambda s, c: (s + c) % 4,
    )
    circ, relabels, _ = dfa2aig(dfa1)
    dfa2 = aig2dfa(circ, relabels)
    for i in range(5):
        word = (0,)*i
        assert dfa1.label(word) == dfa2.label(word)

        word = (1,)*i
        assert dfa1.label(word) == dfa2.label(word)
def test_dfa2aig_smoke()
Expand source code
def test_dfa2aig_smoke():
    dfa1 = dict2dfa({
        'foo': (False, {'a': 'foo', 'b': 'bar'}),
        'bar': (True, {'a': 'foo', 'b': 'foo'})
    }, 'foo')
    circ1, start, _ = dfa2aig(dfa1)
    dfa2 = aig2dfa(circ1, start)

    test = ('a', 'b', 'a', 'a', 'b')
    assert dfa1.label(test) == dfa2.label(test)