diff options
Diffstat (limited to 'tests/updown.scade')
-rw-r--r-- | tests/updown.scade | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/tests/updown.scade b/tests/updown.scade new file mode 100644 index 0000000..02e2029 --- /dev/null +++ b/tests/updown.scade @@ -0,0 +1,30 @@ +const bound: int = 7; + +node updown() returns(probe x: int) +var last_x: int; +let + last_x = 0 -> pre x; + guarantee x_bounded : x >= -bound and x <= bound; + automaton + initial state UP + let x = last_x + 1; tel + until if x >= bound + do guarantee x_up : x = bound; + resume DOWN; + + state DOWN + let x = last_x - 1; tel + until if x <= -bound + do guarantee x_down : x = -bound; + resume UP; + + returns x; +tel + +node test(i: int) returns(a, b, c: int; exit: bool) +let + exit = i >= 30; + a = updown(); + b = 0; + c = 0; +tel |