aboutsummaryrefslogtreecommitdiffstats
path: root/subprojects/language-model/src
diff options
context:
space:
mode:
authorLibravatar Kristóf Marussy <kristof@marussy.com>2022-08-01 01:44:06 +0200
committerLibravatar Kristóf Marussy <kristof@marussy.com>2022-08-01 01:44:06 +0200
commite86447b4d74677d86271336727e0bbff9f4c54b5 (patch)
tree5f32aa78c8aa8a72ec0303cb5675eb83877b3700 /subprojects/language-model/src
parentchore(deps): bump dependencies (diff)
downloadrefinery-e86447b4d74677d86271336727e0bbff9f4c54b5.tar.gz
refinery-e86447b4d74677d86271336727e0bbff9f4c54b5.tar.zst
refinery-e86447b4d74677d86271336727e0bbff9f4c54b5.zip
refactor: direct predicates
* Remove the direct keyword because it can be inferred * Use may/must/current instead of value literals * Transformation rule changes
Diffstat (limited to 'subprojects/language-model/src')
-rw-r--r--subprojects/language-model/src/main/resources/model/problem.ecore55
-rw-r--r--subprojects/language-model/src/main/resources/model/problem.genmodel56
2 files changed, 46 insertions, 65 deletions
diff --git a/subprojects/language-model/src/main/resources/model/problem.ecore b/subprojects/language-model/src/main/resources/model/problem.ecore
index 582f67c8..16683952 100644
--- a/subprojects/language-model/src/main/resources/model/problem.ecore
+++ b/subprojects/language-model/src/main/resources/model/problem.ecore
@@ -29,8 +29,6 @@
29 </eClassifiers> 29 </eClassifiers>
30 <eClassifiers xsi:type="ecore:EClass" name="PredicateDefinition" eSuperTypes="#//Relation #//ParametricDefinition"> 30 <eClassifiers xsi:type="ecore:EClass" name="PredicateDefinition" eSuperTypes="#//Relation #//ParametricDefinition">
31 <eStructuralFeatures xsi:type="ecore:EAttribute" name="error" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/> 31 <eStructuralFeatures xsi:type="ecore:EAttribute" name="error" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
32 <eStructuralFeatures xsi:type="ecore:EAttribute" name="kind" eType="#//PredicateKind"
33 defaultValueLiteral="PARTIAL"/>
34 </eClassifiers> 32 </eClassifiers>
35 <eClassifiers xsi:type="ecore:EClass" name="Parameter" eSuperTypes="#//Variable"> 33 <eClassifiers xsi:type="ecore:EClass" name="Parameter" eSuperTypes="#//Variable">
36 <eStructuralFeatures xsi:type="ecore:EReference" name="parameterType" eType="#//Relation"/> 34 <eStructuralFeatures xsi:type="ecore:EReference" name="parameterType" eType="#//Relation"/>
@@ -40,7 +38,9 @@
40 <eStructuralFeatures xsi:type="ecore:EReference" name="literals" upperBound="-1" 38 <eStructuralFeatures xsi:type="ecore:EReference" name="literals" upperBound="-1"
41 eType="#//Literal" containment="true"/> 39 eType="#//Literal" containment="true"/>
42 </eClassifiers> 40 </eClassifiers>
43 <eClassifiers xsi:type="ecore:EClass" name="Literal" abstract="true"/> 41 <eClassifiers xsi:type="ecore:EClass" name="Literal" abstract="true">
42 <eStructuralFeatures xsi:type="ecore:EAttribute" name="modality" eType="#//Modality"/>
43 </eClassifiers>
44 <eClassifiers xsi:type="ecore:EClass" name="Atom" eSuperTypes="#//Literal"> 44 <eClassifiers xsi:type="ecore:EClass" name="Atom" eSuperTypes="#//Literal">
45 <eStructuralFeatures xsi:type="ecore:EReference" name="relation" eType="#//Relation"/> 45 <eStructuralFeatures xsi:type="ecore:EReference" name="relation" eType="#//Relation"/>
46 <eStructuralFeatures xsi:type="ecore:EAttribute" name="transitiveClosure" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/> 46 <eStructuralFeatures xsi:type="ecore:EAttribute" name="transitiveClosure" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
@@ -48,7 +48,9 @@
48 eType="#//Argument" containment="true"/> 48 eType="#//Argument" containment="true"/>
49 </eClassifiers> 49 </eClassifiers>
50 <eClassifiers xsi:type="ecore:EClass" name="ImplicitVariable" eSuperTypes="#//Variable"/> 50 <eClassifiers xsi:type="ecore:EClass" name="ImplicitVariable" eSuperTypes="#//Variable"/>
51 <eClassifiers xsi:type="ecore:EClass" name="NegativeLiteral" eSuperTypes="#//ExistentialQuantifier #//CompoundLiteral"/> 51 <eClassifiers xsi:type="ecore:EClass" name="NegativeLiteral" eSuperTypes="#//ExistentialQuantifier #//Literal">
52 <eStructuralFeatures xsi:type="ecore:EReference" name="atom" eType="#//Atom" containment="true"/>
53 </eClassifiers>
52 <eClassifiers xsi:type="ecore:EClass" name="ExistentialQuantifier" abstract="true" 54 <eClassifiers xsi:type="ecore:EClass" name="ExistentialQuantifier" abstract="true"
53 interface="true"> 55 interface="true">
54 <eStructuralFeatures xsi:type="ecore:EReference" name="implicitVariables" upperBound="-1" 56 <eStructuralFeatures xsi:type="ecore:EReference" name="implicitVariables" upperBound="-1"
@@ -145,47 +147,34 @@
145 eType="#//Parameter" containment="true"/> 147 eType="#//Parameter" containment="true"/>
146 </eClassifiers> 148 </eClassifiers>
147 <eClassifiers xsi:type="ecore:EClass" name="RuleDefinition" eSuperTypes="#//ParametricDefinition #//NamedElement"> 149 <eClassifiers xsi:type="ecore:EClass" name="RuleDefinition" eSuperTypes="#//ParametricDefinition #//NamedElement">
148 <eStructuralFeatures xsi:type="ecore:EAttribute" name="kind" eType="#//RuleKind" 150 <eStructuralFeatures xsi:type="ecore:EReference" name="consequents" upperBound="-1"
149 defaultValueLiteral="DIRECT"/> 151 eType="#//Consequent" containment="true"/>
150 <eStructuralFeatures xsi:type="ecore:EReference" name="action" eType="#//Action"
151 containment="true"/>
152 </eClassifiers> 152 </eClassifiers>
153 <eClassifiers xsi:type="ecore:EClass" name="Action"> 153 <eClassifiers xsi:type="ecore:EClass" name="Consequent">
154 <eStructuralFeatures xsi:type="ecore:EReference" name="actionLiterals" upperBound="-1" 154 <eStructuralFeatures xsi:type="ecore:EReference" name="actions" upperBound="-1"
155 eType="#//ActionLiteral" containment="true"/> 155 eType="#//Action" containment="true"/>
156 </eClassifiers> 156 </eClassifiers>
157 <eClassifiers xsi:type="ecore:EClass" name="ActionLiteral" abstract="true"/> 157 <eClassifiers xsi:type="ecore:EClass" name="Action" abstract="true"/>
158 <eClassifiers xsi:type="ecore:EClass" name="ValueActionLiteral" eSuperTypes="#//ActionLiteral"> 158 <eClassifiers xsi:type="ecore:EClass" name="AssertionAction" eSuperTypes="#//Action">
159 <eStructuralFeatures xsi:type="ecore:EReference" name="atom" eType="#//Atom" containment="true"/> 159 <eStructuralFeatures xsi:type="ecore:EReference" name="atom" eType="#//Atom" containment="true"/>
160 <eStructuralFeatures xsi:type="ecore:EAttribute" name="value" eType="#//LogicValue" 160 <eStructuralFeatures xsi:type="ecore:EAttribute" name="value" eType="#//LogicValue"
161 defaultValueLiteral="TRUE"/> 161 defaultValueLiteral="TRUE"/>
162 <eStructuralFeatures xsi:type="ecore:EAttribute" name="refinement" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean" 162 <eStructuralFeatures xsi:type="ecore:EAttribute" name="overwrite" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
163 defaultValueLiteral="FALSE"/> 163 defaultValueLiteral="FALSE"/>
164 </eClassifiers> 164 </eClassifiers>
165 <eClassifiers xsi:type="ecore:EClass" name="DeleteActionLiteral" eSuperTypes="#//ActionLiteral"> 165 <eClassifiers xsi:type="ecore:EClass" name="DeleteAction" eSuperTypes="#//Action">
166 <eStructuralFeatures xsi:type="ecore:EReference" name="variableOrNode" eType="#//VariableOrNode"/> 166 <eStructuralFeatures xsi:type="ecore:EReference" name="variableOrNode" eType="#//VariableOrNode"/>
167 </eClassifiers> 167 </eClassifiers>
168 <eClassifiers xsi:type="ecore:EClass" name="NewActionLiteral" eSuperTypes="#//ActionLiteral"> 168 <eClassifiers xsi:type="ecore:EClass" name="NewAction" eSuperTypes="#//Action">
169 <eStructuralFeatures xsi:type="ecore:EReference" name="variable" eType="#//NewVariable" 169 <eStructuralFeatures xsi:type="ecore:EReference" name="variable" eType="#//NewVariable"
170 containment="true"/> 170 containment="true"/>
171 <eStructuralFeatures xsi:type="ecore:EReference" name="parent" eType="#//VariableOrNode"/>
171 </eClassifiers> 172 </eClassifiers>
172 <eClassifiers xsi:type="ecore:EClass" name="NewVariable" eSuperTypes="#//Variable"/> 173 <eClassifiers xsi:type="ecore:EClass" name="NewVariable" eSuperTypes="#//Variable"/>
173 <eClassifiers xsi:type="ecore:EClass" name="CompoundLiteral" abstract="true" eSuperTypes="#//Literal"> 174 <eClassifiers xsi:type="ecore:EEnum" name="Modality">
174 <eStructuralFeatures xsi:type="ecore:EReference" name="atom" eType="#//Atom" containment="true"/> 175 <eLiterals name="DEFAULT"/>
175 </eClassifiers> 176 <eLiterals name="MAY" value="1"/>
176 <eClassifiers xsi:type="ecore:EClass" name="ValueLiteral" eSuperTypes="#//CompoundLiteral"> 177 <eLiterals name="MUST" value="2"/>
177 <eStructuralFeatures xsi:type="ecore:EReference" name="values" upperBound="-1" 178 <eLiterals name="CURRENT" value="3"/>
178 eType="#//LogicConstant" containment="true"/>
179 <eStructuralFeatures xsi:type="ecore:EAttribute" name="refinement" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
180 </eClassifiers>
181 <eClassifiers xsi:type="ecore:EClass" name="LogicConstant">
182 <eStructuralFeatures xsi:type="ecore:EAttribute" name="value" eType="#//LogicValue"/>
183 </eClassifiers>
184 <eClassifiers xsi:type="ecore:EEnum" name="PredicateKind">
185 <eLiterals name="PARTIAL"/>
186 <eLiterals name="DIRECT" value="1"/>
187 </eClassifiers>
188 <eClassifiers xsi:type="ecore:EEnum" name="RuleKind">
189 <eLiterals name="DIRECT"/>
190 </eClassifiers> 179 </eClassifiers>
191</ecore:EPackage> 180</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 9ba2274b..5a1da4d4 100644
--- a/subprojects/language-model/src/main/resources/model/problem.genmodel
+++ b/subprojects/language-model/src/main/resources/model/problem.genmodel
@@ -16,12 +16,11 @@
16 <genEnumLiterals ecoreEnumLiteral="problem.ecore#//LogicValue/UNKNOWN"/> 16 <genEnumLiterals ecoreEnumLiteral="problem.ecore#//LogicValue/UNKNOWN"/>
17 <genEnumLiterals ecoreEnumLiteral="problem.ecore#//LogicValue/ERROR"/> 17 <genEnumLiterals ecoreEnumLiteral="problem.ecore#//LogicValue/ERROR"/>
18 </genEnums> 18 </genEnums>
19 <genEnums typeSafeEnumCompatible="false" ecoreEnum="problem.ecore#//PredicateKind"> 19 <genEnums typeSafeEnumCompatible="false" ecoreEnum="problem.ecore#//Modality">
20 <genEnumLiterals ecoreEnumLiteral="problem.ecore#//PredicateKind/PARTIAL"/> 20 <genEnumLiterals ecoreEnumLiteral="problem.ecore#//Modality/DEFAULT"/>
21 <genEnumLiterals ecoreEnumLiteral="problem.ecore#//PredicateKind/DIRECT"/> 21 <genEnumLiterals ecoreEnumLiteral="problem.ecore#//Modality/MAY"/>
22 </genEnums> 22 <genEnumLiterals ecoreEnumLiteral="problem.ecore#//Modality/MUST"/>
23 <genEnums typeSafeEnumCompatible="false" ecoreEnum="problem.ecore#//RuleKind"> 23 <genEnumLiterals ecoreEnumLiteral="problem.ecore#//Modality/CURRENT"/>
24 <genEnumLiterals ecoreEnumLiteral="problem.ecore#//RuleKind/DIRECT"/>
25 </genEnums> 24 </genEnums>
26 <genClasses ecoreClass="problem.ecore#//Problem"> 25 <genClasses ecoreClass="problem.ecore#//Problem">
27 <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference problem.ecore#//Problem/nodes"/> 26 <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference problem.ecore#//Problem/nodes"/>
@@ -45,7 +44,6 @@
45 </genClasses> 44 </genClasses>
46 <genClasses ecoreClass="problem.ecore#//PredicateDefinition"> 45 <genClasses ecoreClass="problem.ecore#//PredicateDefinition">
47 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute problem.ecore#//PredicateDefinition/error"/> 46 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute problem.ecore#//PredicateDefinition/error"/>
48 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute problem.ecore#//PredicateDefinition/kind"/>
49 </genClasses> 47 </genClasses>
50 <genClasses ecoreClass="problem.ecore#//Parameter"> 48 <genClasses ecoreClass="problem.ecore#//Parameter">
51 <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference problem.ecore#//Parameter/parameterType"/> 49 <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference problem.ecore#//Parameter/parameterType"/>
@@ -54,14 +52,18 @@
54 <genClasses ecoreClass="problem.ecore#//Conjunction"> 52 <genClasses ecoreClass="problem.ecore#//Conjunction">
55 <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference problem.ecore#//Conjunction/literals"/> 53 <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference problem.ecore#//Conjunction/literals"/>
56 </genClasses> 54 </genClasses>
57 <genClasses ecoreClass="problem.ecore#//Literal"/> 55 <genClasses ecoreClass="problem.ecore#//Literal">
56 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute problem.ecore#//Literal/modality"/>
57 </genClasses>
58 <genClasses ecoreClass="problem.ecore#//Atom"> 58 <genClasses ecoreClass="problem.ecore#//Atom">
59 <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference problem.ecore#//Atom/relation"/> 59 <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference problem.ecore#//Atom/relation"/>
60 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute problem.ecore#//Atom/transitiveClosure"/> 60 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute problem.ecore#//Atom/transitiveClosure"/>
61 <genFeatures children="true" createChild="true" propertySortChoices="true" ecoreFeature="ecore:EReference problem.ecore#//Atom/arguments"/> 61 <genFeatures children="true" createChild="true" propertySortChoices="true" ecoreFeature="ecore:EReference problem.ecore#//Atom/arguments"/>
62 </genClasses> 62 </genClasses>
63 <genClasses ecoreClass="problem.ecore#//ImplicitVariable"/> 63 <genClasses ecoreClass="problem.ecore#//ImplicitVariable"/>
64 <genClasses ecoreClass="problem.ecore#//NegativeLiteral"/> 64 <genClasses ecoreClass="problem.ecore#//NegativeLiteral">
65 <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference problem.ecore#//NegativeLiteral/atom"/>
66 </genClasses>
65 <genClasses ecoreClass="problem.ecore#//ExistentialQuantifier"> 67 <genClasses ecoreClass="problem.ecore#//ExistentialQuantifier">
66 <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference problem.ecore#//ExistentialQuantifier/implicitVariables"/> 68 <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference problem.ecore#//ExistentialQuantifier/implicitVariables"/>
67 </genClasses> 69 </genClasses>
@@ -132,34 +134,24 @@
132 <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference problem.ecore#//ParametricDefinition/parameters"/> 134 <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference problem.ecore#//ParametricDefinition/parameters"/>
133 </genClasses> 135 </genClasses>
134 <genClasses ecoreClass="problem.ecore#//RuleDefinition"> 136 <genClasses ecoreClass="problem.ecore#//RuleDefinition">
135 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute problem.ecore#//RuleDefinition/kind"/> 137 <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference problem.ecore#//RuleDefinition/consequents"/>
136 <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference problem.ecore#//RuleDefinition/action"/>
137 </genClasses> 138 </genClasses>
138 <genClasses ecoreClass="problem.ecore#//Action"> 139 <genClasses ecoreClass="problem.ecore#//Consequent">
139 <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference problem.ecore#//Action/actionLiterals"/> 140 <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference problem.ecore#//Consequent/actions"/>
140 </genClasses> 141 </genClasses>
141 <genClasses ecoreClass="problem.ecore#//ActionLiteral"/> 142 <genClasses ecoreClass="problem.ecore#//Action"/>
142 <genClasses ecoreClass="problem.ecore#//ValueActionLiteral"> 143 <genClasses ecoreClass="problem.ecore#//AssertionAction">
143 <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference problem.ecore#//ValueActionLiteral/atom"/> 144 <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference problem.ecore#//AssertionAction/atom"/>
144 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute problem.ecore#//ValueActionLiteral/value"/> 145 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute problem.ecore#//AssertionAction/value"/>
145 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute problem.ecore#//ValueActionLiteral/refinement"/> 146 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute problem.ecore#//AssertionAction/overwrite"/>
146 </genClasses> 147 </genClasses>
147 <genClasses ecoreClass="problem.ecore#//DeleteActionLiteral"> 148 <genClasses ecoreClass="problem.ecore#//DeleteAction">
148 <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference problem.ecore#//DeleteActionLiteral/variableOrNode"/> 149 <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference problem.ecore#//DeleteAction/variableOrNode"/>
149 </genClasses> 150 </genClasses>
150 <genClasses ecoreClass="problem.ecore#//NewActionLiteral"> 151 <genClasses ecoreClass="problem.ecore#//NewAction">
151 <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference problem.ecore#//NewActionLiteral/variable"/> 152 <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference problem.ecore#//NewAction/variable"/>
153 <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference problem.ecore#//NewAction/parent"/>
152 </genClasses> 154 </genClasses>
153 <genClasses ecoreClass="problem.ecore#//NewVariable"/> 155 <genClasses ecoreClass="problem.ecore#//NewVariable"/>
154 <genClasses ecoreClass="problem.ecore#//CompoundLiteral">
155 <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference problem.ecore#//CompoundLiteral/atom"/>
156 </genClasses>
157 <genClasses ecoreClass="problem.ecore#//ValueLiteral">
158 <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference problem.ecore#//ValueLiteral/values"/>
159 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute problem.ecore#//ValueLiteral/refinement"/>
160 </genClasses>
161 <genClasses ecoreClass="problem.ecore#//LogicConstant">
162 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute problem.ecore#//LogicConstant/value"/>
163 </genClasses>
164 </genPackages> 156 </genPackages>
165</genmodel:GenModel> 157</genmodel:GenModel>