Johan ARCILE

Upload new file

pta
formula fk1Ca = (sPr=1) | (sPr=3);
formula fk2Ca = (sCa=3);
formula fk1O = (sPr=1);
formula fk2O = (sO=2);
formula fk3O = (sF=1);
formula fk4O = (sO=4);
formula fk1P = (sF=1);
formula fk2P = (sP=3);
module mCa
xCa : clock;
sCa : [0..3] init 0;
invariant
(sCa=0 => xCa <= 5000) &
(sCa=1 => xCa <= 5000) &
(sCa=2 => xCa <= 0)
endinvariant
[] sCa=0 & xCa >= 100 -> (sCa'=1) & (xCa'=0);
[] sCa=1 & xCa >= 100 -> (sCa'=2) & (xCa'=0);
[k1Ca] sCa=2 -> (sCa'=1) & (xCa'=0);
[] sCa=2 & !fk1Ca -> (sCa'=3);
[k2Ca] sCa=3 -> (sCa'=1) & (xCa'=0);
endmodule
module mO
xO : clock;
sO : [0..4] init 0;
invariant
(sO=1 => xO <= 0) &
(sO=3 => xO <= 0)
endinvariant
[] sO=0 & xO >= 100 -> (sO'=1) & (xO'=0);
[k1O] sO=1 -> (sO'=3) & (xO'=0);
[] sO=1 & !fk1O -> (sO'=2);
[k2O] sO=2 -> (sO'=3) & (xO'=0);
[k3O] sO=3 -> (sO'=0) & (xO'=0);
[] sO=3 & !fk3O -> (sO'=4);
[k4O] sO=4 -> (sO'=0) & (xO'=0);
endmodule
module mP
xP : clock;
sP : [0..3] init 0;
invariant
(sP=0 => xP <= 5000) &
(sP=1 => xP <= 5000) &
(sP=2 => xP <= 0)
endinvariant
[] sP=0 & xP >= 100 -> (sP'=1) & (xP'=0);
[] sP=1 & xP >= 100 -> (sP'=2) & (xP'=0);
[k1P] sP=2 -> (sP'=1) & (xP'=0);
[] sP=2 & !fk1P -> (sP'=3);
[k2P] sP=3 -> (sP'=1) & (xP'=0);
endmodule
module mF
xF : clock;
sF : [0..2] init 0;
invariant
(sF=0 => xF<=0) &
(sF=2 => xF<=5000)
endinvariant
[k2P] sF=0 -> (sF'=2) & (xF'=0);
[k4O] sF=0 -> (sF'=2) & (xF'=0);
[] sF=0 & !fk2P & !fk4O -> (sF'=1);
[k1P] sF=1 -> (sF'=2) & (xF'=0);
[k13O] sF=1 -> (sF'=2) & (xF'=0);
[] sF=2 & xF >= 0 -> (sF'=0) & (xF'=0);
endmodule
module mPr
xPr : clock;
sPr : [0..4] init 0;
invariant
(sPr=0 => xPr<=0) &
(sPr=2 => xPr<=0) &
(sPr=4 => xPr<=5000)
endinvariant
[k2O] sPr=0 -> (sPr'=2) & (xPr'=0);
[k2Ca] sPr=0 -> (sPr'=4) & (xPr'=0);
[] sPr=0 & !fk2O & !fk2Ca -> (sPr'=1);
[k1O] sPr=1 -> (sPr'=2) & (xPr'=0);
[k1Ca] sPr=1 -> (sPr'=4) & (xPr'=0);
[k2Ca] sPr=2 -> (sPr'=4) & (xPr'=0);
[] sPr=2 & !fk2Ca -> (sPr'=3);
[k1Ca] sPr=3 -> (sPr'=4) & (xPr'=0);
[] sPr=4 & xPr >= 0 -> (sPr'=0) & (xPr'=0);
endmodule