continue refactoring to optimize for mtl

This commit is contained in:
Marcell Vazquez-Chanlatte 2018-09-06 11:09:01 -07:00
parent 5fd66cfd2c
commit 98824c9ba1
21 changed files with 393 additions and 467 deletions

31
mtl/test_ast.py Normal file
View file

@ -0,0 +1,31 @@
import mtl
from mtl.hypothesis import MetricTemporalLogicStrategy
from hypothesis import given
@given(MetricTemporalLogicStrategy)
def test_identities(phi):
assert mtl.TOP == mtl.TOP | phi
assert mtl.BOT == mtl.BOT & phi
assert mtl.TOP == phi | mtl.TOP
assert mtl.BOT == phi & mtl.BOT
assert phi == phi & mtl.TOP
assert phi == phi | mtl.BOT
assert mtl.TOP == mtl.TOP & mtl.TOP
assert mtl.BOT == mtl.BOT | mtl.BOT
assert mtl.TOP == mtl.TOP | mtl.BOT
assert mtl.BOT == mtl.TOP & mtl.BOT
assert ~mtl.BOT == mtl.TOP
assert ~mtl.TOP == mtl.BOT
assert ~~mtl.BOT == mtl.BOT
assert ~~mtl.TOP == mtl.TOP
assert (phi & phi) & phi == phi & (phi & phi)
assert (phi | phi) | phi == phi | (phi | phi)
assert ~~phi == phi
def test_walk():
phi = mtl.parse(
'(([ ][0, 1] ap1 & < >[1,2] ap2) | (@ap1 U ap2))')
assert len(list((~phi).walk())) == 11