* Example 6:
* This is a test program
*  a C.vmp processor gspn 
*  Steve Woolet   12/8/89
* verbose on

bind
mPROC 	.000299 
mMEM	.000694 
mVOT	.000131
end

gspn cvmp
* Places and Markings
plcpuup	3
plmemup	3
plvotup	1
plcpudn	0
plmemdn	0
plvotdn	0
plsysup	1
plsysdn	0
end

*Timed Transitions
tcpu dep plcpuup mPROC
tmem dep plmemup mMEM
tvot ind mVOT
end
*Immediate Transitions
ticpu ind 1
timem ind 1
tisyscpu ind 1
tisysmem ind 1
tisysvot ind 1
end
*Input Arcs
plcpuup tcpu 1
plmemup tmem 1
plvotup tvot 1
plcpuup ticpu 1
plcpudn ticpu 2
plmemup timem 1
plmemdn timem 2
plsysup tisyscpu 1
plsysup tisysmem 1
plsysup tisysvot 1
end
*output Arcs
tcpu plcpudn 1
tmem plmemdn 1
tvot plvotdn 1
ticpu plcpudn 3
timem plmemdn 3
tisyscpu plsysdn 1
tisysmem plsysdn 1
tisysvot plsysdn 1
end
*Inhibit Arcs
plcpuup tisyscpu 1
plmemup tisysmem 1
plvotup tisysvot 1
plsysdn tcpu 1
plsysdn tmem 1
plsysdn tvot 1
plsysdn ticpu 1
plsysdn timem 1
end


expr mean(cvmp)
expr value(100;cvmp)
expr premptyt(100;cvmp,plsysup)
expr etokt(100;cvmp,plsysup)
expr etokt(100;cvmp,plvotup)

markov mcvmp
1 2 3*mPROC
1 3 3*mMEM
1 5 mVOT
2 4 3*mMEM
2 6 mVOT
2 8 2*mPROC
3 4 3*mPROC
3 7 mVOT
3 10 2*mMEM
4 9 mVOT
4 11 2*mPROC
4 12 2*mMEM
end
1 1
end

expr value(100;mcvmp)

var pup sum (i,1,4,value(100;mcvmp,$i)) 
var pfail sum (i,5,12,value(100;mcvmp,$i)) 
expr pfail
expr pup
loop i,4,12
expr value(100;mcvmp,$i)
end
var p5 value(100;mcvmp,5)
expr p5
var p6 p5 + value(100;mcvmp,6)
expr p6
var p7 p6 + value(100;mcvmp,7)
expr p7
var p8 p7 + value(100;mcvmp,8)
expr p8
var p9 p8 + value(100;mcvmp,9)
expr p9
var p10 p9 + value(100;mcvmp,10)
expr p10
var p11 p10 + value(100;mcvmp,11)
expr p11
var p12 p11 + value(100;mcvmp,12)
expr p12

var votup sum (i,1,4,value(100;mcvmp,$i)) + value(100;mcvmp,8) +\ 
          sum (i,10,12,value(100;mcvmp,$i)) 
expr votup

end

