aboutsummaryrefslogtreecommitdiffstats
path: root/Application/org.eclipse.viatra.solver.language/model/SolverLanguage.ecore
diff options
context:
space:
mode:
Diffstat (limited to 'Application/org.eclipse.viatra.solver.language/model/SolverLanguage.ecore')
-rw-r--r--Application/org.eclipse.viatra.solver.language/model/SolverLanguage.ecore291
1 files changed, 291 insertions, 0 deletions
diff --git a/Application/org.eclipse.viatra.solver.language/model/SolverLanguage.ecore b/Application/org.eclipse.viatra.solver.language/model/SolverLanguage.ecore
new file mode 100644
index 00000000..905e5a90
--- /dev/null
+++ b/Application/org.eclipse.viatra.solver.language/model/SolverLanguage.ecore
@@ -0,0 +1,291 @@
1<?xml version="1.0" encoding="UTF-8"?>
2<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3 xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="solverLanguage" nsURI="http://www.eclipse.org/viatra/solver/language/SolverLanguage"
4 nsPrefix="solverLanguage">
5 <eClassifiers xsi:type="ecore:EClass" name="Problem">
6 <eStructuralFeatures xsi:type="ecore:EReference" name="statements" upperBound="-1"
7 eType="#//Statement" containment="true"/>
8 </eClassifiers>
9 <eClassifiers xsi:type="ecore:EClass" name="Statement"/>
10 <eClassifiers xsi:type="ecore:EClass" name="PredicateDefinition" eSuperTypes="#//Statement">
11 <eStructuralFeatures xsi:type="ecore:EReference" name="head" eType="#//Expression"
12 containment="true"/>
13 <eStructuralFeatures xsi:type="ecore:EReference" name="body" eType="#//Expression"
14 containment="true"/>
15 <eStructuralFeatures xsi:type="ecore:EAttribute" name="functional" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
16 <eStructuralFeatures xsi:type="ecore:EAttribute" name="error" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
17 </eClassifiers>
18 <eClassifiers xsi:type="ecore:EClass" name="UnnamedErrorPrediateDefinition" eSuperTypes="#//Statement">
19 <eStructuralFeatures xsi:type="ecore:EReference" name="argumentList" eType="#//ArgumentList"
20 containment="true"/>
21 <eStructuralFeatures xsi:type="ecore:EReference" name="body" eType="#//Expression"
22 containment="true"/>
23 </eClassifiers>
24 <eClassifiers xsi:type="ecore:EClass" name="DefaultDefinition" eSuperTypes="#//Statement">
25 <eStructuralFeatures xsi:type="ecore:EReference" name="head" eType="#//Call" containment="true"/>
26 <eStructuralFeatures xsi:type="ecore:EReference" name="range" eType="#//Expression"
27 containment="true"/>
28 </eClassifiers>
29 <eClassifiers xsi:type="ecore:EClass" name="MetricDefinition" eSuperTypes="#//Statement">
30 <eStructuralFeatures xsi:type="ecore:EReference" name="head" eType="#//Expression"
31 containment="true"/>
32 <eStructuralFeatures xsi:type="ecore:EReference" name="body" eType="#//Expression"
33 containment="true"/>
34 <eStructuralFeatures xsi:type="ecore:EReference" name="type" eType="#//NamedElement"/>
35 </eClassifiers>
36 <eClassifiers xsi:type="ecore:EClass" name="ExternPredicateDefinition" eSuperTypes="#//Statement">
37 <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
38 <eStructuralFeatures xsi:type="ecore:EReference" name="argumentList" eType="#//ArgumentList"
39 containment="true"/>
40 </eClassifiers>
41 <eClassifiers xsi:type="ecore:EClass" name="ExternMetricDefinition" eSuperTypes="#//Statement">
42 <eStructuralFeatures xsi:type="ecore:EReference" name="type" eType="#//NamedElement"/>
43 <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
44 <eStructuralFeatures xsi:type="ecore:EReference" name="argumentList" eType="#//ArgumentList"
45 containment="true"/>
46 </eClassifiers>
47 <eClassifiers xsi:type="ecore:EClass" name="ExternAggregatorDefinition" eSuperTypes="#//Statement">
48 <eStructuralFeatures xsi:type="ecore:EReference" name="type" eType="#//NamedElement"/>
49 <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
50 <eStructuralFeatures xsi:type="ecore:EReference" name="inputType" eType="#//NamedElement"/>
51 </eClassifiers>
52 <eClassifiers xsi:type="ecore:EClass" name="ExternDatatypeDefinition" eSuperTypes="#//Statement">
53 <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
54 <eStructuralFeatures xsi:type="ecore:EReference" name="supertypes" unique="false"
55 upperBound="-1" eType="#//NamedElement"/>
56 </eClassifiers>
57 <eClassifiers xsi:type="ecore:EClass" name="NamedElement">
58 <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
59 </eClassifiers>
60 <eClassifiers xsi:type="ecore:EClass" name="Expression" abstract="true" eSuperTypes="#//Statement"/>
61 <eClassifiers xsi:type="ecore:EClass" name="IfElse" eSuperTypes="#//Expression">
62 <eStructuralFeatures xsi:type="ecore:EReference" name="then" eType="#//Expression"
63 containment="true"/>
64 <eStructuralFeatures xsi:type="ecore:EReference" name="else" eType="#//Expression"
65 containment="true"/>
66 <eStructuralFeatures xsi:type="ecore:EReference" name="condition" eType="#//Expression"
67 containment="true"/>
68 </eClassifiers>
69 <eClassifiers xsi:type="ecore:EClass" name="Let" eSuperTypes="#//Expression">
70 <eStructuralFeatures xsi:type="ecore:EReference" name="bindings" upperBound="-1"
71 eType="#//LetBinding" containment="true"/>
72 <eStructuralFeatures xsi:type="ecore:EReference" name="body" eType="#//Expression"
73 containment="true"/>
74 </eClassifiers>
75 <eClassifiers xsi:type="ecore:EClass" name="LetBinding">
76 <eStructuralFeatures xsi:type="ecore:EReference" name="variable" eType="#//NamedElement"
77 containment="true"/>
78 <eStructuralFeatures xsi:type="ecore:EReference" name="value" eType="#//Expression"
79 containment="true"/>
80 </eClassifiers>
81 <eClassifiers xsi:type="ecore:EClass" name="Case" eSuperTypes="#//Expression">
82 <eStructuralFeatures xsi:type="ecore:EReference" name="body" eType="#//Expression"
83 containment="true"/>
84 <eStructuralFeatures xsi:type="ecore:EReference" name="condition" eType="#//Expression"
85 containment="true"/>
86 </eClassifiers>
87 <eClassifiers xsi:type="ecore:EEnum" name="BinaryOperator">
88 <eLiterals name="EQ" literal="EQ"/>
89 <eLiterals name="NOT_EQ" value="1" literal="NOT_EQ"/>
90 <eLiterals name="LESS" value="2" literal="LESS"/>
91 <eLiterals name="LESS_EQ" value="3" literal="LESS_EQ"/>
92 <eLiterals name="GREATER" value="4" literal="GREATER"/>
93 <eLiterals name="GREATER_EQ" value="5" literal="GREATER_EQ"/>
94 <eLiterals name="IN" value="6" literal="IN"/>
95 <eLiterals name="ADD" value="7" literal="ADD"/>
96 <eLiterals name="SUB" value="8" literal="SUB"/>
97 <eLiterals name="MUL" value="9" literal="MUL"/>
98 <eLiterals name="DIV" value="10" literal="DIV"/>
99 <eLiterals name="POW" value="11" literal="POW"/>
100 <eLiterals name="IMPLIES" value="12"/>
101 </eClassifiers>
102 <eClassifiers xsi:type="ecore:EEnum" name="UnaryOp">
103 <eLiterals name="NEG" literal="!"/>
104 <eLiterals name="PLUS" value="1" literal="+"/>
105 <eLiterals name="MINUS" value="2" literal="-"/>
106 <eLiterals name="MAY" value="3" literal="may"/>
107 <eLiterals name="MUST" value="4" literal="must"/>
108 <eLiterals name="CURRENT" value="5" literal="current"/>
109 </eClassifiers>
110 <eClassifiers xsi:type="ecore:EClass" name="LocalVariables">
111 <eStructuralFeatures xsi:type="ecore:EReference" name="variables" upperBound="-1"
112 eType="#//NamedElement" containment="true"/>
113 </eClassifiers>
114 <eClassifiers xsi:type="ecore:EClass" name="QuantifiedExpression" eSuperTypes="#//Expression">
115 <eStructuralFeatures xsi:type="ecore:EReference" name="localVariables" eType="#//LocalVariables"
116 containment="true"/>
117 <eStructuralFeatures xsi:type="ecore:EReference" name="body" eType="#//Expression"
118 containment="true"/>
119 <eStructuralFeatures xsi:type="ecore:EAttribute" name="quantifier" eType="#//Quantifier"/>
120 </eClassifiers>
121 <eClassifiers xsi:type="ecore:EClass" name="Aggregation" eSuperTypes="#//Expression">
122 <eStructuralFeatures xsi:type="ecore:EReference" name="op" eType="#//NamedElement"/>
123 <eStructuralFeatures xsi:type="ecore:EReference" name="localVariables" eType="#//LocalVariables"
124 containment="true"/>
125 <eStructuralFeatures xsi:type="ecore:EReference" name="body" eType="#//Expression"
126 containment="true"/>
127 <eStructuralFeatures xsi:type="ecore:EReference" name="condition" eType="#//Expression"
128 containment="true"/>
129 </eClassifiers>
130 <eClassifiers xsi:type="ecore:EClass" name="Call" eSuperTypes="#//Expression">
131 <eStructuralFeatures xsi:type="ecore:EReference" name="functor" eType="#//Reference"
132 containment="true"/>
133 <eStructuralFeatures xsi:type="ecore:EAttribute" name="transitiveClosure" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
134 <eStructuralFeatures xsi:type="ecore:EAttribute" name="reflexiveTransitiveClosure"
135 eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
136 <eStructuralFeatures xsi:type="ecore:EReference" name="argumentList" eType="#//ArgumentList"
137 containment="true"/>
138 </eClassifiers>
139 <eClassifiers xsi:type="ecore:EClass" name="ArgumentList">
140 <eStructuralFeatures xsi:type="ecore:EReference" name="arguments" upperBound="-1"
141 eType="#//Argument" containment="true"/>
142 </eClassifiers>
143 <eClassifiers xsi:type="ecore:EClass" name="Argument"/>
144 <eClassifiers xsi:type="ecore:EClass" name="ExpressionArgument" eSuperTypes="#//Argument">
145 <eStructuralFeatures xsi:type="ecore:EReference" name="body" eType="#//Expression"
146 containment="true"/>
147 </eClassifiers>
148 <eClassifiers xsi:type="ecore:EClass" name="StarArgument" eSuperTypes="#//Argument"/>
149 <eClassifiers xsi:type="ecore:EClass" name="TypedArgument" eSuperTypes="#//Argument">
150 <eStructuralFeatures xsi:type="ecore:EReference" name="type" eType="#//NamedElement"/>
151 <eStructuralFeatures xsi:type="ecore:EReference" name="variable" eType="#//NamedElement"/>
152 </eClassifiers>
153 <eClassifiers xsi:type="ecore:EClass" name="TypedStarArgument" eSuperTypes="#//Argument">
154 <eStructuralFeatures xsi:type="ecore:EReference" name="type" eType="#//NamedElement"/>
155 </eClassifiers>
156 <eClassifiers xsi:type="ecore:EClass" name="Reference" eSuperTypes="#//Expression">
157 <eStructuralFeatures xsi:type="ecore:EReference" name="referred" eType="#//NamedElement"/>
158 </eClassifiers>
159 <eClassifiers xsi:type="ecore:EClass" name="Interval" eSuperTypes="#//Expression">
160 <eStructuralFeatures xsi:type="ecore:EReference" name="lowerBound" eType="#//Expression"
161 containment="true"/>
162 <eStructuralFeatures xsi:type="ecore:EReference" name="upperBound" eType="#//Expression"
163 containment="true"/>
164 </eClassifiers>
165 <eClassifiers xsi:type="ecore:EClass" name="Literal" eSuperTypes="#//Expression"/>
166 <eClassifiers xsi:type="ecore:EEnum" name="LogicValue">
167 <eLiterals name="TRUE" literal="true"/>
168 <eLiterals name="FALSE" value="1" literal="false"/>
169 <eLiterals name="UNKNOWN" value="2" literal="unknown"/>
170 <eLiterals name="ERROR" value="3" literal="error"/>
171 </eClassifiers>
172 <eClassifiers xsi:type="ecore:EClass" name="LogicLiteral" eSuperTypes="#//Literal">
173 <eStructuralFeatures xsi:type="ecore:EAttribute" name="value" eType="#//LogicValue"/>
174 </eClassifiers>
175 <eClassifiers xsi:type="ecore:EClass" name="NumericLiteral" eSuperTypes="#//Literal">
176 <eStructuralFeatures xsi:type="ecore:EAttribute" name="value" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBigDecimal"/>
177 </eClassifiers>
178 <eClassifiers xsi:type="ecore:EClass" name="InfinityLiteral" eSuperTypes="#//Literal"/>
179 <eClassifiers xsi:type="ecore:EClass" name="EmptyIntervalLiteral" eSuperTypes="#//Literal"/>
180 <eClassifiers xsi:type="ecore:EClass" name="StringLiteral" eSuperTypes="#//Literal">
181 <eStructuralFeatures xsi:type="ecore:EAttribute" name="value" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
182 </eClassifiers>
183 <eClassifiers xsi:type="ecore:EClass" name="ClassDefinition" eSuperTypes="#//Statement">
184 <eStructuralFeatures xsi:type="ecore:EAttribute" name="abstract" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
185 <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
186 <eStructuralFeatures xsi:type="ecore:EReference" name="superclasses" unique="false"
187 upperBound="-1" eType="#//NamedElement"/>
188 <eStructuralFeatures xsi:type="ecore:EReference" name="members" upperBound="-1"
189 eType="#//MemberDefinition" containment="true"/>
190 </eClassifiers>
191 <eClassifiers xsi:type="ecore:EClass" name="MemberDefinition">
192 <eStructuralFeatures xsi:type="ecore:EAttribute" name="containment" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
193 <eStructuralFeatures xsi:type="ecore:EReference" name="type" eType="#//NamedElement"/>
194 <eStructuralFeatures xsi:type="ecore:EReference" name="multiplicity" eType="#//Multiplicity"
195 containment="true"/>
196 <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
197 <eStructuralFeatures xsi:type="ecore:EReference" name="opposite" eType="#//NamedElement"/>
198 </eClassifiers>
199 <eClassifiers xsi:type="ecore:EClass" name="Multiplicity"/>
200 <eClassifiers xsi:type="ecore:EClass" name="ManyMultiplicity" eSuperTypes="#//Multiplicity"/>
201 <eClassifiers xsi:type="ecore:EClass" name="ExactMultiplicity" eSuperTypes="#//Multiplicity">
202 <eStructuralFeatures xsi:type="ecore:EAttribute" name="multiplicity" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
203 </eClassifiers>
204 <eClassifiers xsi:type="ecore:EClass" name="BoundedMultiplicity" eSuperTypes="#//Multiplicity">
205 <eStructuralFeatures xsi:type="ecore:EAttribute" name="lowerBound" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
206 <eStructuralFeatures xsi:type="ecore:EAttribute" name="upperBound" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
207 </eClassifiers>
208 <eClassifiers xsi:type="ecore:EClass" name="ScopeDefinition" eSuperTypes="#//Statement">
209 <eStructuralFeatures xsi:type="ecore:EReference" name="type" eType="#//NamedElement"/>
210 </eClassifiers>
211 <eClassifiers xsi:type="ecore:EClass" name="ExactScopeDefinition" eSuperTypes="#//ScopeDefinition">
212 <eStructuralFeatures xsi:type="ecore:EAttribute" name="exactScope" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
213 </eClassifiers>
214 <eClassifiers xsi:type="ecore:EClass" name="BoundedScopeDefinition" eSuperTypes="#//ScopeDefinition">
215 <eStructuralFeatures xsi:type="ecore:EAttribute" name="lowerBound" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
216 <eStructuralFeatures xsi:type="ecore:EAttribute" name="upperBound" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
217 </eClassifiers>
218 <eClassifiers xsi:type="ecore:EClass" name="LowerBoundedScopeDefinition" eSuperTypes="#//ScopeDefinition">
219 <eStructuralFeatures xsi:type="ecore:EAttribute" name="lowerBound" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
220 </eClassifiers>
221 <eClassifiers xsi:type="ecore:EEnum" name="ObjectiveKind">
222 <eLiterals name="MINIMIZE" literal="minimize"/>
223 <eLiterals name="MAXIMIZE" value="1" literal="maximize"/>
224 </eClassifiers>
225 <eClassifiers xsi:type="ecore:EClass" name="ObjectiveDefinition" eSuperTypes="#//Statement">
226 <eStructuralFeatures xsi:type="ecore:EAttribute" name="kind" eType="#//ObjectiveKind"/>
227 <eStructuralFeatures xsi:type="ecore:EReference" name="objective" eType="#//Expression"
228 containment="true"/>
229 </eClassifiers>
230 <eClassifiers xsi:type="ecore:EClass" name="Interpretation" eSuperTypes="#//Statement">
231 <eStructuralFeatures xsi:type="ecore:EReference" name="body" eType="#//Expression"
232 containment="true"/>
233 <eStructuralFeatures xsi:type="ecore:EReference" name="range" eType="#//Expression"
234 containment="true"/>
235 </eClassifiers>
236 <eClassifiers xsi:type="ecore:EClass" name="Variable" eSuperTypes="#//NamedElement">
237 <eStructuralFeatures xsi:type="ecore:EReference" name="type" eType="#//NamedElement"/>
238 </eClassifiers>
239 <eClassifiers xsi:type="ecore:EClass" name="Disjunction" eSuperTypes="#//Expression">
240 <eStructuralFeatures xsi:type="ecore:EReference" name="children" upperBound="-1"
241 eType="#//Expression" containment="true"/>
242 </eClassifiers>
243 <eClassifiers xsi:type="ecore:EClass" name="Switch" eSuperTypes="#//Expression">
244 <eStructuralFeatures xsi:type="ecore:EReference" name="cases" upperBound="-1"
245 eType="#//Case" containment="true"/>
246 </eClassifiers>
247 <eClassifiers xsi:type="ecore:EClass" name="Conjunction" eSuperTypes="#//Expression">
248 <eStructuralFeatures xsi:type="ecore:EReference" name="children" upperBound="-1"
249 eType="#//Expression" containment="true"/>
250 </eClassifiers>
251 <eClassifiers xsi:type="ecore:EClass" name="Comparison" eSuperTypes="#//Expression">
252 <eStructuralFeatures xsi:type="ecore:EReference" name="left" eType="#//Expression"
253 containment="true"/>
254 <eStructuralFeatures xsi:type="ecore:EAttribute" name="op" eType="#//BinaryOperator"/>
255 <eStructuralFeatures xsi:type="ecore:EReference" name="right" eType="#//Expression"
256 containment="true"/>
257 </eClassifiers>
258 <eClassifiers xsi:type="ecore:EClass" name="BinaryExpression" eSuperTypes="#//Expression">
259 <eStructuralFeatures xsi:type="ecore:EReference" name="left" eType="#//Expression"
260 containment="true"/>
261 <eStructuralFeatures xsi:type="ecore:EAttribute" name="op" eType="#//BinaryOperator"/>
262 <eStructuralFeatures xsi:type="ecore:EReference" name="right" eType="#//Expression"
263 containment="true"/>
264 </eClassifiers>
265 <eClassifiers xsi:type="ecore:EClass" name="CastExpression" eSuperTypes="#//Expression">
266 <eStructuralFeatures xsi:type="ecore:EReference" name="body" eType="#//Expression"
267 containment="true"/>
268 <eStructuralFeatures xsi:type="ecore:EReference" name="type" eType="#//NamedElement"/>
269 </eClassifiers>
270 <eClassifiers xsi:type="ecore:EClass" name="UnaryExpression" eSuperTypes="#//Expression">
271 <eStructuralFeatures xsi:type="ecore:EAttribute" name="op" eType="#//UnaryOp"/>
272 <eStructuralFeatures xsi:type="ecore:EReference" name="body" eType="#//Expression"
273 containment="true"/>
274 </eClassifiers>
275 <eClassifiers xsi:type="ecore:EClass" name="Node" eSuperTypes="#//NamedElement">
276 <eStructuralFeatures xsi:type="ecore:EAttribute" name="withId" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
277 </eClassifiers>
278 <eClassifiers xsi:type="ecore:EClass" name="Functor" abstract="true" eSuperTypes="#//NamedElement">
279 <eStructuralFeatures xsi:type="ecore:EReference" name="parameters" upperBound="-1"
280 eType="#//Variable"/>
281 </eClassifiers>
282 <eClassifiers xsi:type="ecore:EClass" name="Predicate" eSuperTypes="#//Functor"/>
283 <eClassifiers xsi:type="ecore:EClass" name="Metric" eSuperTypes="#//Functor">
284 <eStructuralFeatures xsi:type="ecore:EReference" name="returnType" eType="#//NamedElement"/>
285 </eClassifiers>
286 <eClassifiers xsi:type="ecore:EEnum" name="Quantifier">
287 <eLiterals name="EXISTS"/>
288 <eLiterals name="FORALL" value="1"/>
289 <eLiterals name="COUNT" value="2"/>
290 </eClassifiers>
291</ecore:EPackage>