This example is the left part of Fig.2 in our ATVA'16 paper titled "Spot 2.0 — a framework for LTL and ω-automata manipulation".
In [1]:
import spot
spot.setup(show_default='.abr')
In [2]:
f = spot.formula('GFa <-> GFb'); f
Out[2]:
In [3]:
f.translate()
Out[3]:
In [4]:
def implies(f, g):
f = spot.formula(f)
g = spot.formula_Not(spot.formula(g))
return spot.product(f.translate(), g.translate()).is_empty()
def equiv(f, g):
return implies(f, g) and implies(g, f)
In [5]:
equiv('a U (b U a)', 'b U a')
Out[5]:
In [6]:
equiv('!(a U b)', '!a U !b')
Out[6]: