{ "info": { "author": "Marco Favorito", "author_email": "marco.favorito@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 2 - Pre-Alpha", "Intended Audience :: Developers", "License :: OSI Approved :: Apache Software License", "Natural Language :: English", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7" ], "description": "# FLLOAT\n\n\n[![](https://img.shields.io/pypi/v/flloat.svg)](https://pypi.python.org/pypi/flloat)\n[![](https://img.shields.io/travis/marcofavorito/flloat.svg)](https://travis-ci.org/marcofavorito/flloat)\n[![](https://img.shields.io/pypi/pyversions/flloat.svg)](https://pypi.python.org/pypi/flloat)\n[![](https://img.shields.io/badge/docs-mkdocs-9cf)](https://www.mkdocs.org/)\n[![](https://img.shields.io/badge/status-development-orange.svg)](https://img.shields.io/badge/status-development-orange.svg)\n[![](https://coveralls.io/repos/github/marcofavorito/flloat/badge.svg?branch=master)](https://coveralls.io/github/marcofavorito/flloat?branch=master)\n[![](https://img.shields.io/badge/flake8-checked-blueviolet)](https://img.shields.io/badge/flake8-checked-blueviolet)\n[![](https://img.shields.io/badge/mypy-checked-blue)](https://img.shields.io/badge/mypy-checked-blue)\n[![](https://img.shields.io/badge/license-Apache%202-lightgrey)](https://img.shields.io/badge/license-Apache%202-lightgrey)\n[![](https://zenodo.org/badge/DOI/10.5281/zenodo.2577006.svg)](https://doi.org/10.5281/zenodo.2577006)\n\nA Python implementation of the [FLLOAT](https://github.com/RiccardoDeMasellis/FLLOAT.git) library.\n\n\n* Free software: Apache 2.0 license\n* Documentation: [https://marcofavorito.github.io/flloat/](https://marcofavorito.github.io/flloat/)\n\n## Dependencies\n\nThe package depends on [Pythomata](https://marcofavorito.github.io/pythomata). Please follow the install instruction \nto get all the needed dependencies. \n\n## Install\n\n- from [PyPI](https://pypi.org/project/flloat/):\n```\npip install flloat\n```\n- or, from source (`master` branch):\n```\npip install git+https://github.com/marcofavorito/flloat.git\n```\n\n- or, clone the repository and install:\n```\ngit clone htts://github.com/marcofavorito/flloat.git\ncd flloat\npip install .\n```\n## How to use\n\n* Parse a LDLf formula:\n\n```python\nfrom flloat.parser.ldlf import LDLfParser\n\nparser = LDLfParser()\nformula_string = \"tt\"\nformula = parser(formula_string) # returns a LDLfFormula\n\nprint(formula) # prints \"<((true)* ; (A & B))>(tt)\"\nprint(formula.find_labels()) # prints {A, B}\n```\n\n* Evaluate it over finite traces:\n\n```python\nfrom flloat.semantics.traces import FiniteTrace\n\nt1 = FiniteTrace.from_symbol_sets([\n {},\n {\"A\"},\n {\"A\"},\n {\"A\", \"B\"},\n {}\n])\nformula.truth(t1, 0) # True\n```\n\n* Transform it into an automaton (``pythomata.DFA`` object):\n\n```python\ndfa = formula.to_automaton()\n\n# print the automaton\ndfa.to_dot(\"./automaton.DFA\")\n```\n\nNotice: `to_dot` requires [Graphviz](https://graphviz.gitlab.io/download/).\nFor info about how to use a `pythomata.DFA` please look at the [Pythomata docs](https://github.com/marcofavorito/pythomata).\n\n* The same for a LTLf formula:\n\n```python\nfrom flloat.parser.ltlf import LTLfParser\nfrom flloat.semantics.traces import FiniteTrace\n\n# parse the formula\nparser = LTLfParser()\nformula_string = \"F (A & !B)\"\nformula = parser(formula_string)\n\n# evaluate over finite traces\nt1 = FiniteTrace.from_symbol_sets([\n {},\n {\"A\"},\n {\"A\"},\n {\"A\", \"B\"}\n])\nassert formula.truth(t1, 0)\n\n# from LTLf formula to DFA\ndfa = formula.to_automaton()\nassert dfa.accepts(t1.trace)\n```\n\n## Features\n\n* Syntax, semantics and parsing support for the following formal languages:\n * Propositional Logic;\n * Linear Temporal Logic on Finite Traces\n * Linear Dynamic Logic on Finite Traces;\n\n* Conversion from LTLf/LDLf formula to DFA\n\n## Tests\n\nTo run the tests:\n\n tox\n\nTo run only the code tests:\n\n tox -e py37\n\nTo run only the code style checks:\n\n tox -e flake8\n\n## Docs\n\nTo build the docs:\n\n\n mkdocs build\n\n\nTo view documentation in a browser\n\n\n mkdocs serve\n\n\nand then go to [http://localhost:8000](http://localhost:8000)\n\n\n## License\n\nCopyright 2018-2019 Marco Favorito\n\n\n\n# History\n\n## 0.1.0 (2018-04-11)\n\n\n* First release on PyPI.\n\n## 0.1.1 (2018-04-15)\n\n* Syntax, semantics and parsing support for the following formal languages:\n * Propositional Logic;\n * Linear Dynamic Logic on Finite Traces;\n* Conversion from LDLf formula to NFA, DFA and DFA on-the-fly\n\n## 0.1.3 (2018-04-20)\n\n* Support for LTLf formulas and conversion into NFA, DFA and DFA on-the-fly\n\n## 0.2.0 (2019-10-06)\n\n* Main refactoring of the package. No new features.\n\n## 0.2.1 (2019-10-09)\n\n* Replace parsing library PLY with [Lark](https://github.com/lark-parser/lark).\n\n## 0.2.2 (2019-10-09)\n\n* Fix several issues in the computation of the delta function for LDLf.\n\n## 0.2.3 (2019-10-10)\n\n* Reverting some changes made on release `0.2.2`.\n* Updated live version: [http://flloat.herokuapp.com/](http://flloat.herokuapp.com/)", "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/marcofavorito/flloat.git", "keywords": "flloat", "license": "Apache license", "maintainer": "", "maintainer_email": "", "name": "flloat", "package_url": "https://pypi.org/project/flloat/", "platform": "", "project_url": "https://pypi.org/project/flloat/", "project_urls": { "Homepage": "https://github.com/marcofavorito/flloat.git" }, "release_url": "https://pypi.org/project/flloat/0.2.3/", "requires_dist": null, "requires_python": "", "summary": "A Python implementation of the FLLOAT library.", "version": "0.2.3" }, "last_serial": 5955739, "releases": { "0.1.1": [ { "comment_text": "", "digests": { "md5": "71acc5d24028deb05aea110026f95c56", "sha256": "0684899bd092f7c1ba3f843c0e07ed532e5756953b8abfdd6c7766068c029dcc" }, "downloads": -1, "filename": "flloat-0.1.1.linux-x86_64.tar.gz", "has_sig": false, "md5_digest": "71acc5d24028deb05aea110026f95c56", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8446, "upload_time": "2018-04-15T15:39:58", "url": "https://files.pythonhosted.org/packages/f0/2b/50c0f093303b09bacdddf6ff60ec7f2aa6b45964a28bb29421e18ab89a37/flloat-0.1.1.linux-x86_64.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "616d0c8824d0b76ed572691a29837631", "sha256": "9acd9e11a8d5b913af979d95eee9552621c817cc132501b29d45830020db8d1a" }, "downloads": -1, "filename": "flloat-0.1.2.linux-x86_64.tar.gz", "has_sig": false, "md5_digest": "616d0c8824d0b76ed572691a29837631", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 37958, "upload_time": "2018-04-17T19:48:41", "url": "https://files.pythonhosted.org/packages/2c/9b/fed5eb6ee071e8cdbea7b6e0af55cd25efba9bd3faf695afb0c310383508/flloat-0.1.2.linux-x86_64.tar.gz" } ], "0.1.2.post1": [ { "comment_text": "", "digests": { "md5": "30c20a61ceaa607765e20e4331b7c153", "sha256": "406753dfe6986e5bb9eb7f898f68d61b39abc23331f650703527f5532d196338" }, "downloads": -1, "filename": "flloat-0.1.2.post1.tar.gz", "has_sig": false, "md5_digest": "30c20a61ceaa607765e20e4331b7c153", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 22140, "upload_time": "2018-04-17T20:41:31", "url": "https://files.pythonhosted.org/packages/77/88/0907f07ebb97518d7209687f45468c3fb523887539fd09c98f43e54c0640/flloat-0.1.2.post1.tar.gz" } ], "0.1.2.post3": [ { "comment_text": "", "digests": { "md5": "7a89e25a6985a5dba05e77bae0bf387e", "sha256": "c158a57d3abd8bd97091b0f4e02c62b8c6b01f4d5dd893559edf47d49fa81717" }, "downloads": -1, "filename": "flloat-0.1.2.post3.tar.gz", "has_sig": false, "md5_digest": "7a89e25a6985a5dba05e77bae0bf387e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 23430, "upload_time": "2018-04-18T16:57:00", "url": "https://files.pythonhosted.org/packages/20/a2/8b60d299cd41add2dc6cf5ba0c2424427ab3b43b90e14010ff82bfcd3fe3/flloat-0.1.2.post3.tar.gz" } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "fd4da1bb843f5e145f0dbc4e5b5ae353", "sha256": "6dff0cc0ae0e0756d8b1c423fde98000c14714e5f490b764f75d38c212932315" }, "downloads": -1, "filename": "flloat-0.1.3.tar.gz", "has_sig": false, "md5_digest": "fd4da1bb843f5e145f0dbc4e5b5ae353", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 26576, "upload_time": "2018-04-20T20:34:25", "url": "https://files.pythonhosted.org/packages/17/ca/f248ecdccd91208e3f3e034fdc300c4d0a1c5a39cf8b270dd2d0701655e3/flloat-0.1.3.tar.gz" } ], "0.1.3.post1": [ { "comment_text": "", "digests": { "md5": "d1c4357bbcadddd747dc309429154426", "sha256": "ac56192cf59f8523e1112ec697398735711dd7c6688e2e222b42d6ce60cee57d" }, "downloads": -1, "filename": "flloat-0.1.3.post1.tar.gz", "has_sig": false, "md5_digest": "d1c4357bbcadddd747dc309429154426", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 28414, "upload_time": "2018-04-20T21:36:18", "url": "https://files.pythonhosted.org/packages/01/ee/f96a468eedf335d93abe5e13ac2b9b7d3c6a6bb65ba5106cc5a0ee777bd6/flloat-0.1.3.post1.tar.gz" } ], "0.1.3.post2": [ { "comment_text": "", "digests": { "md5": "ff2111ffb5d83a000fa27f13595a6966", "sha256": "956d10cd5d3006dff218f0b6e991b46778f94ed456296ace5d95d4c17c98d3ff" }, "downloads": -1, "filename": "flloat-0.1.3.post2.tar.gz", "has_sig": false, "md5_digest": "ff2111ffb5d83a000fa27f13595a6966", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 29261, "upload_time": "2018-04-24T17:36:55", "url": "https://files.pythonhosted.org/packages/61/34/b2ab21f5f885a6d926d938ed2224e31a0c8d7212f5d25f658183ad5a2560/flloat-0.1.3.post2.tar.gz" } ], "0.1.3.post3": [ { "comment_text": "", "digests": { "md5": "74798fe749c6a5d5c3df41521d360423", "sha256": "1657d0f232b121179b2cd1e423a0dedaa27342da5d705b4b2471568aac6c9832" }, "downloads": -1, "filename": "flloat-0.1.3.post3.tar.gz", "has_sig": false, "md5_digest": "74798fe749c6a5d5c3df41521d360423", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 28266, "upload_time": "2018-05-03T11:19:02", "url": "https://files.pythonhosted.org/packages/e0/51/b5bb931a7f4a0ca827f6e4d05d7bd71cff2ef2245a6ce40cfe09ecc43eaa/flloat-0.1.3.post3.tar.gz" } ], "0.1.3.post4": [ { "comment_text": "", "digests": { "md5": "b4b8c7990add6af3ab713e4e6f114828", "sha256": "98188035600baccaf2df9304bbda6ca38b802ad39dcae305cd93251f8601c830" }, "downloads": -1, "filename": "flloat-0.1.3.post4.tar.gz", "has_sig": false, "md5_digest": "b4b8c7990add6af3ab713e4e6f114828", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 28462, "upload_time": "2018-05-03T13:03:00", "url": "https://files.pythonhosted.org/packages/c1/87/36974a7ad50eaec5cf7c3ea3c45d086e21b9b001ce4d2d82d427fd0025e1/flloat-0.1.3.post4.tar.gz" } ], "0.1.3.post5": [ { "comment_text": "", "digests": { "md5": "73a49f5b3bb94f7ee7a69f41cb169330", "sha256": "d5b6dcb42b5067f2358343ec676839da3fb40fbcd1abe14bd71f0adf5d76fdb4" }, "downloads": -1, "filename": "flloat-0.1.3.post5.tar.gz", "has_sig": false, "md5_digest": "73a49f5b3bb94f7ee7a69f41cb169330", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 54362, "upload_time": "2018-05-28T22:43:11", "url": "https://files.pythonhosted.org/packages/76/fc/b6010daed794a244e8771270b19e424e6538ad5da9a81aa890dad853dd72/flloat-0.1.3.post5.tar.gz" } ], "0.1.3.post6": [ { "comment_text": "", "digests": { "md5": "2121e47baac311f30fc8eb559a389322", "sha256": "e1b908196cee8d570066a48675d3c70f54a6ecfe298eac634ca3e1c0d58a5138" }, "downloads": -1, "filename": "flloat-0.1.3.post6.tar.gz", "has_sig": false, "md5_digest": "2121e47baac311f30fc8eb559a389322", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 54366, "upload_time": "2018-05-29T13:50:48", "url": "https://files.pythonhosted.org/packages/ee/8d/661ba0d94d0aab0cad1dab48be7c0db0944f54d78b878437381ca3596ce3/flloat-0.1.3.post6.tar.gz" } ], "0.1.3.post7": [ { "comment_text": "", "digests": { "md5": "65b3a38490d70d04b4c43d2aec18f707", "sha256": "55cd262070fd06b3970e99f24e45e126593f4787ec6a614dbf01e6eb6808b653" }, "downloads": -1, "filename": "flloat-0.1.3.post7.tar.gz", "has_sig": false, "md5_digest": "65b3a38490d70d04b4c43d2aec18f707", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 154480, "upload_time": "2018-06-07T09:06:06", "url": "https://files.pythonhosted.org/packages/9d/62/d977bcc3503620e2c25a7715c9e680e3609cba89cc5b0767f15117566790/flloat-0.1.3.post7.tar.gz" } ], "0.1.3.post8": [ { "comment_text": "", "digests": { "md5": "546f32981b0f420189fc3f2f60d75615", "sha256": "8d5e307e9c65c9f9c81ddd2c50e454b166d7e04d14da2c0c64181d74afcbd08d" }, "downloads": -1, "filename": "flloat-0.1.3.post8.tar.gz", "has_sig": false, "md5_digest": "546f32981b0f420189fc3f2f60d75615", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 32663, "upload_time": "2018-06-08T15:56:56", "url": "https://files.pythonhosted.org/packages/12/09/7fffeb43fa639b040d28b753e72c68a3686a2d30dc0f4c81517a338a8c89/flloat-0.1.3.post8.tar.gz" } ], "0.1.4": [ { "comment_text": "", "digests": { "md5": "d7c5afcfad373a2cb492487a2bb9dd67", "sha256": "904e35212aece0047799c9adb474f76f26f218900e3e7407224c6477f5ec3067" }, "downloads": -1, "filename": "flloat-0.1.4.tar.gz", "has_sig": false, "md5_digest": "d7c5afcfad373a2cb492487a2bb9dd67", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 57824, "upload_time": "2018-06-30T21:51:58", "url": "https://files.pythonhosted.org/packages/b5/15/2829e3ce4286b5db2e4bacbde78f45699752a1dba28d4737e7581081020c/flloat-0.1.4.tar.gz" } ], "0.1.4.post1": [ { "comment_text": "", "digests": { "md5": "38a971fc695da1b672403d33348e0c5d", "sha256": "e4bcb911386c720214fde97ac8a1ad856923afb67755f7ee591c71ffa42aece0" }, "downloads": -1, "filename": "flloat-0.1.4.post1.tar.gz", "has_sig": false, "md5_digest": "38a971fc695da1b672403d33348e0c5d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 63410, "upload_time": "2018-08-05T16:22:16", "url": "https://files.pythonhosted.org/packages/fc/76/7bf88f63d8442660a6a30def8dc30996ca66d892862ddcca96bb78360c68/flloat-0.1.4.post1.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "aef601cc980b26d669ae621bfbb8517b", "sha256": "4d14dac0e6b178d5d7313cee922e9575f2c07563e75e59fc9fd9228e9d26385e" }, "downloads": -1, "filename": "flloat-0.2.0.tar.gz", "has_sig": false, "md5_digest": "aef601cc980b26d669ae621bfbb8517b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 32115, "upload_time": "2019-10-06T22:30:51", "url": "https://files.pythonhosted.org/packages/ce/6a/11e2ac849e04f1d941829e5988568a695548695bf6443e3f96651d21fded/flloat-0.2.0.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "960125755923e340dddfe7a85c7989cc", "sha256": "852beff3aadf0583f689a563e2d0a98bedbd120ae99e71afc1ff0cbe167439b9" }, "downloads": -1, "filename": "flloat-0.2.1.tar.gz", "has_sig": false, "md5_digest": "960125755923e340dddfe7a85c7989cc", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 46914, "upload_time": "2019-10-09T10:36:46", "url": "https://files.pythonhosted.org/packages/be/43/f0548bda1a42d395f91ee9466b8efe49ab3daf8cd27211b6d6e4d889dfb4/flloat-0.2.1.tar.gz" } ], "0.2.2": [ { "comment_text": "", "digests": { "md5": "966a94821d2171b89fdaaa28361e3f12", "sha256": "a517ee76a337495d5cfb0fd5580b7b7dd5c2d59a318cc9b3158f193ffbb4f220" }, "downloads": -1, "filename": "flloat-0.2.2.tar.gz", "has_sig": false, "md5_digest": "966a94821d2171b89fdaaa28361e3f12", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 47095, "upload_time": "2019-10-09T21:26:28", "url": "https://files.pythonhosted.org/packages/82/7d/139ba932ab083b8d98eedf0ece2398f59ab21ba4e3a27223262fa214d4bc/flloat-0.2.2.tar.gz" } ], "0.2.3": [ { "comment_text": "", "digests": { "md5": "d6bf51ccd12349bbbcad090fe5e02539", "sha256": "6e57cb4b6d817259c66098e5b56abda7821f45ba1a4d006be3bb5ef9ba8c09a8" }, "downloads": -1, "filename": "flloat-0.2.3.tar.gz", "has_sig": false, "md5_digest": "d6bf51ccd12349bbbcad090fe5e02539", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 47239, "upload_time": "2019-10-10T16:01:11", "url": "https://files.pythonhosted.org/packages/bd/02/2021ecad1c1aaf6f99b709ed63f18dda1187bb748e9facb9ca0c630b550d/flloat-0.2.3.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "d6bf51ccd12349bbbcad090fe5e02539", "sha256": "6e57cb4b6d817259c66098e5b56abda7821f45ba1a4d006be3bb5ef9ba8c09a8" }, "downloads": -1, "filename": "flloat-0.2.3.tar.gz", "has_sig": false, "md5_digest": "d6bf51ccd12349bbbcad090fe5e02539", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 47239, "upload_time": "2019-10-10T16:01:11", "url": "https://files.pythonhosted.org/packages/bd/02/2021ecad1c1aaf6f99b709ed63f18dda1187bb748e9facb9ca0c630b550d/flloat-0.2.3.tar.gz" } ] }