fix bug in global evaluator

This commit is contained in:
Marcell Vazquez-Chanlatte 2017-11-11 18:00:33 -08:00
parent cba8a83c8e
commit f53cab4485
2 changed files with 10 additions and 2 deletions

View file

@ -78,7 +78,10 @@ def eval_stl_g(phi, dt):
a, b = phi.interval a, b = phi.interval
def process_intervals(x): def process_intervals(x):
for (start, val), (end, val2) in x.iterintervals(): # Need to add last interval
intervals = fn.chain(x.iterintervals(),
[(x.last(), (float('inf'), None),)])
for (start, val), (end, val2) in intervals:
start2, end2 = start - b, end + a start2, end2 = start - b, end + a
if end2 > start2: if end2 > start2:
yield (start2, val) yield (start2, val)

View file

@ -30,7 +30,7 @@ x = {
"AP2": traces.TimeSeries([(0, False), (0.2, True), (0.5, False)]), "AP2": traces.TimeSeries([(0, False), (0.2, True), (0.5, False)]),
"AP3": traces.TimeSeries([(0, True), (0.1, True), (0.3, False)]), "AP3": traces.TimeSeries([(0, True), (0.1, True), (0.3, False)]),
"AP4": traces.TimeSeries([(0, False), (0.1, False), (0.3, False)]), "AP4": traces.TimeSeries([(0, False), (0.1, False), (0.3, False)]),
"AP5": traces.TimeSeries([(0, False), (0.1, False), (0.1, True)]), "AP5": traces.TimeSeries([(0, False), (0.1, False), (0.3, True)]),
} }
@ -70,6 +70,11 @@ def test_boolean_identities(phi):
stl_eval12 = stl.boolean_eval.pointwise_sat(phi5) stl_eval12 = stl.boolean_eval.pointwise_sat(phi5)
assert stl_eval12(x, 0) assert stl_eval12(x, 0)
phi6 = stl.parse('G[0.1, 0.03](~(AP5))')
stl_eval13 = stl.boolean_eval.pointwise_sat(phi6)
assert stl_eval13(x, 0)
assert not stl_eval13(x, 0.4)
@given(st.just(stl.BOT)) @given(st.just(stl.BOT))
def test_temporal_identities(phi): def test_temporal_identities(phi):