aboutsummaryrefslogtreecommitdiffstats
path: root/subprojects/language-model/src/main/resources/model/problem.ecore
diff options
context:
space:
mode:
Diffstat (limited to 'subprojects/language-model/src/main/resources/model/problem.ecore')
-rw-r--r--subprojects/language-model/src/main/resources/model/problem.ecore139
1 files changed, 95 insertions, 44 deletions
diff --git a/subprojects/language-model/src/main/resources/model/problem.ecore b/subprojects/language-model/src/main/resources/model/problem.ecore
index 4ef023c1..3214da65 100644
--- a/subprojects/language-model/src/main/resources/model/problem.ecore
+++ b/subprojects/language-model/src/main/resources/model/problem.ecore
@@ -7,63 +7,54 @@
7 <eStructuralFeatures xsi:type="ecore:EReference" name="statements" upperBound="-1" 7 <eStructuralFeatures xsi:type="ecore:EReference" name="statements" upperBound="-1"
8 eType="#//Statement" containment="true"/> 8 eType="#//Statement" containment="true"/>
9 </eClassifiers> 9 </eClassifiers>
10 <eClassifiers xsi:type="ecore:EClass" name="Relation" abstract="true" eSuperTypes="#//NamedElement"/> 10 <eClassifiers xsi:type="ecore:EClass" name="ClassDeclaration" eSuperTypes="#//Statement #//Relation">
11 <eClassifiers xsi:type="ecore:EClass" name="ClassDeclaration" eSuperTypes="#//Relation #//Statement">
12 <eStructuralFeatures xsi:type="ecore:EAttribute" name="abstract" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/> 11 <eStructuralFeatures xsi:type="ecore:EAttribute" name="abstract" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
13 <eStructuralFeatures xsi:type="ecore:EReference" name="superTypes" upperBound="-1"
14 eType="#//Relation"/>
15 <eStructuralFeatures xsi:type="ecore:EReference" name="referenceDeclarations" 12 <eStructuralFeatures xsi:type="ecore:EReference" name="referenceDeclarations"
16 upperBound="-1" eType="#//ReferenceDeclaration" containment="true"/> 13 upperBound="-1" eType="#//ReferenceDeclaration" containment="true"/>
17 <eStructuralFeatures xsi:type="ecore:EReference" name="newNode" eType="#//Node" 14 <eStructuralFeatures xsi:type="ecore:EReference" name="newNode" eType="#//Node"
18 transient="true" containment="true"/> 15 transient="true" containment="true"/>
16 <eStructuralFeatures xsi:type="ecore:EReference" name="superTypes" upperBound="-1"
17 eType="#//Relation"/>
19 </eClassifiers> 18 </eClassifiers>
20 <eClassifiers xsi:type="ecore:EClass" name="ReferenceDeclaration" eSuperTypes="#//Relation"> 19 <eClassifiers xsi:type="ecore:EClass" name="ReferenceDeclaration" eSuperTypes="#//Relation">
21 <eStructuralFeatures xsi:type="ecore:EReference" name="referenceType" eType="#//Relation"/>
22 <eStructuralFeatures xsi:type="ecore:EReference" name="opposite" eType="#//ReferenceDeclaration"/> 20 <eStructuralFeatures xsi:type="ecore:EReference" name="opposite" eType="#//ReferenceDeclaration"/>
23 <eStructuralFeatures xsi:type="ecore:EReference" name="multiplicity" eType="#//Multiplicity" 21 <eStructuralFeatures xsi:type="ecore:EReference" name="multiplicity" eType="#//Multiplicity"
24 containment="true"/> 22 containment="true"/>
25 <eStructuralFeatures xsi:type="ecore:EAttribute" name="kind" eType="#//ReferenceKind"/> 23 <eStructuralFeatures xsi:type="ecore:EAttribute" name="kind" eType="#//ReferenceKind"/>
24 <eStructuralFeatures xsi:type="ecore:EReference" name="referenceType" eType="#//Relation"/>
26 </eClassifiers> 25 </eClassifiers>
27 <eClassifiers xsi:type="ecore:EClass" name="NamedElement" abstract="true"> 26 <eClassifiers xsi:type="ecore:EClass" name="NamedElement" abstract="true">
28 <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/> 27 <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
29 </eClassifiers> 28 </eClassifiers>
30 <eClassifiers xsi:type="ecore:EClass" name="PredicateDefinition" eSuperTypes="#//Relation #//ParametricDefinition"> 29 <eClassifiers xsi:type="ecore:EClass" name="PredicateDefinition" eSuperTypes="#//ParametricDefinition #//Relation">
31 <eStructuralFeatures xsi:type="ecore:EAttribute" name="kind" eType="#//PredicateKind"/> 30 <eStructuralFeatures xsi:type="ecore:EAttribute" name="kind" eType="#//PredicateKind"/>
31 <eStructuralFeatures xsi:type="ecore:EReference" name="bodies" upperBound="-1"
32 eType="#//Conjunction" containment="true"/>
32 </eClassifiers> 33 </eClassifiers>
33 <eClassifiers xsi:type="ecore:EClass" name="Parameter" eSuperTypes="#//Variable"> 34 <eClassifiers xsi:type="ecore:EClass" name="Parameter" eSuperTypes="#//Variable">
34 <eStructuralFeatures xsi:type="ecore:EReference" name="parameterType" eType="#//Relation"/>
35 <eStructuralFeatures xsi:type="ecore:EAttribute" name="modality" eType="#//Modality"/> 35 <eStructuralFeatures xsi:type="ecore:EAttribute" name="modality" eType="#//Modality"/>
36 <eStructuralFeatures xsi:type="ecore:EReference" name="parameterType" eType="#//Relation"/>
36 </eClassifiers> 37 </eClassifiers>
37 <eClassifiers xsi:type="ecore:EClass" name="Variable" abstract="true" eSuperTypes="#//VariableOrNode"/> 38 <eClassifiers xsi:type="ecore:EClass" name="Variable" abstract="true" eSuperTypes="#//VariableOrNode"/>
38 <eClassifiers xsi:type="ecore:EClass" name="Conjunction" eSuperTypes="#//ExistentialQuantifier"> 39 <eClassifiers xsi:type="ecore:EClass" name="Atom" eSuperTypes="#//Expr">
39 <eStructuralFeatures xsi:type="ecore:EReference" name="literals" upperBound="-1"
40 eType="#//Literal" containment="true"/>
41 </eClassifiers>
42 <eClassifiers xsi:type="ecore:EClass" name="Literal" abstract="true">
43 <eStructuralFeatures xsi:type="ecore:EAttribute" name="modality" eType="#//Modality"/>
44 </eClassifiers>
45 <eClassifiers xsi:type="ecore:EClass" name="Atom" eSuperTypes="#//Literal">
46 <eStructuralFeatures xsi:type="ecore:EReference" name="relation" eType="#//Relation"/>
47 <eStructuralFeatures xsi:type="ecore:EAttribute" name="transitiveClosure" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/> 40 <eStructuralFeatures xsi:type="ecore:EAttribute" name="transitiveClosure" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
48 <eStructuralFeatures xsi:type="ecore:EReference" name="arguments" upperBound="-1" 41 <eStructuralFeatures xsi:type="ecore:EReference" name="arguments" upperBound="-1"
49 eType="#//Argument" containment="true"/> 42 eType="#//Expr" containment="true"/>
43 <eStructuralFeatures xsi:type="ecore:EReference" name="relation" eType="#//Relation"/>
50 </eClassifiers> 44 </eClassifiers>
51 <eClassifiers xsi:type="ecore:EClass" name="ImplicitVariable" eSuperTypes="#//Variable"/> 45 <eClassifiers xsi:type="ecore:EClass" name="ImplicitVariable" eSuperTypes="#//Variable"/>
52 <eClassifiers xsi:type="ecore:EClass" name="CompoundLiteral" abstract="true" eSuperTypes="#//ExistentialQuantifier #//Literal">
53 <eStructuralFeatures xsi:type="ecore:EReference" name="atom" eType="#//Atom" containment="true"/>
54 </eClassifiers>
55 <eClassifiers xsi:type="ecore:EClass" name="ExistentialQuantifier" abstract="true" 46 <eClassifiers xsi:type="ecore:EClass" name="ExistentialQuantifier" abstract="true"
56 interface="true"> 47 interface="true">
57 <eStructuralFeatures xsi:type="ecore:EReference" name="implicitVariables" upperBound="-1" 48 <eStructuralFeatures xsi:type="ecore:EReference" name="implicitVariables" upperBound="-1"
58 eType="#//ImplicitVariable" transient="true" containment="true"/> 49 eType="#//ImplicitVariable" transient="true" containment="true"/>
59 </eClassifiers> 50 </eClassifiers>
60 <eClassifiers xsi:type="ecore:EClass" name="Assertion" eSuperTypes="#//Statement"> 51 <eClassifiers xsi:type="ecore:EClass" name="Assertion" eSuperTypes="#//Statement">
61 <eStructuralFeatures xsi:type="ecore:EReference" name="relation" eType="#//Relation"/>
62 <eStructuralFeatures xsi:type="ecore:EAttribute" name="value" eType="#//LogicValue"/> 52 <eStructuralFeatures xsi:type="ecore:EAttribute" name="value" eType="#//LogicValue"/>
63 <eStructuralFeatures xsi:type="ecore:EReference" name="arguments" upperBound="-1" 53 <eStructuralFeatures xsi:type="ecore:EReference" name="arguments" upperBound="-1"
64 eType="#//AssertionArgument" containment="true"/> 54 eType="#//AssertionArgument" containment="true"/>
65 <eStructuralFeatures xsi:type="ecore:EAttribute" name="default" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean" 55 <eStructuralFeatures xsi:type="ecore:EAttribute" name="default" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
66 defaultValueLiteral="false"/> 56 defaultValueLiteral="false"/>
57 <eStructuralFeatures xsi:type="ecore:EReference" name="relation" eType="#//Relation"/>
67 </eClassifiers> 58 </eClassifiers>
68 <eClassifiers xsi:type="ecore:EClass" name="Node" eSuperTypes="#//VariableOrNode"/> 59 <eClassifiers xsi:type="ecore:EClass" name="Node" eSuperTypes="#//VariableOrNode"/>
69 <eClassifiers xsi:type="ecore:EEnum" name="LogicValue"> 60 <eClassifiers xsi:type="ecore:EEnum" name="LogicValue">
@@ -78,10 +69,10 @@
78 </eClassifiers> 69 </eClassifiers>
79 <eClassifiers xsi:type="ecore:EClass" name="Statement" abstract="true" interface="true"/> 70 <eClassifiers xsi:type="ecore:EClass" name="Statement" abstract="true" interface="true"/>
80 <eClassifiers xsi:type="ecore:EClass" name="TypeScope"> 71 <eClassifiers xsi:type="ecore:EClass" name="TypeScope">
81 <eStructuralFeatures xsi:type="ecore:EReference" name="targetType" eType="#//Relation"/>
82 <eStructuralFeatures xsi:type="ecore:EAttribute" name="increment" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/> 72 <eStructuralFeatures xsi:type="ecore:EAttribute" name="increment" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
83 <eStructuralFeatures xsi:type="ecore:EReference" name="multiplicity" eType="#//Multiplicity" 73 <eStructuralFeatures xsi:type="ecore:EReference" name="multiplicity" eType="#//Multiplicity"
84 containment="true"/> 74 containment="true"/>
75 <eStructuralFeatures xsi:type="ecore:EReference" name="targetType" eType="#//Relation"/>
85 </eClassifiers> 76 </eClassifiers>
86 <eClassifiers xsi:type="ecore:EClass" name="Multiplicity" abstract="true"/> 77 <eClassifiers xsi:type="ecore:EClass" name="Multiplicity" abstract="true"/>
87 <eClassifiers xsi:type="ecore:EClass" name="RangeMultiplicity" eSuperTypes="#//Multiplicity"> 78 <eClassifiers xsi:type="ecore:EClass" name="RangeMultiplicity" eSuperTypes="#//Multiplicity">
@@ -95,12 +86,7 @@
95 defaultValueLiteral="1"/> 86 defaultValueLiteral="1"/>
96 </eClassifiers> 87 </eClassifiers>
97 <eClassifiers xsi:type="ecore:EClass" name="UnboundedMultiplicity" eSuperTypes="#//Multiplicity"/> 88 <eClassifiers xsi:type="ecore:EClass" name="UnboundedMultiplicity" eSuperTypes="#//Multiplicity"/>
98 <eClassifiers xsi:type="ecore:EClass" name="VariableOrNodeArgument" eSuperTypes="#//Argument"> 89 <eClassifiers xsi:type="ecore:EClass" name="EnumDeclaration" eSuperTypes="#//Statement #//Relation">
99 <eStructuralFeatures xsi:type="ecore:EReference" name="variableOrNode" eType="#//VariableOrNode"/>
100 <eStructuralFeatures xsi:type="ecore:EReference" name="singletonVariable" eType="#//ImplicitVariable"
101 transient="true" containment="true"/>
102 </eClassifiers>
103 <eClassifiers xsi:type="ecore:EClass" name="EnumDeclaration" eSuperTypes="#//Relation #//Statement">
104 <eStructuralFeatures xsi:type="ecore:EReference" name="literals" upperBound="-1" 90 <eStructuralFeatures xsi:type="ecore:EReference" name="literals" upperBound="-1"
105 eType="#//Node" containment="true"/> 91 eType="#//Node" containment="true"/>
106 </eClassifiers> 92 </eClassifiers>
@@ -117,11 +103,6 @@
117 <eClassifiers xsi:type="ecore:EClass" name="StringConstant" eSuperTypes="#//Constant"> 103 <eClassifiers xsi:type="ecore:EClass" name="StringConstant" eSuperTypes="#//Constant">
118 <eStructuralFeatures xsi:type="ecore:EAttribute" name="stringValue" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/> 104 <eStructuralFeatures xsi:type="ecore:EAttribute" name="stringValue" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
119 </eClassifiers> 105 </eClassifiers>
120 <eClassifiers xsi:type="ecore:EClass" name="ConstantArgument" eSuperTypes="#//Argument">
121 <eStructuralFeatures xsi:type="ecore:EReference" name="constant" eType="#//Constant"
122 containment="true"/>
123 </eClassifiers>
124 <eClassifiers xsi:type="ecore:EClass" name="Argument" abstract="true"/>
125 <eClassifiers xsi:type="ecore:EClass" name="NodeAssertionArgument" eSuperTypes="#//AssertionArgument"> 106 <eClassifiers xsi:type="ecore:EClass" name="NodeAssertionArgument" eSuperTypes="#//AssertionArgument">
126 <eStructuralFeatures xsi:type="ecore:EReference" name="node" eType="#//Node"/> 107 <eStructuralFeatures xsi:type="ecore:EReference" name="node" eType="#//Node"/>
127 </eClassifiers> 108 </eClassifiers>
@@ -130,6 +111,7 @@
130 <eStructuralFeatures xsi:type="ecore:EReference" name="constant" eType="#//Constant" 111 <eStructuralFeatures xsi:type="ecore:EReference" name="constant" eType="#//Constant"
131 containment="true"/> 112 containment="true"/>
132 <eStructuralFeatures xsi:type="ecore:EReference" name="node" eType="#//Node" containment="true"/> 113 <eStructuralFeatures xsi:type="ecore:EReference" name="node" eType="#//Node" containment="true"/>
114 <eStructuralFeatures xsi:type="ecore:EAttribute" name="negative" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
133 </eClassifiers> 115 </eClassifiers>
134 <eClassifiers xsi:type="ecore:EClass" name="NodeValueAssertion" eSuperTypes="#//Statement"> 116 <eClassifiers xsi:type="ecore:EClass" name="NodeValueAssertion" eSuperTypes="#//Statement">
135 <eStructuralFeatures xsi:type="ecore:EReference" name="node" eType="#//Node"/> 117 <eStructuralFeatures xsi:type="ecore:EReference" name="node" eType="#//Node"/>
@@ -143,14 +125,14 @@
143 <eClassifiers xsi:type="ecore:EClass" name="WildcardAssertionArgument" eSuperTypes="#//AssertionArgument"/> 125 <eClassifiers xsi:type="ecore:EClass" name="WildcardAssertionArgument" eSuperTypes="#//AssertionArgument"/>
144 <eClassifiers xsi:type="ecore:EClass" name="ParametricDefinition" abstract="true" 126 <eClassifiers xsi:type="ecore:EClass" name="ParametricDefinition" abstract="true"
145 interface="true" eSuperTypes="#//Statement"> 127 interface="true" eSuperTypes="#//Statement">
146 <eStructuralFeatures xsi:type="ecore:EReference" name="bodies" upperBound="-1"
147 eType="#//Conjunction" containment="true"/>
148 <eStructuralFeatures xsi:type="ecore:EReference" name="parameters" upperBound="-1" 128 <eStructuralFeatures xsi:type="ecore:EReference" name="parameters" upperBound="-1"
149 eType="#//Parameter" containment="true"/> 129 eType="#//Parameter" containment="true"/>
150 </eClassifiers> 130 </eClassifiers>
151 <eClassifiers xsi:type="ecore:EClass" name="RuleDefinition" eSuperTypes="#//ParametricDefinition #//NamedElement"> 131 <eClassifiers xsi:type="ecore:EClass" name="RuleDefinition" eSuperTypes="#//ParametricDefinition #//NamedElement">
152 <eStructuralFeatures xsi:type="ecore:EReference" name="consequents" upperBound="-1" 132 <eStructuralFeatures xsi:type="ecore:EReference" name="consequents" upperBound="-1"
153 eType="#//Consequent" containment="true"/> 133 eType="#//Consequent" containment="true"/>
134 <eStructuralFeatures xsi:type="ecore:EReference" name="preconditions" upperBound="-1"
135 eType="#//Conjunction" containment="true"/>
154 </eClassifiers> 136 </eClassifiers>
155 <eClassifiers xsi:type="ecore:EClass" name="Consequent"> 137 <eClassifiers xsi:type="ecore:EClass" name="Consequent">
156 <eStructuralFeatures xsi:type="ecore:EReference" name="actions" upperBound="-1" 138 <eStructuralFeatures xsi:type="ecore:EReference" name="actions" upperBound="-1"
@@ -174,17 +156,11 @@
174 </eClassifiers> 156 </eClassifiers>
175 <eClassifiers xsi:type="ecore:EClass" name="NewVariable" eSuperTypes="#//Variable"/> 157 <eClassifiers xsi:type="ecore:EClass" name="NewVariable" eSuperTypes="#//Variable"/>
176 <eClassifiers xsi:type="ecore:EEnum" name="Modality"> 158 <eClassifiers xsi:type="ecore:EEnum" name="Modality">
177 <eLiterals name="DEFAULT"/> 159 <eLiterals name="DEFAULT" value="1"/>
178 <eLiterals name="MAY" value="1"/> 160 <eLiterals name="MAY" value="2"/>
179 <eLiterals name="MUST" value="2"/> 161 <eLiterals name="MUST" value="3"/>
180 <eLiterals name="CURRENT" value="3"/> 162 <eLiterals name="CURRENT" value="3"/>
181 </eClassifiers> 163 </eClassifiers>
182 <eClassifiers xsi:type="ecore:EClass" name="NegativeLiteral" eSuperTypes="#//CompoundLiteral"/>
183 <eClassifiers xsi:type="ecore:EClass" name="CountLiteral" eSuperTypes="#//CompoundLiteral">
184 <eStructuralFeatures xsi:type="ecore:EAttribute" name="op" eType="#//ComparisonOp"/>
185 <eStructuralFeatures xsi:type="ecore:EAttribute" name="threshold" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"
186 defaultValueLiteral="0"/>
187 </eClassifiers>
188 <eClassifiers xsi:type="ecore:EEnum" name="ComparisonOp"> 164 <eClassifiers xsi:type="ecore:EEnum" name="ComparisonOp">
189 <eLiterals name="LESS"/> 165 <eLiterals name="LESS"/>
190 <eLiterals name="LESS_EQ" value="1"/> 166 <eLiterals name="LESS_EQ" value="1"/>
@@ -205,4 +181,79 @@
205 <eLiterals name="CONTAINED" value="2"/> 181 <eLiterals name="CONTAINED" value="2"/>
206 <eLiterals name="CONTAINMENT" value="3"/> 182 <eLiterals name="CONTAINMENT" value="3"/>
207 </eClassifiers> 183 </eClassifiers>
184 <eClassifiers xsi:type="ecore:EClass" name="Expr" abstract="true"/>
185 <eClassifiers xsi:type="ecore:EClass" name="VariableOrNodeExpr" eSuperTypes="#//Expr">
186 <eStructuralFeatures xsi:type="ecore:EReference" name="variableOrNode" eType="#//VariableOrNode"/>
187 <eStructuralFeatures xsi:type="ecore:EReference" name="singletonVariable" eType="#//ImplicitVariable"
188 containment="true"/>
189 </eClassifiers>
190 <eClassifiers xsi:type="ecore:EClass" name="BinaryExpr" abstract="true" eSuperTypes="#//Expr">
191 <eStructuralFeatures xsi:type="ecore:EReference" name="left" eType="#//Expr" containment="true"/>
192 <eStructuralFeatures xsi:type="ecore:EReference" name="right" eType="#//Expr"
193 containment="true"/>
194 </eClassifiers>
195 <eClassifiers xsi:type="ecore:EClass" name="UnaryExpr" abstract="true" eSuperTypes="#//Expr">
196 <eStructuralFeatures xsi:type="ecore:EReference" name="body" eType="#//Expr" containment="true"/>
197 </eClassifiers>
198 <eClassifiers xsi:type="ecore:EEnum" name="UnaryOp">
199 <eLiterals name="PLUS"/>
200 <eLiterals name="MINUS" value="1"/>
201 </eClassifiers>
202 <eClassifiers xsi:type="ecore:EEnum" name="BinaryOp">
203 <eLiterals name="ADD"/>
204 <eLiterals name="SUB" value="1"/>
205 <eLiterals name="MUL" value="2"/>
206 <eLiterals name="DIV" value="3"/>
207 <eLiterals name="POW" value="4"/>
208 </eClassifiers>
209 <eClassifiers xsi:type="ecore:EClass" name="ArithmeticUnaryExpr" eSuperTypes="#//UnaryExpr">
210 <eStructuralFeatures xsi:type="ecore:EAttribute" name="op" eType="#//UnaryOp"/>
211 </eClassifiers>
212 <eClassifiers xsi:type="ecore:EClass" name="AggregationExpr" eSuperTypes="#//Expr #//ExistentialQuantifier">
213 <eStructuralFeatures xsi:type="ecore:EReference" name="value" eType="#//Expr"
214 containment="true"/>
215 <eStructuralFeatures xsi:type="ecore:EReference" name="condition" eType="#//Expr"
216 containment="true"/>
217 <eStructuralFeatures xsi:type="ecore:EAttribute" name="op" eType="#//AggregationOp"/>
218 </eClassifiers>
219 <eClassifiers xsi:type="ecore:EEnum" name="AggregationOp">
220 <eLiterals name="SUM"/>
221 <eLiterals name="PROD" value="1"/>
222 <eLiterals name="MIN" value="2"/>
223 <eLiterals name="MAX" value="3"/>
224 </eClassifiers>
225 <eClassifiers xsi:type="ecore:EClass" name="ComparisonExpr" eSuperTypes="#//BinaryExpr">
226 <eStructuralFeatures xsi:type="ecore:EAttribute" name="op" eType="#//ComparisonOp"/>
227 </eClassifiers>
228 <eClassifiers xsi:type="ecore:EClass" name="ConstantExpr" eSuperTypes="#//Expr">
229 <eStructuralFeatures xsi:type="ecore:EReference" name="constant" eType="#//Constant"
230 containment="true"/>
231 </eClassifiers>
232 <eClassifiers xsi:type="ecore:EClass" name="QuantifiedUnaryExpr" abstract="true"
233 eSuperTypes="#//ExistentialQuantifier #//UnaryExpr"/>
234 <eClassifiers xsi:type="ecore:EClass" name="FunctionDefinition" eSuperTypes="#//ParametricDefinition #//Relation">
235 <eStructuralFeatures xsi:type="ecore:EReference" name="cases" upperBound="-1"
236 eType="#//Case" containment="true"/>
237 <eStructuralFeatures xsi:type="ecore:EReference" name="functionType" eType="#//Relation"/>
238 </eClassifiers>
239 <eClassifiers xsi:type="ecore:EClass" name="Case" abstract="true"/>
240 <eClassifiers xsi:type="ecore:EClass" name="Conjunction" eSuperTypes="#//Case #//ExistentialQuantifier">
241 <eStructuralFeatures xsi:type="ecore:EReference" name="literals" upperBound="-1"
242 eType="#//Expr" containment="true"/>
243 </eClassifiers>
244 <eClassifiers xsi:type="ecore:EClass" name="Match" eSuperTypes="#//Case">
245 <eStructuralFeatures xsi:type="ecore:EReference" name="condition" eType="#//Conjunction"
246 containment="true"/>
247 <eStructuralFeatures xsi:type="ecore:EReference" name="value" eType="#//Expr"
248 containment="true"/>
249 </eClassifiers>
250 <eClassifiers xsi:type="ecore:EClass" name="ArithmeticBinaryExpr" eSuperTypes="#//BinaryExpr">
251 <eStructuralFeatures xsi:type="ecore:EAttribute" name="op" eType="#//BinaryOp"/>
252 </eClassifiers>
253 <eClassifiers xsi:type="ecore:EClass" name="NegationExpr" eSuperTypes="#//QuantifiedUnaryExpr"/>
254 <eClassifiers xsi:type="ecore:EClass" name="CountExpr" eSuperTypes="#//QuantifiedUnaryExpr"/>
255 <eClassifiers xsi:type="ecore:EClass" name="Relation" abstract="true" eSuperTypes="#//NamedElement"/>
256 <eClassifiers xsi:type="ecore:EClass" name="ModalExpr" eSuperTypes="#//UnaryExpr">
257 <eStructuralFeatures xsi:type="ecore:EAttribute" name="modality" eType="#//Modality"/>
258 </eClassifiers>
208</ecore:EPackage> 259</ecore:EPackage>