aboutsummaryrefslogtreecommitdiffstats
path: root/subprojects/language-model/src/main/resources
diff options
context:
space:
mode:
authorLibravatar Kristóf Marussy <kristof@marussy.com>2022-11-19 14:00:12 +0100
committerLibravatar Kristóf Marussy <kristof@marussy.com>2022-11-22 16:40:03 +0100
commit383137c190cab040d2609f8295ef822c3917b88d (patch)
treed0d88528de2020da51cb6e92459b84cf63609feb /subprojects/language-model/src/main/resources
parentchore(deps): bump dependencies (diff)
downloadrefinery-383137c190cab040d2609f8295ef822c3917b88d.tar.gz
refinery-383137c190cab040d2609f8295ef822c3917b88d.tar.zst
refinery-383137c190cab040d2609f8295ef822c3917b88d.zip
feat(language): numeric expressions
Diffstat (limited to 'subprojects/language-model/src/main/resources')
-rw-r--r--subprojects/language-model/src/main/resources/model/problem.ecore139
-rw-r--r--subprojects/language-model/src/main/resources/model/problem.genmodel102
2 files changed, 168 insertions, 73 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>
diff --git a/subprojects/language-model/src/main/resources/model/problem.genmodel b/subprojects/language-model/src/main/resources/model/problem.genmodel
index 9ff4989b..230f9919 100644
--- a/subprojects/language-model/src/main/resources/model/problem.genmodel
+++ b/subprojects/language-model/src/main/resources/model/problem.genmodel
@@ -42,57 +42,65 @@
42 <genEnumLiterals ecoreEnumLiteral="problem.ecore#//PredicateKind/CONTAINED"/> 42 <genEnumLiterals ecoreEnumLiteral="problem.ecore#//PredicateKind/CONTAINED"/>
43 <genEnumLiterals ecoreEnumLiteral="problem.ecore#//PredicateKind/CONTAINMENT"/> 43 <genEnumLiterals ecoreEnumLiteral="problem.ecore#//PredicateKind/CONTAINMENT"/>
44 </genEnums> 44 </genEnums>
45 <genEnums typeSafeEnumCompatible="false" ecoreEnum="problem.ecore#//UnaryOp">
46 <genEnumLiterals ecoreEnumLiteral="problem.ecore#//UnaryOp/PLUS"/>
47 <genEnumLiterals ecoreEnumLiteral="problem.ecore#//UnaryOp/MINUS"/>
48 </genEnums>
49 <genEnums typeSafeEnumCompatible="false" ecoreEnum="problem.ecore#//BinaryOp">
50 <genEnumLiterals ecoreEnumLiteral="problem.ecore#//BinaryOp/ADD"/>
51 <genEnumLiterals ecoreEnumLiteral="problem.ecore#//BinaryOp/SUB"/>
52 <genEnumLiterals ecoreEnumLiteral="problem.ecore#//BinaryOp/MUL"/>
53 <genEnumLiterals ecoreEnumLiteral="problem.ecore#//BinaryOp/DIV"/>
54 <genEnumLiterals ecoreEnumLiteral="problem.ecore#//BinaryOp/POW"/>
55 </genEnums>
56 <genEnums typeSafeEnumCompatible="false" ecoreEnum="problem.ecore#//AggregationOp">
57 <genEnumLiterals ecoreEnumLiteral="problem.ecore#//AggregationOp/SUM"/>
58 <genEnumLiterals ecoreEnumLiteral="problem.ecore#//AggregationOp/PROD"/>
59 <genEnumLiterals ecoreEnumLiteral="problem.ecore#//AggregationOp/MIN"/>
60 <genEnumLiterals ecoreEnumLiteral="problem.ecore#//AggregationOp/MAX"/>
61 </genEnums>
45 <genClasses ecoreClass="problem.ecore#//Problem"> 62 <genClasses ecoreClass="problem.ecore#//Problem">
46 <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference problem.ecore#//Problem/nodes"/> 63 <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference problem.ecore#//Problem/nodes"/>
47 <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference problem.ecore#//Problem/statements"/> 64 <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference problem.ecore#//Problem/statements"/>
48 </genClasses> 65 </genClasses>
49 <genClasses ecoreClass="problem.ecore#//Relation"/>
50 <genClasses ecoreClass="problem.ecore#//ClassDeclaration"> 66 <genClasses ecoreClass="problem.ecore#//ClassDeclaration">
51 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute problem.ecore#//ClassDeclaration/abstract"/> 67 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute problem.ecore#//ClassDeclaration/abstract"/>
52 <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference problem.ecore#//ClassDeclaration/superTypes"/>
53 <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference problem.ecore#//ClassDeclaration/referenceDeclarations"/> 68 <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference problem.ecore#//ClassDeclaration/referenceDeclarations"/>
54 <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference problem.ecore#//ClassDeclaration/newNode"/> 69 <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference problem.ecore#//ClassDeclaration/newNode"/>
70 <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference problem.ecore#//ClassDeclaration/superTypes"/>
55 </genClasses> 71 </genClasses>
56 <genClasses ecoreClass="problem.ecore#//ReferenceDeclaration"> 72 <genClasses ecoreClass="problem.ecore#//ReferenceDeclaration">
57 <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference problem.ecore#//ReferenceDeclaration/referenceType"/>
58 <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference problem.ecore#//ReferenceDeclaration/opposite"/> 73 <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference problem.ecore#//ReferenceDeclaration/opposite"/>
59 <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference problem.ecore#//ReferenceDeclaration/multiplicity"/> 74 <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference problem.ecore#//ReferenceDeclaration/multiplicity"/>
60 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute problem.ecore#//ReferenceDeclaration/kind"/> 75 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute problem.ecore#//ReferenceDeclaration/kind"/>
76 <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference problem.ecore#//ReferenceDeclaration/referenceType"/>
61 </genClasses> 77 </genClasses>
62 <genClasses ecoreClass="problem.ecore#//NamedElement"> 78 <genClasses ecoreClass="problem.ecore#//NamedElement">
63 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute problem.ecore#//NamedElement/name"/> 79 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute problem.ecore#//NamedElement/name"/>
64 </genClasses> 80 </genClasses>
65 <genClasses ecoreClass="problem.ecore#//PredicateDefinition"> 81 <genClasses ecoreClass="problem.ecore#//PredicateDefinition">
66 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute problem.ecore#//PredicateDefinition/kind"/> 82 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute problem.ecore#//PredicateDefinition/kind"/>
83 <genFeatures children="true" createChild="true" propertySortChoices="true" ecoreFeature="ecore:EReference problem.ecore#//PredicateDefinition/bodies"/>
67 </genClasses> 84 </genClasses>
68 <genClasses ecoreClass="problem.ecore#//Parameter"> 85 <genClasses ecoreClass="problem.ecore#//Parameter">
69 <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference problem.ecore#//Parameter/parameterType"/>
70 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute problem.ecore#//Parameter/modality"/> 86 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute problem.ecore#//Parameter/modality"/>
87 <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference problem.ecore#//Parameter/parameterType"/>
71 </genClasses> 88 </genClasses>
72 <genClasses ecoreClass="problem.ecore#//Variable"/> 89 <genClasses ecoreClass="problem.ecore#//Variable"/>
73 <genClasses ecoreClass="problem.ecore#//Conjunction">
74 <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference problem.ecore#//Conjunction/literals"/>
75 </genClasses>
76 <genClasses ecoreClass="problem.ecore#//Literal">
77 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute problem.ecore#//Literal/modality"/>
78 </genClasses>
79 <genClasses ecoreClass="problem.ecore#//Atom"> 90 <genClasses ecoreClass="problem.ecore#//Atom">
80 <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference problem.ecore#//Atom/relation"/>
81 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute problem.ecore#//Atom/transitiveClosure"/> 91 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute problem.ecore#//Atom/transitiveClosure"/>
82 <genFeatures children="true" createChild="true" propertySortChoices="true" ecoreFeature="ecore:EReference problem.ecore#//Atom/arguments"/> 92 <genFeatures children="true" createChild="true" propertySortChoices="true" ecoreFeature="ecore:EReference problem.ecore#//Atom/arguments"/>
93 <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference problem.ecore#//Atom/relation"/>
83 </genClasses> 94 </genClasses>
84 <genClasses ecoreClass="problem.ecore#//ImplicitVariable"/> 95 <genClasses ecoreClass="problem.ecore#//ImplicitVariable"/>
85 <genClasses ecoreClass="problem.ecore#//CompoundLiteral">
86 <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference problem.ecore#//CompoundLiteral/atom"/>
87 </genClasses>
88 <genClasses ecoreClass="problem.ecore#//ExistentialQuantifier"> 96 <genClasses ecoreClass="problem.ecore#//ExistentialQuantifier">
89 <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference problem.ecore#//ExistentialQuantifier/implicitVariables"/> 97 <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference problem.ecore#//ExistentialQuantifier/implicitVariables"/>
90 </genClasses> 98 </genClasses>
91 <genClasses ecoreClass="problem.ecore#//Assertion"> 99 <genClasses ecoreClass="problem.ecore#//Assertion">
92 <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference problem.ecore#//Assertion/relation"/>
93 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute problem.ecore#//Assertion/value"/> 100 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute problem.ecore#//Assertion/value"/>
94 <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference problem.ecore#//Assertion/arguments"/> 101 <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference problem.ecore#//Assertion/arguments"/>
95 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute problem.ecore#//Assertion/default"/> 102 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute problem.ecore#//Assertion/default"/>
103 <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference problem.ecore#//Assertion/relation"/>
96 </genClasses> 104 </genClasses>
97 <genClasses ecoreClass="problem.ecore#//Node"/> 105 <genClasses ecoreClass="problem.ecore#//Node"/>
98 <genClasses ecoreClass="problem.ecore#//ScopeDeclaration"> 106 <genClasses ecoreClass="problem.ecore#//ScopeDeclaration">
@@ -100,9 +108,9 @@
100 </genClasses> 108 </genClasses>
101 <genClasses ecoreClass="problem.ecore#//Statement"/> 109 <genClasses ecoreClass="problem.ecore#//Statement"/>
102 <genClasses ecoreClass="problem.ecore#//TypeScope"> 110 <genClasses ecoreClass="problem.ecore#//TypeScope">
103 <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference problem.ecore#//TypeScope/targetType"/>
104 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute problem.ecore#//TypeScope/increment"/> 111 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute problem.ecore#//TypeScope/increment"/>
105 <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference problem.ecore#//TypeScope/multiplicity"/> 112 <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference problem.ecore#//TypeScope/multiplicity"/>
113 <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference problem.ecore#//TypeScope/targetType"/>
106 </genClasses> 114 </genClasses>
107 <genClasses ecoreClass="problem.ecore#//Multiplicity"/> 115 <genClasses ecoreClass="problem.ecore#//Multiplicity"/>
108 <genClasses ecoreClass="problem.ecore#//RangeMultiplicity"> 116 <genClasses ecoreClass="problem.ecore#//RangeMultiplicity">
@@ -113,10 +121,6 @@
113 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute problem.ecore#//ExactMultiplicity/exactValue"/> 121 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute problem.ecore#//ExactMultiplicity/exactValue"/>
114 </genClasses> 122 </genClasses>
115 <genClasses ecoreClass="problem.ecore#//UnboundedMultiplicity"/> 123 <genClasses ecoreClass="problem.ecore#//UnboundedMultiplicity"/>
116 <genClasses ecoreClass="problem.ecore#//VariableOrNodeArgument">
117 <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference problem.ecore#//VariableOrNodeArgument/variableOrNode"/>
118 <genFeatures children="true" createChild="true" propertySortChoices="true" ecoreFeature="ecore:EReference problem.ecore#//VariableOrNodeArgument/singletonVariable"/>
119 </genClasses>
120 <genClasses ecoreClass="problem.ecore#//EnumDeclaration"> 124 <genClasses ecoreClass="problem.ecore#//EnumDeclaration">
121 <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference problem.ecore#//EnumDeclaration/literals"/> 125 <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference problem.ecore#//EnumDeclaration/literals"/>
122 </genClasses> 126 </genClasses>
@@ -131,10 +135,6 @@
131 <genClasses ecoreClass="problem.ecore#//StringConstant"> 135 <genClasses ecoreClass="problem.ecore#//StringConstant">
132 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute problem.ecore#//StringConstant/stringValue"/> 136 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute problem.ecore#//StringConstant/stringValue"/>
133 </genClasses> 137 </genClasses>
134 <genClasses ecoreClass="problem.ecore#//ConstantArgument">
135 <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference problem.ecore#//ConstantArgument/constant"/>
136 </genClasses>
137 <genClasses ecoreClass="problem.ecore#//Argument"/>
138 <genClasses ecoreClass="problem.ecore#//NodeAssertionArgument"> 138 <genClasses ecoreClass="problem.ecore#//NodeAssertionArgument">
139 <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference problem.ecore#//NodeAssertionArgument/node"/> 139 <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference problem.ecore#//NodeAssertionArgument/node"/>
140 </genClasses> 140 </genClasses>
@@ -142,6 +142,7 @@
142 <genClasses ecoreClass="problem.ecore#//ConstantAssertionArgument"> 142 <genClasses ecoreClass="problem.ecore#//ConstantAssertionArgument">
143 <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference problem.ecore#//ConstantAssertionArgument/constant"/> 143 <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference problem.ecore#//ConstantAssertionArgument/constant"/>
144 <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference problem.ecore#//ConstantAssertionArgument/node"/> 144 <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference problem.ecore#//ConstantAssertionArgument/node"/>
145 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute problem.ecore#//ConstantAssertionArgument/negative"/>
145 </genClasses> 146 </genClasses>
146 <genClasses ecoreClass="problem.ecore#//NodeValueAssertion"> 147 <genClasses ecoreClass="problem.ecore#//NodeValueAssertion">
147 <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference problem.ecore#//NodeValueAssertion/node"/> 148 <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference problem.ecore#//NodeValueAssertion/node"/>
@@ -152,11 +153,11 @@
152 </genClasses> 153 </genClasses>
153 <genClasses ecoreClass="problem.ecore#//WildcardAssertionArgument"/> 154 <genClasses ecoreClass="problem.ecore#//WildcardAssertionArgument"/>
154 <genClasses ecoreClass="problem.ecore#//ParametricDefinition"> 155 <genClasses ecoreClass="problem.ecore#//ParametricDefinition">
155 <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference problem.ecore#//ParametricDefinition/bodies"/>
156 <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference problem.ecore#//ParametricDefinition/parameters"/> 156 <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference problem.ecore#//ParametricDefinition/parameters"/>
157 </genClasses> 157 </genClasses>
158 <genClasses ecoreClass="problem.ecore#//RuleDefinition"> 158 <genClasses ecoreClass="problem.ecore#//RuleDefinition">
159 <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference problem.ecore#//RuleDefinition/consequents"/> 159 <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference problem.ecore#//RuleDefinition/consequents"/>
160 <genFeatures children="true" createChild="true" propertySortChoices="true" ecoreFeature="ecore:EReference problem.ecore#//RuleDefinition/preconditions"/>
160 </genClasses> 161 </genClasses>
161 <genClasses ecoreClass="problem.ecore#//Consequent"> 162 <genClasses ecoreClass="problem.ecore#//Consequent">
162 <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference problem.ecore#//Consequent/actions"/> 163 <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference problem.ecore#//Consequent/actions"/>
@@ -175,10 +176,53 @@
175 <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference problem.ecore#//NewAction/parent"/> 176 <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference problem.ecore#//NewAction/parent"/>
176 </genClasses> 177 </genClasses>
177 <genClasses ecoreClass="problem.ecore#//NewVariable"/> 178 <genClasses ecoreClass="problem.ecore#//NewVariable"/>
178 <genClasses ecoreClass="problem.ecore#//NegativeLiteral"/> 179 <genClasses ecoreClass="problem.ecore#//Expr"/>
179 <genClasses ecoreClass="problem.ecore#//CountLiteral"> 180 <genClasses ecoreClass="problem.ecore#//VariableOrNodeExpr">
180 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute problem.ecore#//CountLiteral/op"/> 181 <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference problem.ecore#//VariableOrNodeExpr/variableOrNode"/>
181 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute problem.ecore#//CountLiteral/threshold"/> 182 <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference problem.ecore#//VariableOrNodeExpr/singletonVariable"/>
183 </genClasses>
184 <genClasses ecoreClass="problem.ecore#//BinaryExpr">
185 <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference problem.ecore#//BinaryExpr/left"/>
186 <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference problem.ecore#//BinaryExpr/right"/>
187 </genClasses>
188 <genClasses ecoreClass="problem.ecore#//UnaryExpr">
189 <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference problem.ecore#//UnaryExpr/body"/>
190 </genClasses>
191 <genClasses ecoreClass="problem.ecore#//ArithmeticUnaryExpr">
192 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute problem.ecore#//ArithmeticUnaryExpr/op"/>
193 </genClasses>
194 <genClasses ecoreClass="problem.ecore#//AggregationExpr">
195 <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference problem.ecore#//AggregationExpr/value"/>
196 <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference problem.ecore#//AggregationExpr/condition"/>
197 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute problem.ecore#//AggregationExpr/op"/>
198 </genClasses>
199 <genClasses ecoreClass="problem.ecore#//ComparisonExpr">
200 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute problem.ecore#//ComparisonExpr/op"/>
201 </genClasses>
202 <genClasses ecoreClass="problem.ecore#//ConstantExpr">
203 <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference problem.ecore#//ConstantExpr/constant"/>
204 </genClasses>
205 <genClasses ecoreClass="problem.ecore#//QuantifiedUnaryExpr"/>
206 <genClasses ecoreClass="problem.ecore#//FunctionDefinition">
207 <genFeatures children="true" createChild="true" propertySortChoices="true" ecoreFeature="ecore:EReference problem.ecore#//FunctionDefinition/cases"/>
208 <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference problem.ecore#//FunctionDefinition/functionType"/>
209 </genClasses>
210 <genClasses ecoreClass="problem.ecore#//Case"/>
211 <genClasses ecoreClass="problem.ecore#//Conjunction">
212 <genFeatures children="true" createChild="true" propertySortChoices="true" ecoreFeature="ecore:EReference problem.ecore#//Conjunction/literals"/>
213 </genClasses>
214 <genClasses ecoreClass="problem.ecore#//Match">
215 <genFeatures children="true" createChild="true" propertySortChoices="true" ecoreFeature="ecore:EReference problem.ecore#//Match/condition"/>
216 <genFeatures children="true" createChild="true" propertySortChoices="true" ecoreFeature="ecore:EReference problem.ecore#//Match/value"/>
217 </genClasses>
218 <genClasses ecoreClass="problem.ecore#//ArithmeticBinaryExpr">
219 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute problem.ecore#//ArithmeticBinaryExpr/op"/>
220 </genClasses>
221 <genClasses ecoreClass="problem.ecore#//NegationExpr"/>
222 <genClasses ecoreClass="problem.ecore#//CountExpr"/>
223 <genClasses ecoreClass="problem.ecore#//Relation"/>
224 <genClasses ecoreClass="problem.ecore#//ModalExpr">
225 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute problem.ecore#//ModalExpr/modality"/>
182 </genClasses> 226 </genClasses>
183 </genPackages> 227 </genPackages>
184</genmodel:GenModel> 228</genmodel:GenModel>