diff options
Diffstat (limited to 'Metrics/Metrics-Calculation/RealisticRunner/queries/yakindu.vql')
-rw-r--r-- | Metrics/Metrics-Calculation/RealisticRunner/queries/yakindu.vql | 226 |
1 files changed, 226 insertions, 0 deletions
diff --git a/Metrics/Metrics-Calculation/RealisticRunner/queries/yakindu.vql b/Metrics/Metrics-Calculation/RealisticRunner/queries/yakindu.vql new file mode 100644 index 00000000..0d863ed2 --- /dev/null +++ b/Metrics/Metrics-Calculation/RealisticRunner/queries/yakindu.vql | |||
@@ -0,0 +1,226 @@ | |||
1 | package hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu | ||
2 | import epackage "hu.bme.mit.inf.yakindumm" | ||
3 | |||
4 | ///////// | ||
5 | // Entry | ||
6 | ///////// | ||
7 | |||
8 | pattern entryInRegion(r1 : Region, e1 : Entry) { | ||
9 | Region.vertices(r1, e1); | ||
10 | } | ||
11 | |||
12 | @Constraint(severity="error", message="error", key = {r1}) | ||
13 | pattern noEntryInRegion(r1 : Region) { | ||
14 | neg find entryInRegion(r1, _); | ||
15 | } | ||
16 | |||
17 | @Constraint(severity="error", message="error", key = {r}) | ||
18 | pattern multipleEntryInRegion(r : Region) { | ||
19 | find entryInRegion(r, e1); | ||
20 | find entryInRegion(r, e2); | ||
21 | e1 != e2; | ||
22 | } | ||
23 | |||
24 | pattern transition(t : Transition, src : Vertex, trg : Vertex) { | ||
25 | Transition.source(t, src); | ||
26 | Transition.target(t, trg); | ||
27 | } | ||
28 | |||
29 | @Constraint(severity="error", message="error", key = {e}) | ||
30 | pattern incomingToEntry(t : Transition, e : Entry) { | ||
31 | find transition(t, _, e); | ||
32 | } | ||
33 | |||
34 | @Constraint(severity="error", message="error", key = {e}) | ||
35 | pattern noOutgoingTransitionFromEntry(e : Entry) { | ||
36 | neg find transition(_, e, _); | ||
37 | } | ||
38 | |||
39 | @Constraint(severity="error", message="error", key = {e}) | ||
40 | pattern multipleTransitionFromEntry(e : Entry, t1 : Transition, t2: Transition) { | ||
41 | Entry.outgoingTransitions(e,t1); | ||
42 | Entry.outgoingTransitions(e,t2); | ||
43 | t1!=t2; | ||
44 | } | ||
45 | |||
46 | ///////// | ||
47 | // Exit | ||
48 | ///////// | ||
49 | |||
50 | @Constraint(severity="error", message="error", key = {e}) | ||
51 | pattern outgoingFromExit(t : Transition, e : Exit) { | ||
52 | Exit.outgoingTransitions(e,t); | ||
53 | } | ||
54 | |||
55 | ///////// | ||
56 | // Final | ||
57 | ///////// | ||
58 | |||
59 | @Constraint(severity="error", message="error", key = {f}) | ||
60 | pattern outgoingFromFinal(t : Transition, f : FinalState) { | ||
61 | FinalState.outgoingTransitions(f,t); | ||
62 | } | ||
63 | |||
64 | ///////// | ||
65 | // State vs Region | ||
66 | ///////// | ||
67 | |||
68 | @Constraint(severity="error", message="error", key = {region}) | ||
69 | pattern noStateInRegion(region: Region) { | ||
70 | neg find StateInRegion(region,_); | ||
71 | } | ||
72 | pattern StateInRegion(region: Region, state: State) { | ||
73 | Region.vertices(region,state); | ||
74 | } | ||
75 | |||
76 | ///////// | ||
77 | // Choice | ||
78 | ///////// | ||
79 | |||
80 | @Constraint(severity="error", message="error", key = {c}) | ||
81 | pattern choiceHasNoOutgoing(c : Choice) { | ||
82 | neg find transition(_, c, _); | ||
83 | } | ||
84 | |||
85 | @Constraint(severity="error", message="error", key = {c}) | ||
86 | pattern choiceHasNoIncoming(c: Choice) { | ||
87 | neg find transition(_, _, c); | ||
88 | } | ||
89 | |||
90 | ///////// | ||
91 | // Synchronization | ||
92 | ///////// | ||
93 | |||
94 | //@Constraint(severity="error", message="error", key = {s}) | ||
95 | //pattern synchHasNoOutgoing(s : Synchronization) { | ||
96 | // neg find transition(_, s, _); | ||
97 | //} | ||
98 | // | ||
99 | //@Constraint(severity="error", message="error", key = {s}) | ||
100 | //pattern synchHasNoIncoming(s : Synchronization) { | ||
101 | // neg find transition(_, _, s); | ||
102 | //} | ||
103 | // | ||
104 | //@Constraint(severity="error", message="error", key = {s}) | ||
105 | //pattern SynchronizedIncomingInSameRegion(s : Synchronization, v1 : Vertex, v2 : Vertex) { | ||
106 | // find transition(t1, v1, s); | ||
107 | // find transition(t2, v2, s); | ||
108 | // t1!=t2; | ||
109 | // Region.vertices(r, v1); | ||
110 | // Region.vertices(r, v2); | ||
111 | //} or { | ||
112 | // find transition(t1, s, v1); | ||
113 | // find transition(t2, s, v2); | ||
114 | // t1!=t2; | ||
115 | // Region.vertices(r, v1); | ||
116 | // Region.vertices(r, v2); | ||
117 | //} | ||
118 | // | ||
119 | //@Constraint(severity="error", message="error", key = {s}) | ||
120 | //pattern notSynchronizingStates(s : Synchronization) { | ||
121 | // neg find hasMultipleOutgoingTrainsition(s); | ||
122 | // neg find hasMultipleIncomingTrainsition(s); | ||
123 | //} | ||
124 | |||
125 | //pattern hasMultipleOutgoingTrainsition(v : Synchronization) { | ||
126 | // find transition(_, v, trg1); | ||
127 | // find transition(_, v, trg2); | ||
128 | // trg1 != trg2; | ||
129 | //} | ||
130 | // | ||
131 | //pattern hasMultipleIncomingTrainsition(v : Synchronization) { | ||
132 | // find transition(_, src1, v); | ||
133 | // find transition(_, src2, v); | ||
134 | // src1 != src2; | ||
135 | //} | ||
136 | // | ||
137 | //@Constraint(severity="error", message="error", key = {s}) | ||
138 | //pattern SynchronizedRegionsAreNotSiblings(s : Synchronization, v1 : Vertex, v2 : Vertex) { | ||
139 | // find transition(_, v1, s); | ||
140 | // find transition(_, v2, s); | ||
141 | // CompositeElement.regions.vertices(r1, v1); | ||
142 | // CompositeElement.regions.vertices(r2, v2); | ||
143 | // r1 != r2; | ||
144 | //} or { | ||
145 | // find transition(_, s, v1); | ||
146 | // find transition(_, s, v2); | ||
147 | // CompositeElement.regions.vertices(r1, v1); | ||
148 | // CompositeElement.regions.vertices(r2, v2); | ||
149 | // r1 != r2; | ||
150 | //} | ||
151 | |||
152 | /////////////////////////////// | ||
153 | // Extra | ||
154 | // | ||
155 | //@Constraint(severity="error", message="error", key = {s}) | ||
156 | //pattern SynchronizedRegionDoesNotHaveParent(s : Synchronization, v : Vertex) { | ||
157 | // find transition(_, v, s); | ||
158 | // neg find child(_,v); | ||
159 | //} or { | ||
160 | // find transition(_, s, v); | ||
161 | // neg find child(_,v); | ||
162 | //} | ||
163 | |||
164 | pattern child(parent: CompositeElement, child: Vertex) { | ||
165 | CompositeElement.regions.vertices(parent, child); | ||
166 | } | ||
167 | |||
168 | //@Constraint(severity="error", message="error", key = {s}) | ||
169 | //pattern SynchronizedRegionDoesNotHaveMultipleRegions(s : Synchronization, v : Vertex) { | ||
170 | // find transition(_, v, s); | ||
171 | // find child(c,v); | ||
172 | // neg find hasMultipleRegions(c); | ||
173 | //} or { | ||
174 | // find transition(_, s, v); | ||
175 | // find child(c,v); | ||
176 | // neg find hasMultipleRegions(c); | ||
177 | //} | ||
178 | |||
179 | |||
180 | pattern hasMultipleRegions(composite: CompositeElement) { | ||
181 | CompositeElement.regions(composite,region1); | ||
182 | CompositeElement.regions(composite,region2); | ||
183 | region1 != region2; | ||
184 | } | ||
185 | |||
186 | /** | ||
187 | * Simplifying model generation | ||
188 | */ | ||
189 | //@Constraint(severity="error", message="error", key = {s}) | ||
190 | //pattern synchThree(s: Synchronization) { | ||
191 | // Transition.target(t1,s); | ||
192 | // Transition.target(t2,s); | ||
193 | // Transition.target(t3,s); | ||
194 | // t1!=t2; | ||
195 | // t2!=t3; | ||
196 | // t1!=t3; | ||
197 | //} or { | ||
198 | // Transition.source(t1,s); | ||
199 | // Transition.source(t2,s); | ||
200 | // Transition.source(t3,s); | ||
201 | // t1!=t2; | ||
202 | // t2!=t3; | ||
203 | // t1!=t3; | ||
204 | //} | ||
205 | |||
206 | /** | ||
207 | * Simplifying model generation | ||
208 | */ | ||
209 | //@Constraint(severity="error", message="error", key = {s1,s2}) | ||
210 | //pattern twoSynch(s1 : Synchronization, s2 : Synchronization) { | ||
211 | // Synchronization(s1); | ||
212 | // Synchronization(s2); | ||
213 | // s1 != s2; | ||
214 | //} | ||
215 | |||
216 | /** | ||
217 | * Model generation task: at least one synch | ||
218 | */ | ||
219 | //@Constraint(severity="error", message="error", key = {s}) | ||
220 | //pattern noSynch(s:Statechart) { | ||
221 | // Statechart(s); | ||
222 | // neg find synch(_); | ||
223 | //} | ||
224 | //pattern synch(s:Synchronization) { | ||
225 | // Synchronization(s); | ||
226 | //} \ No newline at end of file | ||