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'))