Showing
1 changed file
with
81 additions
and
0 deletions
Models/Model2/verifcar.py
0 → 100644
1 | +from zinc.nets import * | ||
2 | +from libsverifcar import * | ||
3 | + | ||
4 | +net = PetriNet("VerifCar") | ||
5 | +net.declare("from libsverifcar import *") | ||
6 | +for k, v in constants.items() : | ||
7 | + net.declare("%s = %r" % (k, v)) | ||
8 | + | ||
9 | +net.add_place(Place("clocks",[Clock('C0',0,True),Clock('C1',0,True),Clock('C2',3,True),Clock('C3',7,True),Clock('C4',0,True)])) | ||
10 | +net.add_place(Place("vehicles",[Vehicle(0,True,(0*scale)//GranX,(525*scale)//GranY,(3000*scale)//GranV,(3*scale)//GranA,0,navigation_list[0],[0,0,0],[0,0,0],0,0,0,0),Vehicle(1,True,(3000*scale)//GranX,(875*scale)//GranY,(1500*scale)//GranV,(3*scale)//GranA,0,navigation_list[1],[0,0,0],[0,0,0],0,0,0,0),Vehicle(2,True,(4000*scale)//GranX,(175*scale)//GranY,(2000*scale)//GranV,(3*scale)//GranA,0,navigation_list[2],[0,0,0],[0,0,0],0,0,0,0)])) | ||
11 | +net.add_place(Place("terminal",[Terminal([0,0,0],[0,0,0],[False,False,False],[0,0,0],[0,0,0])])) | ||
12 | + | ||
13 | +net.add_transition(Transition("tic", "Clock.check(clocks,'C0<S_C0 and (C1<MaxCom_C1 or (C1DidBroadcast and C1<S_C1)) and (C2<MaxCom_C2 or (C2DidBroadcast and C2<S_C2)) and (C3<MaxCom_C3 or (C3DidBroadcast and C3<S_C3)) and (C4<MaxCom_C4 or (C4DidBroadcast and C4<S_C4))')")) | ||
14 | +net.add_input("clocks", "tic", Flush("clocks")) | ||
15 | +net.add_output("clocks", "tic", Fill("Clock.update(clocks)")) | ||
16 | + | ||
17 | +net.add_transition(Transition("update", "c.id=='C0' and c.v>=S_C0")) | ||
18 | +net.add_input("clocks", "update", Variable("c")) | ||
19 | +net.add_input("vehicles", "update", Flush("vehicles")) | ||
20 | +net.add_output("clocks", "update", Expression("c.reset()")) | ||
21 | +net.add_output("vehicles", "update", Fill("Vehicle.update(vehicles)")) | ||
22 | + | ||
23 | +net.add_transition(Transition("decisionV1", "c.id=='C1'and c.v>=S_C1 and t.id=='C0' and t.v<S_C0")) | ||
24 | +net.add_input("clocks", "decisionV1", MultiArc(Variable("c"),Test(Variable("t")))) | ||
25 | +net.add_input("vehicles", "decisionV1", Flush("vehicles")) | ||
26 | +net.add_output("clocks", "decisionV1", Expression("c.reset()")) | ||
27 | +net.add_output("vehicles", "decisionV1", Fill("Vehicle.decision(vehicles,0)")) | ||
28 | + | ||
29 | +net.add_transition(Transition("decisionV2", "c.id=='C2'and c.v>=S_C2 and t.id=='C0' and t.v<S_C0")) | ||
30 | +net.add_input("clocks", "decisionV2", MultiArc(Variable("c"),Test(Variable("t")))) | ||
31 | +net.add_input("vehicles", "decisionV2", Flush("vehicles")) | ||
32 | +net.add_output("clocks", "decisionV2", Expression("c.reset()")) | ||
33 | +net.add_output("vehicles", "decisionV2", Fill("Vehicle.decision(vehicles,1)")) | ||
34 | + | ||
35 | +net.add_transition(Transition("decisionV3", "c.id=='C3'and c.v>=S_C3 and t.id=='C0' and t.v<S_C0")) | ||
36 | +net.add_input("clocks", "decisionV3", MultiArc(Variable("c"),Test(Variable("t")))) | ||
37 | +net.add_input("vehicles", "decisionV3", Flush("vehicles")) | ||
38 | +net.add_output("clocks", "decisionV3", Expression("c.reset()")) | ||
39 | +net.add_output("vehicles", "decisionV3", Fill("Vehicle.decision(vehicles,2)")) | ||
40 | + | ||
41 | +net.add_transition(Transition("decisionTer", "c.id=='C4'and c.v>=S_C4 and t.id=='C0' and t.v<S_C0 and d.id=='C1' and d.v<S_C1")) | ||
42 | +net.add_input("clocks", "decisionTer", MultiArc(Variable("c"),Test(Variable("t")),Test(Variable("d")))) | ||
43 | +net.add_input("vehicles", "decisionTer", Flush("vehicles")) | ||
44 | +net.add_input("terminal", "decisionTer", Variable("ter")) | ||
45 | +net.add_output("clocks", "decisionTer", Expression("c.reset()")) | ||
46 | +net.add_output("vehicles", "decisionTer", Fill("vehicles")) | ||
47 | +net.add_output("terminal", "decisionTer", Expression("ter.compute(vehicles)")) | ||
48 | + | ||
49 | +net.add_transition(Transition("broadcastV1", "c.id=='C1'and c.v>=MinCom_C1 and not c.b and t.id=='C0' and t.v<S_C0")) | ||
50 | +net.add_input("clocks", "broadcastV1", MultiArc(Variable("c"),Test(Variable("t")))) | ||
51 | +net.add_input("vehicles", "broadcastV1", Flush("vehicles")) | ||
52 | +net.add_input("terminal", "broadcastV1", Variable("ter")) | ||
53 | +net.add_output("clocks", "broadcastV1", Expression("c.statuschange()")) | ||
54 | +net.add_output("vehicles", "broadcastV1", Fill("Vehicle.broadcast(vehicles,0)")) | ||
55 | +net.add_output("terminal", "broadcastV1", Expression("ter.receive_data(vehicles,0)")) | ||
56 | + | ||
57 | +net.add_transition(Transition("broadcastV2", "c.id=='C2'and c.v>=MinCom_C2 and not c.b and t.id=='C0' and t.v<S_C0")) | ||
58 | +net.add_input("clocks", "broadcastV2", MultiArc(Variable("c"),Test(Variable("t")))) | ||
59 | +net.add_input("vehicles", "broadcastV2", Flush("vehicles")) | ||
60 | +net.add_input("terminal", "broadcastV2", Variable("ter")) | ||
61 | +net.add_output("clocks", "broadcastV2", Expression("c.statuschange()")) | ||
62 | +net.add_output("vehicles", "broadcastV2", Fill("Vehicle.broadcast(vehicles,1)")) | ||
63 | +net.add_output("terminal", "broadcastV2", Expression("ter.receive_data(vehicles,1)")) | ||
64 | + | ||
65 | +net.add_transition(Transition("broadcastV3", "c.id=='C3'and c.v>=MinCom_C3 and not c.b and t.id=='C0' and t.v<S_C0")) | ||
66 | +net.add_input("clocks", "broadcastV3", MultiArc(Variable("c"),Test(Variable("t")))) | ||
67 | +net.add_input("vehicles", "broadcastV3", Flush("vehicles")) | ||
68 | +net.add_input("terminal", "broadcastV3", Variable("ter")) | ||
69 | +net.add_output("clocks", "broadcastV3", Expression("c.statuschange()")) | ||
70 | +net.add_output("vehicles", "broadcastV3", Fill("Vehicle.broadcast(vehicles,2)")) | ||
71 | +net.add_output("terminal", "broadcastV3", Expression("ter.receive_data(vehicles,2)")) | ||
72 | + | ||
73 | +net.add_transition(Transition("broadcastTer", "c.id=='C4'and c.v>=MinCom_C4 and not c.b and t.id=='C0' and t.v<S_C0")) | ||
74 | +net.add_input("clocks", "broadcastTer", MultiArc(Variable("c"),Test(Variable("t")))) | ||
75 | +net.add_input("vehicles", "broadcastTer", Flush("vehicles")) | ||
76 | +net.add_input("terminal", "broadcastTer", Variable("ter")) | ||
77 | +net.add_output("clocks", "broadcastTer", Expression("c.statuschange()")) | ||
78 | +net.add_output("vehicles", "broadcastTer", Fill("Vehicle.give_orders(vehicles,ter)")) | ||
79 | +net.add_output("terminal", "broadcastTer", Expression("ter")) | ||
80 | + | ||
81 | +net.build(saveto="netverifcar.py") |
-
Please register or login to post a comment