summaryrefslogtreecommitdiff
path: root/tests/updown.scade
blob: 089293a2ba7b776754bcc6c9ab37bba1e791e90f (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
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 resume DOWN;

        state DOWN
        let x = last_x - 1; tel
        until if 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