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': .. , # Mapping from input alphabet -> py-aiger input.
'outputs': .. , # Mapping from py-aiger output -> output alphabet.
'states': .. , # Mapping from state space -> py-aiger latches.
}
Finally, valid
is another aiger circuit which tests if all inputs
are 1-hot encoded.
AIG to DFA
We also support converting a sequential circuit (AIG) to a Moore
Machine (DFA) using
aig2dfa
. Using the same example:
from aiger_dfa import aig2dfa
my_dfa2 = aig2dfa(my_aig, relabels=relabels)
Note that the output of a sequential circuit (AIG) is dependent on the state AND the action (a Mealy Machine).
We use the standard Mealy ↦ Moore reduction where one introduces a
1-step delay on the output. The default initial output is None
, but
can be set using the initial_label
argument.
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.4.3-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 20bb3019ce8fd6324a1db90e52b9df286e146de471dfb2798659b5a56c948ad6 |
|
MD5 | bfb56770263d23c00184bd4a0a02798d |
|
BLAKE2b-256 | ffacdfbc80d5e0c8bef5e2bb1610147d134d067df3cc2006f29b51f7fc71f57f |