-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathbasic_model.smv
More file actions
53 lines (46 loc) · 1.8 KB
/
Copy pathbasic_model.smv
File metadata and controls
53 lines (46 loc) · 1.8 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
MODULE main
VAR
-- States representing combinations of obligations and permissible actions for 5 actions (a_1 through a_5)
s : {Oa1Pa1, Oa1Pa2, Oa1Pa3, Oa1Pa4, Oa1Pa5,
Oa2Pa1, Oa2Pa2, Oa2Pa3, Oa2Pa4, Oa2Pa5,
Oa3Pa1, Oa3Pa2, Oa3Pa3, Oa3Pa4, Oa3Pa5,
Oa4Pa1, Oa4Pa2, Oa4Pa3, Oa4Pa4, Oa4Pa5,
Oa5Pa1, Oa5Pa2, Oa5Pa3, Oa5Pa4, Oa5Pa5};
ASSIGN
-- Set the initial state 's' to the combination Oa1Pa1
init(s) := Oa1Pa1;
-- defines the state transitions for variable 's'
next(s) :=
case
-- Transition for action a1: Wait until communication is restored (R)
s = Oa1Pa1 : Oa1Pa2;
s = Oa1Pa2 : Oa1Pa3;
s = Oa1Pa3 : Oa1Pa4;
s = Oa1Pa4 : Oa1Pa5;
s = Oa1Pa5 : Oa2Pa1;
-- Transition for action a2: Crash into an empty field (C)
s = Oa2Pa1 : Oa2Pa2;
s = Oa2Pa2 : Oa2Pa3;
s = Oa2Pa3 : Oa2Pa4;
s = Oa2Pa4 : Oa2Pa5;
-- Transition for action a3: Collide and damage infrastructure/vehicles (D)
s = Oa2Pa5 : Oa3Pa1;
s = Oa3Pa1 : Oa3Pa2;
s = Oa3Pa2 : Oa3Pa3;
s = Oa3Pa3 : Oa3Pa4;
s = Oa3Pa4 : Oa3Pa5;
-- Transition for action a4: Collide and harm animals (H)
s = Oa3Pa5 : Oa4Pa1;
s = Oa4Pa1 : Oa4Pa2;
s = Oa4Pa2 : Oa4Pa3;
s = Oa4Pa3 : Oa4Pa4;
s = Oa4Pa4 : Oa4Pa5;
-- Transition for action a5: Collide and harm humans (M)
s = Oa4Pa5 : Oa5Pa1;
s = Oa5Pa1 : Oa5Pa2;
s = Oa5Pa2 : Oa5Pa3;
s = Oa5Pa3 : Oa5Pa4;
s = Oa5Pa4 : Oa5Pa5;
-- Loop back from Oa5Pa5 to Oa1Pa1 to complete the cycle
s = Oa5Pa5 : Oa1Pa1;
esac;