23 lines
765 B
Python
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'))
|