Skip to main content

A Python implementation of the FLLOAT library.

Project description

FLLOAT

FLLOAT Continuous Integration pipeline. codecov

A Python implementation of the FLLOAT library.

Links

Install

pip install flloat
  • or, from source (master branch):
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.SymbolicAutomaton object):
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)

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.

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

flloat-0.3.0.tar.gz (48.4 kB view details)

Uploaded Source

Built Distribution

flloat-0.3.0-py2.py3-none-any.whl (39.8 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file flloat-0.3.0.tar.gz.

File metadata

  • Download URL: flloat-0.3.0.tar.gz
  • Upload date:
  • Size: 48.4 kB
  • Tags: Source
  • Uploaded using 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

File hashes

Hashes for flloat-0.3.0.tar.gz
Algorithm Hash digest
SHA256 1705f1f0a4c270bbcdc47bdaf8977a9f51cd2c8974162309359f043daa12f93d
MD5 5d260ba2f025288f53925cdf709efa2d
BLAKE2b-256 111fdc8afdecef1060a9afdd9e2853cdb7b2ab6c715b88a8aa3c948f75343abf

See more details on using hashes here.

File details

Details for the file flloat-0.3.0-py2.py3-none-any.whl.

File metadata

  • Download URL: flloat-0.3.0-py2.py3-none-any.whl
  • Upload date:
  • Size: 39.8 kB
  • Tags: Python 2, Python 3
  • Uploaded using 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

File hashes

Hashes for flloat-0.3.0-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 4423ee6fe4df59669493101e1bcbfc1089ea4809fc48d1029923d363527c418c
MD5 470b41f9fe040dc95ba3eefe966c9d06
BLAKE2b-256 62259e0f75576ce2a7d85e89eecf856938d144f5ed66edee41df74e3310b11b8

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