var t,te,time; initial linit; linit -> heat : guard te=14 and t>=16 and t<=17 assign { time := 0; }; heat -> heat : guard t<=22 assign { t := 15/16 t + 1/16 te + 1; te:=te; time := time+1; } jordan matrix([1,0,1,1],[0,0,0,1],[0,1/16,0,0],[0,0,1/16,0]) [[15/16,1],[1.0,2,1]] matrix([1,-1,0,-16],[0,0,16,0],[0,0,0,16],[0,1,0,0]) ; heat -> heate : guard t>=22 assign { }; heate -> noheat : guard true assign { time := 0; }; noheat -> noheat : guard t>=18 assign { t := 15/16 t + 1/16 te; te:=te; time := time+1; } jordan matrix([1,0,0,1],[0,0,0,1],[0,1,0,0],[0,0,1,0]) [[15/16,1],[1.0,2,1]] matrix([1,-1,0,0],[0,0,1,0],[0,0,0,1],[0,1,0,0]) ; noheat -> noheate : guard t<=18 assign { }; noheate -> heat : guard true assign { time := 0; }; /* load("diag"); m:matrix([15/16,1/16,0,1],[0,1,0,0],[0,0,1,1],[0,0,0,1]); j:jordan(m); mj:dispJordan(j); pinv:ModeMatrix(m,j);p:invert(pinv);pinv.mj.p; m:matrix([15/16,1/16,0,0],[0,1,0,0],[0,0,1,1],[0,0,0,1]); j:jordan(m); mj:dispJordan(j); pinv:ModeMatrix(m,j);p:invert(pinv);pinv.mj.p; */