Library for moving between sequential circuits AIGs and DFAs.
Project description
py-aiger-dfa
Python library for converting between AIG circuits and DFAs.
Table of Contents
Installation
If you just need to use aiger_dfa
, you can just run:
$ pip install py-aiger-dfa
For developers, note that this project uses the poetry python package/dependency management tool. Please familarize yourself with it and then run:
$ poetry install
Usage
The main entry points for using this library are the dfa2aig
and
aig2dfa
functions. DFAs are represented using the
dfa package. Familiarity with the
dfa
, py-aiger
, and py-aiger-bv
packages is assumed.
DFA to AIG
An example of going from a DFA
to an AIG
object
is shown below.
from dfa import DFA
from aiger_dfa import dfa2aig
my_dfa = DFA(
start=0,
inputs={0, 1},
label=lambda s: (s % 4) == 3,
transition=lambda s, c: (s + c) % 4,
)
my_aig, relabels, valid = dfa2aig(my_dfa)
Now circ
is an AIG
and relabels
is a mapping from the inputs,
states, and outputs of my_dfa
to their 1-hot encoded
counterparts in my_aig
.
relabels
has the following schema:
relabels = {
'inputs': .. , # Bidict from 1-hot encoded tuple to dfa input.
'outputs': .. , # Bidict from 1-hot encoded tuple to dfa output.
'states': .. , # Bidict from 1-hot encoded tuple to dfa state.
}
where bidict
refers to https://bidict.readthedocs.io/en/master/.
Finally, valid
is another aiger circuit which tests if all inputs
are 1-hot encoded.
AIG to DFA
The inverse of dfa2aig
is aig2dfa
. Using the same example.
from aiger_dfa import aig2dfa
my_dfa2 = aig2dfa(my_aig, relabels=relabels)
assert my_dfa2.label((1,0,0,1,1,0)) == my_dfa.label((1,0,0,1,1,0))
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for py_aiger_dfa-0.1.3-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 639b117db3eaa865018cdb6665b2768a9427dad19b67f64e5d1d8ebd2bd29271 |
|
MD5 | 9b62429af7239728145ca3481dccd89e |
|
BLAKE2b-256 | 43254448699eab91272b8a569d7f9a7cd045bd6d6f835ce2d0de6ef8d663ba84 |