const double sleep2standby=10/6;
const double sleep2idle=10/16;
const double standby2sleep=10/3;
const double standby2idle=10/12;
const double idle2sleep=100/67;
const double idle2standby=10/4;
const double service=1000/8;
module SP
sp : [0..3];
[sleep2standby] sp=0 -> sleep2standby : (sp'=1);
[sleep2idle] sp=0 & q=0 -> sleep2idle : (sp'=2);
[sleep2idle] sp=0 & q>0 -> sleep2idle : (sp'=3);
[standby2sleep] sp=1 -> standby2sleep : (sp'=0);
[standby2idle] sp=1 & q=0 -> standby2idle : (sp'=2);
[standby2idle] sp=1 & q>0 -> standby2idle : (sp'=3);
[idle2sleep] sp=2 & q=0 -> idle2sleep : (sp'=0);
[idle2standby] sp=2 & q=0 -> idle2standby : (sp'=1);
[request] sp=2 -> (sp'=3);
[request] sp!=2 -> true;
[serve] sp=3 & q>1 -> service : (sp'=3);
[serve] sp=3 & q=1 -> service : (sp'=2);
endmodule