blob: 72d5bed2f1d6f057a7f8d193b4bd742a15bf2c07 (
plain) (
tree)
|
|
const bound: int = 7;
node updown2() returns(probe x, probe y, probe z: int)
var last_x, last_y: int;
let
last_x = 0 -> pre x;
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;
guarantee x_bounded: x >= -bound and x <= bound;
last_y = 0 -> pre y;
automaton
initial state DOWN
let y = last_y - 1; tel
until if y <= -bound resume UP;
state UP
let y = last_y + 1; tel
until if y >= bound resume DOWN;
returns y;
guarantee y_bounded: y >= -bound and y <= bound;
z = x + y;
guarantee x_y_opp: z = 0;
tel
node test(i: int) returns(a, b, c: int; exit: bool)
let
exit = i >= 30;
a, b, c = updown2();
tel
|