mtl-aas/README.md
Marcell Vazquez-Chanlatte b7f17c1322 start developing readme
2018-09-24 16:29:39 -07:00

1.7 KiB

py-metric-temporal logic logo
A library for manipulating and evaluating metric temporal logic.

Build Status codecov

About

Python library for working with Metric Temporal Logic (MTL). Metric Temporal Logic is an extension of Linear Temporal Logic (LTL) for specifying properties over time series (See Alur). Some practical examples are given in the usage.

Installation

$ pip install metric-temporal-logic

Usage

To begin, we import mtl.

import mtl

Propositional logic (using parse api)

# - Lowercase strings denote atomic predicates.
phi0 = mtl.parse('atomicpred')

# - Binary operators need to be surrounded by parens.
phi1 = mtl.parse('((a & b & c) | d | e)')
phi2 = mtl.parse('(a -> b) & (~a -> c)')
phi3 = mtl.parse('(a -> b -> c)')
phi4 = mtl.parse('(a <-> b <-> c)')
phi5 = mtl.parse('(x ^ y ^ z)')

# - Unary operators (negation)
phi6 = mtl.parse('~a')
phi7 = mtl.parse('~(a)')

Propositional logic (using python syntax)

a, b = mtl.parse('a'), mtl.parse('b')
phi0 = ~a
phi1 = a & b
phi2 = a | b

# TODO: add
phi3 = a ^ b
phi4 = a.iff(b)
phi5 = a.implies(b)

Modal Logic (parser api)

# Eventually `x` will hold.
phi = mtl.parse('F x')

# `x & y` will always hold.
phi = mtl.parse('G(x & y)')

# `x` will always hold.
phi2 = mtl.parse('G x')