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