44 lines
728 B
Text
44 lines
728 B
Text
|
type mode = H | M | L
|
||
|
|
||
|
node server(max:int) = (load:int)
|
||
|
contract
|
||
|
assume (max >= 5)
|
||
|
enforce (load <= max)
|
||
|
with (c:mode)
|
||
|
let
|
||
|
switch c
|
||
|
| H do load = 20
|
||
|
| M do load = 10
|
||
|
| L do load = 0
|
||
|
end
|
||
|
tel
|
||
|
|
||
|
type degmode = Normal | Degraded
|
||
|
|
||
|
node degraded_server(max:int) = (load:int)
|
||
|
contract
|
||
|
assume (max >= 10)
|
||
|
enforce (load <= max)
|
||
|
with (cm:mode;cd:degmode)
|
||
|
let
|
||
|
switch cd
|
||
|
| Normal do
|
||
|
switch cm
|
||
|
| H do load = 20
|
||
|
| M do load = 10
|
||
|
| L do load = 0
|
||
|
end
|
||
|
| Degraded do load = 2
|
||
|
end
|
||
|
tel
|
||
|
|
||
|
(* CHECK main *)
|
||
|
node main() = (ok:bool)
|
||
|
var max, load1, load2 : int;
|
||
|
let
|
||
|
load1 = 0;
|
||
|
load2 = degraded_server(max);
|
||
|
max = 10;
|
||
|
ok = (load1 <= max) & (load2 <= max);
|
||
|
tel
|