aboutsummaryrefslogtreecommitdiffstats
path: root/Domains/crossingScenario/queries/crossingScenarioQueries.vql
diff options
context:
space:
mode:
Diffstat (limited to 'Domains/crossingScenario/queries/crossingScenarioQueries.vql')
-rw-r--r--Domains/crossingScenario/queries/crossingScenarioQueries.vql167
1 files changed, 115 insertions, 52 deletions
diff --git a/Domains/crossingScenario/queries/crossingScenarioQueries.vql b/Domains/crossingScenario/queries/crossingScenarioQueries.vql
index 7089d0da..ee7c0b34 100644
--- a/Domains/crossingScenario/queries/crossingScenarioQueries.vql
+++ b/Domains/crossingScenario/queries/crossingScenarioQueries.vql
@@ -3,26 +3,18 @@ package queries
3import "http://www.example.com/crossingScenario" 3import "http://www.example.com/crossingScenario"
4import "http://www.eclipse.org/emf/2002/Ecore" 4import "http://www.eclipse.org/emf/2002/Ecore"
5 5
6////Minimal Failing Example 6//////Minimal Failing Example
7@Constraint(severity = "error", key = {l}, message = "this defines the placedOn relation") 7//@Constraint(severity = "error", key = {l}, message = "this defines the placedOn relation")
8pattern patterThatOnlyWorksWithInt(l : Lane) { 8//pattern patterThatOnlyWorksWithInt(l : Lane) {
9 Lane.referenceCoord(l, w); 9// Lane.referenceCoord(l, w);
10 check(w <= 0-10.0); 10// check(w <= 0-10.0);
11} 11//}
12 12
13////////////// 13//////////////
14//Lane 14//Lane
15////////////// 15//////////////
16 16
17/////////width, numWidth 17@Constraint(severity="error", key={l}, message="1 Lane")
18//@Constraint(severity="error", key={l}, message="x")
19//pattern define_numWidth_small1(l : Lane) {
20// Lane.width(l, Size::S_Small);
21// Lane.numWidth(l, nw);
22// check(nw >= 5.0);
23//}
24
25@Constraint(severity="error", key={l}, message="x")
26pattern define_numWidth_small(l : Lane) { 18pattern define_numWidth_small(l : Lane) {
27 Lane.width(l, Size::S_Small); 19 Lane.width(l, Size::S_Small);
28 Lane.numWidth(l, nw); 20 Lane.numWidth(l, nw);
@@ -33,7 +25,7 @@ pattern define_numWidth_small(l : Lane) {
33 check(nw >= 10.0); 25 check(nw >= 10.0);
34} 26}
35 27
36@Constraint(severity="error", key={l}, message="x") 28@Constraint(severity="error", key={l}, message="2 Lane")
37pattern define_numWidth_medium(l : Lane) { 29pattern define_numWidth_medium(l : Lane) {
38 Lane.width(l, ::S_Med); 30 Lane.width(l, ::S_Med);
39 Lane.numWidth(l, nw); 31 Lane.numWidth(l, nw);
@@ -45,7 +37,7 @@ or {
45 check(nw >= 15.0); 37 check(nw >= 15.0);
46} 38}
47 39
48@Constraint(severity="error", key={l}, message="x") 40@Constraint(severity="error", key={l}, message="3 Lane")
49pattern define_numWidth_large(l : Lane) { 41pattern define_numWidth_large(l : Lane) {
50 Lane.width(l, Size::S_Large); 42 Lane.width(l, Size::S_Large);
51 Lane.numWidth(l, nw); 43 Lane.numWidth(l, nw);
@@ -57,41 +49,112 @@ or {
57 check(nw >= 20.0); 49 check(nw >= 20.0);
58} 50}
59 51
60///////////referenceCoord 52/////////////Prevlane
61//@Constraint(severity="error", key={l}, message="x") 53
62//pattern define_referenceCoord_horizontalAtOrigin(l:Lane) { 54////////head lanes do not have prevLane
63// 1 == count find find_horizontalLaneAtOrigin(l); 55@Constraint(severity="error", key={l}, message="6.1 Lane")
64//} 56pattern define_prevLane_headVertLaneDoesNotHavePrevLane(cs:CrossingScenario, l:Lane_Vertical) {
65// 57 CrossingScenario.vertical_head(cs, l);
66//private pattern find_horizontalLaneAtOrigin(l:Lane){ 58 Lane.prevLane(l, _);
67// Lane.orientation(l, Orientation::Horizontal); 59}
68// Lane.referenceCoord(l, rc); 60
69// Lane.prevLane(l, _); 61@Constraint(severity="error", key={l}, message="6.2 Lane")
70// rc != 0.0; 62pattern define_prevLane_headHoriLaneDoesNotHavePrevLane(cs:CrossingScenario, l:Lane_Horizontal) {
71//} 63 CrossingScenario.horizontal_head(cs, l);
72// 64 Lane.prevLane(l, _);
73//@Constraint(severity="error", key={l}, message="x") 65}
74//pattern define_referenceCoord_verticalAtOrigin(l:Lane) { 66
75// 1 == count find find_verticalLaneAtOrigin(l); 67////////Non-head lanes must have prevLane
76//} 68@Constraint(severity="error", key={l}, message="6.1 Lane")
77// 69pattern define_prevLane_nonheadVertLaneHasPrevLane(l:Lane_Vertical) {
78//private pattern find_verticalLaneAtOrigin(l:Lane){ 70 neg find find_headVertLane(l);
79// Lane.orientation(l, Orientation::Vertical); 71 neg find find_laneWithPrevLane(l);
80// Lane.referenceCoord(l, rc); 72}
81// rc == 0.0; 73
82//} 74@Constraint(severity="error", key={l}, message="6.1 Lane")
83// 75pattern define_prevLane_nonheadHoriLaneHasPrevLane(l:Lane_Horizontal) {
84//pattern define_referenceCoord_VerticalifMultipleLanes(l1:Lane, l2:Lane) { 76 neg find find_headHoriLane(l);
85// //calculated risk??? 77 neg find find_laneWithPrevLane(l);
86// Lane.orientation(l1, Orientation::Vertical); 78}
87// Lane.orientation(l2, Orientation::Vertical); 79
88// Lane.referenceCoord(l1, rc1); 80private pattern find_headVertLane(l:Lane_Vertical) {
89// Lane.numWidth(l1, nw1); 81 CrossingScenario.vertical_head(_, l);
90// Lane.referenceCoord(l2, rc2); 82}
91// check(rc2 == rc1 + nw1); 83private pattern find_headHoriLane(l:Lane_Horizontal) {
92//} 84 CrossingScenario.horizontal_head(_, l);
93// 85}
94// 86private pattern find_laneWithPrevLane(l:Lane) {
87 Lane.prevLane(l, _);
88}
89
90/////////Lane cannot be its own recursive prevLane
91@Constraint(severity="error", key={l}, message="6.1 Lane")
92pattern define_prevLane_lanecannotBeItsOwnPrevLane(l:Lane) {
93 Lane.prevLane(l, l);
94}
95
96@Constraint(severity="error", key={l}, message="6.2 Lane")
97pattern define_prevLane_lanecannotBeItsOwnRecursivePrevLane(l:Lane) {
98 find find_prevLane+(l, l);
99}
100private pattern find_prevLane(l1:Lane, l2:Lane) {
101 Lane.prevLane(l1, l2);
102}
103
104//////Lane cannot be prevLane of >1 other lane
105@Constraint(severity="error", key={l1, l2}, message="7 Lane")
106pattern define_prevLane_lanecannotbeprevLaneof2lanes(l1:Lane, l2:Lane) {
107 Lane.prevLane(l1, l);
108 Lane.prevLane(l2, l);
109 l1 != l2;
110}
111
112//////consecutive lanes must have same orientation
113@Constraint(severity="error", key={l1, l2}, message="8 Lane")
114pattern define_prevLane_consecutiveLanesMustHaveSameOrientation1(l1:Lane_Horizontal, l2:Lane_Vertical) {
115 Lane.prevLane(l1, l2);
116}
117
118@Constraint(severity="error", key={l1, l2}, message="8 Lane")
119pattern define_prevLane_consecutiveLanesMustHaveSameOrientation2(l1:Lane_Vertical, l2:Lane_Horizontal) {
120 Lane.prevLane(l1, l2);
121}
122
123/////////////ReferenceCoord
124
125/////refCoord of head lanes must be 0
126@Constraint(severity="error", key={l}, message="6.2 Lane")
127pattern define_prevLane_headHoriLaneHas0RefCoord(cs:CrossingScenario, l:Lane_Horizontal) {
128 CrossingScenario.horizontal_head(cs, l);
129 Lane.referenceCoord(l, rc);
130 check(rc != 0.0);
131}
132
133@Constraint(severity="error", key={l}, message="6.2 Lane")
134pattern define_prevLane_headVertLaneHas0RefCoord(cs:CrossingScenario, l:Lane_Vertical) {
135 CrossingScenario.vertical_head(cs, l);
136 Lane.referenceCoord(l, rc);
137 check(rc != 0.0);
138}
139
140//////refCoord of a lane is prevLane.rc + curLane.numWidth
141
142@Constraint(severity="error", key={l}, message="6.2 Lane")
143pattern define_referenceCoord_laneWithPrevHasCorrectRefCoord(l:Lane) {
144 Lane.prevLane(l, prev);
145 Lane.referenceCoord(l, rcCur);
146
147 Lane.numWidth(prev, wPrev);
148 Lane.referenceCoord(prev, rcPrev);
149 check(rcCur != rcPrev + wPrev);
150}
151
152
153//////////////
154//Lane+Actor
155//////////////
156
157
95////@Constraint(severity = "error", key = {a}, message = "this defines the placedOn relation for vertical lanes") 158////@Constraint(severity = "error", key = {a}, message = "this defines the placedOn relation for vertical lanes")
96////pattern actorOnVerticalLane(a : Actor) { 159////pattern actorOnVerticalLane(a : Actor) {
97//// Actor.placedOn(a, l); 160//// Actor.placedOn(a, l);