From f53cab448585c42f7dd5564230594ad14b2b2578 Mon Sep 17 00:00:00 2001 From: Marcell Vazquez-Chanlatte Date: Sat, 11 Nov 2017 18:00:33 -0800 Subject: [PATCH] fix bug in global evaluator --- stl/boolean_eval.py | 5 ++++- stl/test_boolean_eval.py | 7 ++++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/stl/boolean_eval.py b/stl/boolean_eval.py index fb5b5d3..0d1990c 100644 --- a/stl/boolean_eval.py +++ b/stl/boolean_eval.py @@ -78,7 +78,10 @@ def eval_stl_g(phi, dt): a, b = phi.interval 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 if end2 > start2: yield (start2, val) diff --git a/stl/test_boolean_eval.py b/stl/test_boolean_eval.py index c0c5ca7..e8059ae 100644 --- a/stl/test_boolean_eval.py +++ b/stl/test_boolean_eval.py @@ -30,7 +30,7 @@ x = { "AP2": traces.TimeSeries([(0, False), (0.2, True), (0.5, False)]), "AP3": traces.TimeSeries([(0, True), (0.1, True), (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) 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)) def test_temporal_identities(phi):