FLLOAT
A Python implementation of the FLLOAT library.
Links
- GitHub: https://github.com/whitemech/flloat
- PyPI: https://pypi.org/project/flloat/
- Documentation: https://whitemech.github.io/flloat
- Changelog: https://whitemech.github.io/flloat/release-history/
- Issue Tracker:https://github.com/whitemech/flloat/issues
- Download: https://pypi.org/project/flloat/#files
Install
- from PyPI:
pip install flloat
- or, from source (
masterbranch):
pip install git+https://github.com/whitemech/flloat.git
- or, clone the repository and install:
git clone htts://github.com/whitemech/flloat.git
cd flloat
pip install .
How to use
- Parse a LDLf formula:
from flloat.parser.ldlf import LDLfParser
parser = LDLfParser()
formula_string = "<true*; A & B>tt"
formula = parser(formula_string) # returns a LDLfFormula
print(formula) # prints "<((true)* ; (A & B))>(tt)"
print(formula.find_labels()) # prints {A, B}
- Evaluate it over finite traces:
t1 = [
{"A": False, "B": False},
{"A": True, "B": False},
{"A": True, "B": False},
{"A": True, "B": True},
{"A": False, "B": False},
]
formula.truth(t1, 0) # True
- Transform it into an automaton (
pythomata.SymbolicAutomatonobject):
dfa = formula.to_automaton()
assert dfa.accepts(t1)
# print the automaton
graph = dfa.to_graphviz()
graph.render("./my-automaton") # requires Graphviz installed on your system.
Notice: to_dot requires Graphviz.
For info about how to use a pythomata.DFA please look at the Pythomata docs.
- The same for a LTLf formula:
from flloat.parser.ltlf import LTLfParser
# parse the formula
parser = LTLfParser()
formula = "F (A & !B)"
parsed_formula = parser(formula)
# evaluate over finite traces
t1 = [
{"A": False, "B": False},
{"A": True, "B": False},
{"A": True, "B": False},
{"A": True, "B": True},
{"A": False, "B": False},
]
assert parsed_formula.truth(t1, 0)
t2 = [
{"A": False, "B": False},
{"A": True, "B": True},
{"A": False, "B": True},
]
assert not parsed_formula.truth(t2, 0)
# from LTLf formula to DFA
dfa = parsed_formula.to_automaton()
assert dfa.accepts(t1)
assert not dfa.accepts(t2)
Features
-
Syntax, semantics and parsing support for the following formal languages:
- Propositional Logic;
- Linear Temporal Logic on Finite Traces
- Linear Dynamic Logic on Finite Traces;
-
Conversion from LTLf/LDLf formula to DFA
Tests
To run the tests:
tox
To run only the code tests:
tox -e py37
To run only the code style checks:
tox -e flake8
Docs
To build the docs:
mkdocs build
To view documentation in a browser
mkdocs serve
and then go to http://localhost:8000
License
FLLOAT is released under the GNU Lesser General Public License v3.0 or later (LGPLv3+).
Copyright 2018-2020 WhiteMech
History
0.3.0 (2020-03-24)
- Refinement of all the grammars. Extensive improvement of the parsing.
- Integration with Pythomata
>=0.3.0 - Simplified interfaces and refactoring of the class hierarchy for the logic modules.
- Introduced FiniteTraceWrapper. It allows evaluating any propositional over a finite trace.
- Several bug fixes and improved testing.
- Improvement of docs and metadata consistency.
0.2.3 (2019-10-10)
- Reverting some changes made on release
0.2.2. - Updated live version: http://flloat.herokuapp.com/
0.2.2 (2019-10-09)
- Fix several issues in the computation of the delta function for LDLf.
0.2.1 (2019-10-09)
- Replace parsing library PLY with Lark.
0.2.0 (2019-10-06)
- Main refactoring of the package. No new features.
0.1.3 (2018-04-20)
- Support for LTLf formulas and conversion into NFA, DFA and DFA on-the-fly
0.1.1 (2018-04-15)
- Syntax, semantics and parsing support for the following formal languages:
- Propositional Logic;
- Linear Dynamic Logic on Finite Traces;
- Conversion from LDLf formula to NFA, DFA and DFA on-the-fly
0.1.0 (2018-04-11)
- First release on PyPI.
Metadata
Release files for flloat 0.3.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| flloat-0.3.0.tar.gz | 48.4 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| flloat-0.3.0-py2.py3-none-any.whl | Python 3, Python 2 | none | any | Details |
Total release size: 88.2 kB
Release files / flloat-0.3.0.tar.gz
| Download URL | flloat-0.3.0.tar.gz |
|---|---|
| Size | 48.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
1705f1f0a4c270bbcdc47bdaf8977a9f51cd2c8974162309359f043daa12f93d
|
|
BLAKE2b-256 checksum How to use checksums |
111fdc8afdecef1060a9afdd9e2853cdb7b2ab6c715b88a8aa3c948f75343abf
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/45.2.0 requests-toolbelt/0.9.1 tqdm/4.43.0 CPython/3.7.6
|
Release files / flloat-0.3.0-py2.py3-none-any.whl
| Download URL | flloat-0.3.0-py2.py3-none-any.whl |
|---|---|
| Size | 39.8 kB |
| Tags | Python 2 Python 3 |
|
SHA-256 checksum How to use checksums |
4423ee6fe4df59669493101e1bcbfc1089ea4809fc48d1029923d363527c418c
|
|
BLAKE2b-256 checksum How to use checksums |
62259e0f75576ce2a7d85e89eecf856938d144f5ed66edee41df74e3310b11b8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/45.2.0 requests-toolbelt/0.9.1 tqdm/4.43.0 CPython/3.7.6
|
Security for flloat 0.3.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.