Skip to main content

Library for moving between sequential circuits AIGs and DFAs.

Project description

py-aiger-dfa

Python library for converting between AIG circuits and DFAs.

Build Status Docs codecov PyPI version License: MIT

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

py_aiger_dfa-0.4.4.tar.gz (6.5 kB view details)

Uploaded Source

Built Distribution

py_aiger_dfa-0.4.4-py3-none-any.whl (8.0 kB view details)

Uploaded Python 3

File details

Details for the file py_aiger_dfa-0.4.4.tar.gz.

File metadata

  • Download URL: py_aiger_dfa-0.4.4.tar.gz
  • Upload date:
  • Size: 6.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.2 CPython/3.11.8 Linux/6.6.31

File hashes

Hashes for py_aiger_dfa-0.4.4.tar.gz
Algorithm Hash digest
SHA256 b83f42ccad739c75129b34951f3031de681a3e224291566af06c16c92ee378ca
MD5 e902a5eca6c132a3694a28d9a0add53b
BLAKE2b-256 298d8aea163ac11cd2961938392cd37135a9dc1a9a89b5e17adaa4618545743e

See more details on using hashes here.

File details

Details for the file py_aiger_dfa-0.4.4-py3-none-any.whl.

File metadata

  • Download URL: py_aiger_dfa-0.4.4-py3-none-any.whl
  • Upload date:
  • Size: 8.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.2 CPython/3.11.8 Linux/6.6.31

File hashes

Hashes for py_aiger_dfa-0.4.4-py3-none-any.whl
Algorithm Hash digest
SHA256 0020ef5562592337ef8ab5a6070b5ef66b63391fdac812c49c20f90014578264
MD5 389e8821641e01617438cafad862170b
BLAKE2b-256 0b92b16e854fdfee173477d55ad350343a4c86bd1ac3fd9717097e6fe80cfdb5

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page