mtl-aas/stl/hypothesis.py
2017-10-26 22:00:03 -07:00

23 lines
765 B
Python

import hypothesis.strategies as st
from hypothesis_cfg import ContextFreeGrammarStrategy
import stl
GRAMMAR = {
'phi': (('Unary', '(', 'phi', ')'), ('(', 'phi', ')', 'Binary', '(', 'phi',
')'), ('AP', )),
'Unary': (('~', ), ('G', ), ('F', ), ('X', )),
'Binary': ((' | ', ), (' & ', ), (' U ', )),
'AP': (('AP1', ), ('AP2', ), ('AP3', ), ('AP4', ), ('AP5', )),
}
def to_stl(term):
return stl.parse(''.join(term))
SignalTemporalLogicStrategy = st.builds(to_stl,
ContextFreeGrammarStrategy(
GRAMMAR,
max_length=25,
start='phi'))