aboutsummaryrefslogtreecommitdiffstats
path: root/Domains/hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph/queries/hu/bme/mit/inf/dslreasoner/partialsnapshot_mavo/yakindu/patterns.vql
diff options
context:
space:
mode:
authorLibravatar OszkarSemerath <oszka@152.66.252.189>2017-06-10 19:05:05 +0200
committerLibravatar OszkarSemerath <oszka@152.66.252.189>2017-06-10 19:05:05 +0200
commit60f01f46ba232ed6416054f0a6115cb2a9b70b4e (patch)
tree5edf8aeb07abc51f3fec63bbd15c926e1de09552 /Domains/hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph/queries/hu/bme/mit/inf/dslreasoner/partialsnapshot_mavo/yakindu/patterns.vql
parentInitial commit, migrating from SVN (diff)
downloadVIATRA-Generator-60f01f46ba232ed6416054f0a6115cb2a9b70b4e.tar.gz
VIATRA-Generator-60f01f46ba232ed6416054f0a6115cb2a9b70b4e.tar.zst
VIATRA-Generator-60f01f46ba232ed6416054f0a6115cb2a9b70b4e.zip
Migrating Additional projects
Diffstat (limited to 'Domains/hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph/queries/hu/bme/mit/inf/dslreasoner/partialsnapshot_mavo/yakindu/patterns.vql')
-rw-r--r--Domains/hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph/queries/hu/bme/mit/inf/dslreasoner/partialsnapshot_mavo/yakindu/patterns.vql196
1 files changed, 196 insertions, 0 deletions
diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph/queries/hu/bme/mit/inf/dslreasoner/partialsnapshot_mavo/yakindu/patterns.vql b/Domains/hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph/queries/hu/bme/mit/inf/dslreasoner/partialsnapshot_mavo/yakindu/patterns.vql
new file mode 100644
index 00000000..a4c3125d
--- /dev/null
+++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph/queries/hu/bme/mit/inf/dslreasoner/partialsnapshot_mavo/yakindu/patterns.vql
@@ -0,0 +1,196 @@
1package hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu
2
3import epackage "hu.bme.mit.inf.yakindumm"
4
5pattern entryInRegion(r1 : Region, e1 : Entry) {
6 Region.vertices(r1, e1);
7}
8
9@Constraint(severity="error", message="error", key = {r1})
10pattern noEntryInRegion(r1 : Region) {
11 neg find entryInRegion(r1, _);
12}
13
14@Constraint(severity="error", message="error", key = {r})
15pattern multipleEntryInRegion(r : Region) {
16 find entryInRegion(r, e1);
17 find entryInRegion(r, e2);
18 e1 != e2;
19}
20
21pattern transition(t : Transition, src : Vertex, trg : Vertex) {
22 Transition.source(t, src);
23 Transition.target(t, trg);
24}
25
26@Constraint(severity="error", message="error", key = {e})
27pattern incomingToEntry(t : Transition, e : Entry) {
28 find transition(t, _, e);
29}
30
31@Constraint(severity="error", message="error", key = {e})
32pattern noOutgoingTransitionFromEntry(e : Entry) {
33 neg find transition(_, e, _);
34}
35
36@Constraint(severity="error", message="error", key = {e})
37pattern multipleTransitionFromEntry(e : Entry, t1 : Transition, t2: Transition) {
38 Entry.outgoingTransitions(e,t1);
39 Entry.outgoingTransitions(e,t2);
40 t1!=t2;
41}
42
43@Constraint(severity="error", message="error", key = {s})
44pattern hasNoOutgoing(s : Synchronization) {
45 neg find transition(_, s, _);
46}
47
48@Constraint(severity="error", message="error", key = {s})
49pattern hasNoIncoming(s : Synchronization) {
50 neg find transition(_, _, s);
51}
52
53pattern StateInRegion(region: Region, state: State) {
54 Region.vertices(region,state);
55}
56
57@Constraint(severity="error", message="error", key = {s})
58pattern SynchronizedIncomingInSameRegion(s : Synchronization, v1 : Vertex, v2 : Vertex) {
59 find transition(t1, v1, s);
60 find transition(t2, v2, s);
61 t1!=t2;
62 Region.vertices(r, v1);
63 Region.vertices(r, v2);
64} or {
65 find transition(t1, s, v1);
66 find transition(t2, s, v2);
67 t1!=t2;
68 Region.vertices(r, v1);
69 Region.vertices(r, v2);
70}
71
72@Constraint(severity="error", message="error", key = {region})
73pattern noStateInRegion(region: Region) {
74 neg find StateInRegion(region,_);
75}
76
77@Constraint(severity="error", message="error", key = {s})
78pattern notSynchronizingStates(s : Synchronization) {
79 neg find hasMultipleOutgoingTrainsition(s);
80 neg find hasMultipleIncomingTrainsition(s);
81}
82
83pattern hasMultipleOutgoingTrainsition(v : Synchronization) {
84 find transition(_, v, trg1);
85 find transition(_, v, trg2);
86 trg1 != trg2;
87}
88
89pattern hasMultipleIncomingTrainsition(v : Synchronization) {
90 find transition(_, src1, v);
91 find transition(_, src2, v);
92 src1 != src2;
93}
94
95@Constraint(severity="error", message="error", key = {s})
96pattern SynchronizedRegionsAreNotSiblings(s : Synchronization, v1 : Vertex, v2 : Vertex) {
97 find transition(_, v1, s);
98 find transition(_, v2, s);
99 CompositeElement.regions.vertices(r1, v1);
100 CompositeElement.regions.vertices(r2, v2);
101 r1 != r2;
102} or {
103 find transition(_, s, v1);
104 find transition(_, s, v2);
105 CompositeElement.regions.vertices(r1, v1);
106 CompositeElement.regions.vertices(r2, v2);
107 r1 != r2;
108}
109
110///////////////////////////////
111// Extra
112//
113//@Constraint(severity="error", message="error", key = {s})
114//pattern SynchronizedRegionDoesNotHaveParent(s : Synchronization, v : Vertex) {
115// find transition(_, v, s);
116// neg find child(_,v);
117//} or {
118// find transition(_, s, v);
119// neg find child(_,v);
120//}
121
122pattern child(parent: CompositeElement, child: Vertex) {
123 CompositeElement.regions.vertices(parent, child);
124}
125
126@Constraint(severity="error", message="error", key = {s})
127pattern SynchronizedRegionDoesNotHaveMultipleRegions(s : Synchronization, v : Vertex) {
128 find transition(_, v, s);
129 find child(c,v);
130 neg find hasMultipleRegions(c);
131} or {
132 find transition(_, s, v);
133 find child(c,v);
134 neg find hasMultipleRegions(c);
135}
136
137
138pattern hasMultipleRegions(composite: CompositeElement) {
139 CompositeElement.regions(composite,region1);
140 CompositeElement.regions(composite,region2);
141 region1 != region2;
142}
143
144// multiplicity constraints
145@Constraint(severity="error", message="error", key = {s})
146pattern synchThree(s: Synchronization) {
147 Transition.target(t1,s);
148 Transition.target(t2,s);
149 Transition.target(t3,s);
150 t1!=t2;
151 t2!=t3;
152 t1!=t3;
153} or {
154 Transition.source(t1,s);
155 Transition.source(t2,s);
156 Transition.source(t3,s);
157 t1!=t2;
158 t2!=t3;
159 t1!=t3;
160}
161
162@Constraint(severity="error", message="error", key = {s1,s2})
163pattern twoSynch(s1 : Synchronization, s2 : Synchronization) {
164 Synchronization(s1);
165 Synchronization(s2);
166 s1 != s2;
167}
168
169pattern synch(s:Synchronization) {
170 Synchronization(s);
171}
172@Constraint(severity="error", message="error", key = {s})
173pattern noSynch(s:Statechart) {
174 Statechart(s);
175 neg find synch(_);
176}
177@Constraint(severity="error", message="error", key = {s})
178pattern noSynch1(s:Statechart) {
179 Statechart(s);
180 neg find synch(_);
181}
182@Constraint(severity="error", message="error", key = {s})
183pattern noSynch2(s:Statechart) {
184 Statechart(s);
185 neg find synch(_);
186}
187@Constraint(severity="error", message="error", key = {s})
188pattern noSynch3(s:Statechart) {
189 Statechart(s);
190 neg find synch(_);
191}
192@Constraint(severity="error", message="error", key = {s})
193pattern noSynch4(s:Statechart) {
194 Statechart(s);
195 neg find synch(_);
196} \ No newline at end of file