{ "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-past-ltl\n\nLibrary for generating (p)ast (t)ense (l)inear (t)emporal (l)ogic\nmonitors as aiger circuits. Builds on the [py-aiger](https://github.com/mvcisback/py-aiger) project.\n\n[![Build Status](https://cloud.drone.io/api/badges/mvcisback/py-aiger-past-ltl/status.svg)](https://cloud.drone.io/mvcisback/py-aiger-past-ltl)\n[![codecov](https://codecov.io/gh/mvcisback/py-aiger-past-ltl/branch/master/graph/badge.svg)](https://codecov.io/gh/mvcisback/py-aiger-past-ltl)\n[![PyPI version](https://badge.fury.io/py/py-aiger-ptltl.svg)](https://badge.fury.io/py/py-aiger-ptltl)\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\n\n\n\n# Installation\n\nIf you just need to use `aiger_ptltl`, you can just run:\n\n`$ pip install py-aiger-ptltl`\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 primary entry point for using `aiger_ptltl` is the `PTLTLExpr`\nclass which is a simple extension of `aiger.BoolExpr` to support the\ntemporal operators, historically, past (once), (variant) yesterday,\nand since.\n\n```python\nimport aiger_ptltl as ptltl\n\n# Atomic Propositions\nx = ptltl.atom('x')\ny = ptltl.atom('y')\nz = ptltl.atom('z')\n\n# Propositional logic\nexpr1 = ~x\nexpr2 = x & (y | z)\nexpr3 = (x & y) | ~z\nexpr4 = ~(x & y & z)\n\n# Temporal Logic\nexpr5 = x.historically() # (H x) \u2261 x has held for all previous cycles (inclusive).\nexpr6 = x.once() # (P x) \u2261 x once held in a past cycle (inclusive).\nexpr7 = x.vyest() # (Z x) \u2261 x held in the previous cycle (true at time = 0).\nexpr8 = x.since(y) # [x S y] \u2261 x has held since the cycle after y last held.\n\n# Composition\nexpr9 = expr7.since(expr8.vyest().vyest())\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-past-ltl", "keywords": "", "license": "MIT", "maintainer": "Marcell Vazquez-Chanlatte", "maintainer_email": "mvc@linux.com", "name": "py-aiger-ptltl", "package_url": "https://pypi.org/project/py-aiger-ptltl/", "platform": "", "project_url": "https://pypi.org/project/py-aiger-ptltl/", "project_urls": { "Homepage": "https://github.com/mvcisback/py-aiger-past-ltl", "Repository": "https://github.com/mvcisback/py-aiger-past-ltl" }, "release_url": "https://pypi.org/project/py-aiger-ptltl/1.0.0/", "requires_dist": [ "py-aiger (>=3.3.6,<4.0.0)" ], "requires_python": ">=3.6,<4.0", "summary": "Library for generating (p)ast (t)ense (l)inear (t)emporal (l)ogic monitors as aiger circuits.", "version": "1.0.0" }, "last_serial": 6005502, "releases": { "0.0.0": [ { "comment_text": "", "digests": { "md5": "dcd2ef07ecd7ba40fefc8247fcfd8243", "sha256": "97eafe14e001f02109a95b8b4b87a3600b12384ce15bcae14f942154cbb7fef1" }, "downloads": -1, "filename": "py-aiger-ptltl-0.0.0.tar.gz", "has_sig": false, "md5_digest": "dcd2ef07ecd7ba40fefc8247fcfd8243", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3144, "upload_time": "2018-10-24T20:17:31", "url": "https://files.pythonhosted.org/packages/34/4b/9a0d5175532f605bbeea2991c9a4b817884f43c14ae41a28cb73bd410b42/py-aiger-ptltl-0.0.0.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "101fce486159a5f50ba227e85f7797d6", "sha256": "be9f0e7ebba3b7504642382686fa13ea7c52ebff26064de6aced21478788f2fa" }, "downloads": -1, "filename": "py_aiger_ptltl-0.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "101fce486159a5f50ba227e85f7797d6", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6,<4.0", "size": 5041, "upload_time": "2019-07-24T19:11:04", "url": "https://files.pythonhosted.org/packages/3e/70/aa3df8627039e56bc29302aca07966538f907de5136ef83c9bb94c0a600b/py_aiger_ptltl-0.1.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "183ce18fd35daf80efc4f3dbce146204", "sha256": "ea95b9096f705b91cb510a4fb44317265b7b81d87db800169b8bfcaf3525a989" }, "downloads": -1, "filename": "py-aiger-ptltl-0.1.1.tar.gz", "has_sig": false, "md5_digest": "183ce18fd35daf80efc4f3dbce146204", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6,<4.0", "size": 4770, "upload_time": "2019-07-24T19:11:02", "url": "https://files.pythonhosted.org/packages/48/6d/664846b9b01cd3777624d96c2ed8d0c7ea55cc5d8147deae169faa62ddcc/py-aiger-ptltl-0.1.1.tar.gz" } ], "1.0.0": [ { "comment_text": "", "digests": { "md5": "d69b9bd0565fbbe0f05c6ce1b81a6a8a", "sha256": "2c9ef6483c301c5284b45db8077cef4e46ea46f5ef03be38bd82b90f7d0a233d" }, "downloads": -1, "filename": "py_aiger_ptltl-1.0.0-py3-none-any.whl", "has_sig": false, "md5_digest": "d69b9bd0565fbbe0f05c6ce1b81a6a8a", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6,<4.0", "size": 5046, "upload_time": "2019-10-21T05:06:42", "url": "https://files.pythonhosted.org/packages/da/b9/9a969d47e3e7ecde62947c3bda0c7c95ea5d0f91d7d607fa790f28c344f2/py_aiger_ptltl-1.0.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "59f2bb10daba5dfb323ab509edb20fb1", "sha256": "2464506f78fac96452aee1f8bbd66ff19e51428d591db4e354dee53c523a1dd4" }, "downloads": -1, "filename": "py-aiger-ptltl-1.0.0.tar.gz", "has_sig": false, "md5_digest": "59f2bb10daba5dfb323ab509edb20fb1", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6,<4.0", "size": 4748, "upload_time": "2019-10-21T05:06:41", "url": "https://files.pythonhosted.org/packages/6f/0d/cd45886f342625eaa5848c67d97552851deb606a8758b381aeb5341328de/py-aiger-ptltl-1.0.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "d69b9bd0565fbbe0f05c6ce1b81a6a8a", "sha256": "2c9ef6483c301c5284b45db8077cef4e46ea46f5ef03be38bd82b90f7d0a233d" }, "downloads": -1, "filename": "py_aiger_ptltl-1.0.0-py3-none-any.whl", "has_sig": false, "md5_digest": "d69b9bd0565fbbe0f05c6ce1b81a6a8a", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6,<4.0", "size": 5046, "upload_time": "2019-10-21T05:06:42", "url": "https://files.pythonhosted.org/packages/da/b9/9a969d47e3e7ecde62947c3bda0c7c95ea5d0f91d7d607fa790f28c344f2/py_aiger_ptltl-1.0.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "59f2bb10daba5dfb323ab509edb20fb1", "sha256": "2464506f78fac96452aee1f8bbd66ff19e51428d591db4e354dee53c523a1dd4" }, "downloads": -1, "filename": "py-aiger-ptltl-1.0.0.tar.gz", "has_sig": false, "md5_digest": "59f2bb10daba5dfb323ab509edb20fb1", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6,<4.0", "size": 4748, "upload_time": "2019-10-21T05:06:41", "url": "https://files.pythonhosted.org/packages/6f/0d/cd45886f342625eaa5848c67d97552851deb606a8758b381aeb5341328de/py-aiger-ptltl-1.0.0.tar.gz" } ] }