system SumToN {
const PARAM { N = 1; }
typealias byte int wrap (0,255);
byte x := 1;
byte t1;
byte t2;
active thread Thread1() {
loc loc0:
do { t1 := x; }
goto loc1;
loc loc1:
do { t2 := x; }
goto loc2;
loc loc2:
do { x := t1 + t2; }
goto loc0;
}
active thread Thread2() {
loc loc0:
do { t1 := x; }
goto loc1;
loc loc1:
do { t2 := x; }
goto loc2;
loc loc2:
do { x := t1 + t2; }
goto loc0;
}
active thread Thread0() {
loc loc0:
do { assert (x != (byte)PARAM.N); }
return;
}
}
|