{ "info": { "author": "Marcell Vazquez-Chanlatte", "author_email": "mvc@linux.com", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7" ], "description": "# py-aiger-dfa\nPython library for converting between AIG circuits and DFAs.\n\n[![Build Status](https://cloud.drone.io/api/badges/mvcisback/py-aiger-dfa/status.svg)](https://cloud.drone.io/mvcisback/py-aiger-dfa)\n[![codecov](https://codecov.io/gh/mvcisback/py-aiger-dfa/branch/master/graph/badge.svg)](https://codecov.io/gh/mvcisback/py-aiger-dfa)\n[![PyPI version](https://badge.fury.io/py/py-aiger-dfa.svg)](https://badge.fury.io/py/py-aiger-dfa)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\n\n**Table of Contents**\n\n- [Installation](#installation)\n- [Usage](#usage)\n - [DFA to AIG](#dfa-to-aig)\n - [AIG to DFA](#aig-to-dfa)\n\n\n\n\n# Installation\n\nIf you just need to use `aiger_dfa`, you can just run:\n\n`$ pip install py-aiger-dfa`\n\nFor developers, note that this project uses the\n[poetry](https://poetry.eustace.io/) python package/dependency\nmanagement tool. Please familarize yourself with it and then\nrun:\n\n`$ poetry install`\n\n# Usage\n\nThe main entry points for using this library are the `dfa2aig` and\n`aig2dfa` functions. DFAs are represented using the\n[dfa](https://github.com/mvcisback/dfa) package. Familiarity with the\n`dfa`, `py-aiger`, and `py-aiger-bv` packages is assumed.\n\n\n## DFA to AIG\n\nAn example of going from a `DFA` to an `AIG` object\nis shown below.\n\n```python\nfrom dfa import DFA\nfrom aiger_dfa import dfa2aig\n\nmy_dfa = DFA(\n start=0,\n inputs={0, 1},\n label=lambda s: (s % 4) == 3,\n transition=lambda s, c: (s + c) % 4,\n)\nmy_aig, relabels = dfa2aig(my_dfa)\n```\n\nNow `circ` is an `AIG` and `relabels` is a mapping from the inputs,\nstates, and outputs of `my_dfa` to their **1-hot** encoded\ncounterparts in `my_aig`.\n\n`relabels` has the following schema:\n\n```python\nrelabels = {\n 'inputs': .. , # Bidict from 1-hot index to dfa input.\n 'outputs': .. , # Bidict from 1-hot index to dfa output.\n 'states': .. , # Bidict from 1-hot index to dfa state.\n}\n```\n\nwhere `bidict` refers to https://bidict.readthedocs.io/en/master/. \n\n## AIG to DFA\n\nThe inverse of `dfa2aig` is `aig2dfa`. Using the same example.\n\n```python\nfrom aiger_dfa import aig2dfa\n\nmy_dfa2 = aig2dfa(my_aig, relabels=relabels)\n\nassert my_dfa2.label((1,0,0,1,1,0)) == my_dfa.label((1,0,0,1,1,0))\n```\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/mvcisback/py-aiger-dfa", "keywords": "", "license": "MIT", "maintainer": "Marcell Vazquez-Chanlatte", "maintainer_email": "mvc@linux.com", "name": "py-aiger-dfa", "package_url": "https://pypi.org/project/py-aiger-dfa/", "platform": "", "project_url": "https://pypi.org/project/py-aiger-dfa/", "project_urls": { "Homepage": "https://github.com/mvcisback/py-aiger-dfa", "Repository": "https://github.com/mvcisback/py-aiger-dfa" }, "release_url": "https://pypi.org/project/py-aiger-dfa/0.1.2/", "requires_dist": [ "attrs (>=19.1,<20.0)", "bidict (>=0.18.0,<0.19.0)", "funcy (>=1.12,<2.0)", "dfa (>=0.3.2,<0.4.0)", "py-aiger-bv (>=0.5.4,<0.6.0)", "py-aiger (>=3.3,<4.0)" ], "requires_python": ">=3.6,<4.0", "summary": "Library for moving between sequential circuits AIGs and DFAs.", "version": "0.1.2" }, "last_serial": 5578883, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "310437dba37a868d29cba69981e93da4", "sha256": "5dcc880c6facf35d0be8eb8774fba8d9dac96e4eae6fcda7b61ba4cd9678b7b3" }, "downloads": -1, "filename": "py_aiger_dfa-0.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "310437dba37a868d29cba69981e93da4", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7,<4.0", "size": 4148, "upload_time": "2019-07-15T18:49:21", "url": "https://files.pythonhosted.org/packages/d4/98/96992130168bc7bc0d632fb904f3761c4dd0226e077c545e5b233e061748/py_aiger_dfa-0.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "7a28a39b2eaae9320aaabf3bf06f31e0", "sha256": "df2d494bb4e733d601c53298af6bf3e21a8bf67b42c78d96767b248afc4b4e15" }, "downloads": -1, "filename": "py-aiger-dfa-0.1.0.tar.gz", "has_sig": false, "md5_digest": "7a28a39b2eaae9320aaabf3bf06f31e0", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7,<4.0", "size": 3845, "upload_time": "2019-07-15T18:49:18", "url": "https://files.pythonhosted.org/packages/c7/47/a11ec71dde2093f13e37e43af067ddcb11dbc0bb43a29695b1e485e2747c/py-aiger-dfa-0.1.0.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "513eefbdfe58d5942635c4aa92c9be91", "sha256": "1922f079b2c83253116319e646f605a7f7227dda2bbf4a4ae42dd930373d2d5f" }, "downloads": -1, "filename": "py_aiger_dfa-0.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "513eefbdfe58d5942635c4aa92c9be91", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7,<4.0", "size": 5350, "upload_time": "2019-07-15T22:26:37", "url": "https://files.pythonhosted.org/packages/e1/b7/8d5be8410fb789fbc3063cbd122c543e843e3b281fbf067944527324c7fe/py_aiger_dfa-0.1.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5ffb864dc53bec5f5346a5544c4aced4", "sha256": "30e52dd623cb935865ad51c649fc5450467ec99d0c3b1af7deaa6175a1ca46e9" }, "downloads": -1, "filename": "py-aiger-dfa-0.1.1.tar.gz", "has_sig": false, "md5_digest": "5ffb864dc53bec5f5346a5544c4aced4", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7,<4.0", "size": 4519, "upload_time": "2019-07-15T22:26:36", "url": "https://files.pythonhosted.org/packages/0d/b8/27463c894bc9b6cb59ab3ce5cdc4cf0c8a63c9976715040444d675839334/py-aiger-dfa-0.1.1.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "a04ef3c8a8da2ae6fbb40605db34bf93", "sha256": "99505827603434d99670f45d93776c1cb8dfefa2d87d71d003d7d6d603389e3a" }, "downloads": -1, "filename": "py_aiger_dfa-0.1.2-py3-none-any.whl", "has_sig": false, "md5_digest": "a04ef3c8a8da2ae6fbb40605db34bf93", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6,<4.0", "size": 5800, "upload_time": "2019-07-24T17:57:50", "url": "https://files.pythonhosted.org/packages/8b/77/ac717940cf024e7601975a8244de8f12ee13dbb281a43fa7144a93f3bd03/py_aiger_dfa-0.1.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "811f62e22cf30c2e65659dc6ce97767d", "sha256": "f4307b3c1ee630228ef2678801fc05f71a897774e9ef93b5893b8f63b714f288" }, "downloads": -1, "filename": "py-aiger-dfa-0.1.2.tar.gz", "has_sig": false, "md5_digest": "811f62e22cf30c2e65659dc6ce97767d", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6,<4.0", "size": 4980, "upload_time": "2019-07-24T17:57:49", "url": "https://files.pythonhosted.org/packages/a1/cc/7eeed0f88484d92e0dc1bb20a46bda27cd2b1995a1ef259dcacca8a858a7/py-aiger-dfa-0.1.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "a04ef3c8a8da2ae6fbb40605db34bf93", "sha256": "99505827603434d99670f45d93776c1cb8dfefa2d87d71d003d7d6d603389e3a" }, "downloads": -1, "filename": "py_aiger_dfa-0.1.2-py3-none-any.whl", "has_sig": false, "md5_digest": "a04ef3c8a8da2ae6fbb40605db34bf93", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6,<4.0", "size": 5800, "upload_time": "2019-07-24T17:57:50", "url": "https://files.pythonhosted.org/packages/8b/77/ac717940cf024e7601975a8244de8f12ee13dbb281a43fa7144a93f3bd03/py_aiger_dfa-0.1.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "811f62e22cf30c2e65659dc6ce97767d", "sha256": "f4307b3c1ee630228ef2678801fc05f71a897774e9ef93b5893b8f63b714f288" }, "downloads": -1, "filename": "py-aiger-dfa-0.1.2.tar.gz", "has_sig": false, "md5_digest": "811f62e22cf30c2e65659dc6ce97767d", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6,<4.0", "size": 4980, "upload_time": "2019-07-24T17:57:49", "url": "https://files.pythonhosted.org/packages/a1/cc/7eeed0f88484d92e0dc1bb20a46bda27cd2b1995a1ef259dcacca8a858a7/py-aiger-dfa-0.1.2.tar.gz" } ] }