diff options
author | 2022-08-01 01:44:06 +0200 | |
---|---|---|
committer | 2022-08-01 01:44:06 +0200 | |
commit | e86447b4d74677d86271336727e0bbff9f4c54b5 (patch) | |
tree | 5f32aa78c8aa8a72ec0303cb5675eb83877b3700 /subprojects/language-model/src | |
parent | chore(deps): bump dependencies (diff) | |
download | refinery-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.ecore | 55 | ||||
-rw-r--r-- | subprojects/language-model/src/main/resources/model/problem.genmodel | 56 |
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> |