aboutsummaryrefslogtreecommitdiffstats
path: root/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam
diff options
context:
space:
mode:
authorLibravatar ArenBabikian <aren.babikian@mail.mcgill.ca>2019-02-16 15:45:14 -0500
committerLibravatar ArenBabikian <aren.babikian@mail.mcgill.ca>2019-02-16 15:45:14 -0500
commit1da40b0bf07319bdb2e9a89f8d7d6ecfbc638952 (patch)
tree65a3cd74ed278d8af013c0e8a8c4d6ba920c3192 /Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam
parentSet up #19 (diff)
downloadVIATRA-Generator-1da40b0bf07319bdb2e9a89f8d7d6ecfbc638952.tar.gz
VIATRA-Generator-1da40b0bf07319bdb2e9a89f8d7d6ecfbc638952.tar.zst
VIATRA-Generator-1da40b0bf07319bdb2e9a89f8d7d6ecfbc638952.zip
Integrate queries partially #19
Diffstat (limited to 'Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam')
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/debug/errors.txt114
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/debug/generated3valued.vql_deactivated32522
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/debug/generation.logicproblem2
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/debug/problem.als203
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/log.txt2
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/1.gml6779
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/1.pngbin141462 -> 159195 bytes
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/1.xmi13
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/2.gml6874
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/2.pngbin151601 -> 177546 bytes
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/2.xmi13
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/3.gml5613
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/3.pngbin157309 -> 177661 bytes
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/3.xmi13
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/4.gml1136
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/4.pngbin162587 -> 189772 bytes
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/4.xmi11
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/5.gml1155
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/5.pngbin168585 -> 194199 bytes
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/5.xmi11
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/statistics.csv16
21 files changed, 54445 insertions, 32 deletions
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/debug/errors.txt b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/debug/errors.txt
index 94b0f4e3..e96fe7c5 100644
--- a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/debug/errors.txt
+++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/debug/errors.txt
@@ -192,4 +192,118 @@ Error occured (IllegalStateException): Query ca.mcgill.ecse.dslreasoner.standalo
192 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.execute(ScriptExecutor.java:339) 192 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.execute(ScriptExecutor.java:339)
193 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.executeScript(ScriptExecutor.java:111) 193 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.executeScript(ScriptExecutor.java:111)
194 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor$1.run(ScriptExecutor.java:73) 194 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor$1.run(ScriptExecutor.java:73)
195 org.eclipse.core.internal.jobs.Worker.run(Worker.java:56)Error occured (NullPointerException):
196 hu.bme.mit.inf.dslreasoner.application.execution.QueryLoader.lambda$8(QueryLoader.java:108)
197 org.eclipse.xtext.xbase.lib.internal.BooleanFunctionDelegate.apply(BooleanFunctionDelegate.java:41)
198 com.google.common.collect.Iterators$6.computeNext(Iterators.java:617)
199 com.google.common.collect.AbstractIterator.tryToComputeNext(AbstractIterator.java:145)
200 com.google.common.collect.AbstractIterator.hasNext(AbstractIterator.java:140)
201 com.google.common.collect.Iterators.addAll(Iterators.java:366)
202 com.google.common.collect.Iterables.addAll(Iterables.java:332)
203 com.google.common.collect.Sets.newLinkedHashSet(Sets.java:383)
204 org.eclipse.xtext.xbase.lib.IterableExtensions.toSet(IterableExtensions.java:592)
205 hu.bme.mit.inf.dslreasoner.application.execution.QueryLoader._getPatterns(QueryLoader.java:84)
206 hu.bme.mit.inf.dslreasoner.application.execution.QueryLoader.getPatterns(QueryLoader.java:213)
207 hu.bme.mit.inf.dslreasoner.application.execution.QueryLoader.loadQueries(QueryLoader.java:54)
208 hu.bme.mit.inf.dslreasoner.application.execution.GenerationTaskExecutor.executeGenerationTask(GenerationTaskExecutor.java:167)
209 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor._execute(ScriptExecutor.java:130)
210 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.execute(ScriptExecutor.java:339)
211 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.executeScript(ScriptExecutor.java:111)
212 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor$1.run(ScriptExecutor.java:73)
213 org.eclipse.core.internal.jobs.Worker.run(Worker.java:56)Error occured (UnsupportedOperationException): Can not transform pattern "ca.mcgill.ecse.dslreasoner.standalone.test.fam.queries.type"! Reason: Unknown constant type: class ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionType
214 hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.patterns.RelationDefinitionIndexer.transformPattern(RelationDefinitionIndexer.java:205)
215 hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.patterns.RelationDefinitionIndexer.generateRelationDefinitions(RelationDefinitionIndexer.java:66)
216 hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.patterns.PatternGenerator.transformBaseProperties(PatternGenerator.java:423)
217 hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.patterns.PatternProvider.generateQueries(PatternProvider.java:59)
218 hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.ModelGenerationMethodProvider.createModelGenerationMethod(ModelGenerationMethodProvider.java:57)
219 hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner.ViatraReasoner.solve(ViatraReasoner.java:96)
220 hu.bme.mit.inf.dslreasoner.application.execution.GenerationTaskExecutor.executeGenerationTask(GenerationTaskExecutor.java:316)
221 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor._execute(ScriptExecutor.java:130)
222 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.execute(ScriptExecutor.java:339)
223 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.executeScript(ScriptExecutor.java:111)
224 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor$1.run(ScriptExecutor.java:73)
225 org.eclipse.core.internal.jobs.Worker.run(Worker.java:56)Error occured (UnsupportedOperationException): Can not transform pattern "ca.mcgill.ecse.dslreasoner.standalone.test.fam.queries.type"! Reason: Unknown constant type: class ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionType
226 hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.patterns.RelationDefinitionIndexer.transformPattern(RelationDefinitionIndexer.java:205)
227 hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.patterns.RelationDefinitionIndexer.generateRelationDefinitions(RelationDefinitionIndexer.java:66)
228 hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.patterns.PatternGenerator.transformBaseProperties(PatternGenerator.java:423)
229 hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.patterns.PatternProvider.generateQueries(PatternProvider.java:59)
230 hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.ModelGenerationMethodProvider.createModelGenerationMethod(ModelGenerationMethodProvider.java:57)
231 hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner.ViatraReasoner.solve(ViatraReasoner.java:96)
232 hu.bme.mit.inf.dslreasoner.application.execution.GenerationTaskExecutor.executeGenerationTask(GenerationTaskExecutor.java:316)
233 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor._execute(ScriptExecutor.java:130)
234 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.execute(ScriptExecutor.java:339)
235 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.executeScript(ScriptExecutor.java:111)
236 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor$1.run(ScriptExecutor.java:73)
237 org.eclipse.core.internal.jobs.Worker.run(Worker.java:56)Error occured (UnsupportedOperationException): Can not transform pattern "ca.mcgill.ecse.dslreasoner.standalone.test.fam.queries.type"! Reason: Unknown constant type: class ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionType
238 hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.patterns.RelationDefinitionIndexer.transformPattern(RelationDefinitionIndexer.java:205)
239 hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.patterns.RelationDefinitionIndexer.generateRelationDefinitions(RelationDefinitionIndexer.java:66)
240 hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.patterns.PatternGenerator.transformBaseProperties(PatternGenerator.java:423)
241 hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.patterns.PatternProvider.generateQueries(PatternProvider.java:59)
242 hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.ModelGenerationMethodProvider.createModelGenerationMethod(ModelGenerationMethodProvider.java:57)
243 hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner.ViatraReasoner.solve(ViatraReasoner.java:96)
244 hu.bme.mit.inf.dslreasoner.application.execution.GenerationTaskExecutor.executeGenerationTask(GenerationTaskExecutor.java:316)
245 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor._execute(ScriptExecutor.java:130)
246 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.execute(ScriptExecutor.java:339)
247 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.executeScript(ScriptExecutor.java:111)
248 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor$1.run(ScriptExecutor.java:73)
249 org.eclipse.core.internal.jobs.Worker.run(Worker.java:56)Error occured (UnsupportedOperationException): Can not transform pattern "ca.mcgill.ecse.dslreasoner.standalone.test.fam.queries.type"! Reason: Unknown constant type: class ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionType
250 hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.patterns.RelationDefinitionIndexer.transformPattern(RelationDefinitionIndexer.java:205)
251 hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.patterns.RelationDefinitionIndexer.generateRelationDefinitions(RelationDefinitionIndexer.java:66)
252 hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.patterns.PatternGenerator.transformBaseProperties(PatternGenerator.java:423)
253 hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.patterns.PatternProvider.generateQueries(PatternProvider.java:59)
254 hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.ModelGenerationMethodProvider.createModelGenerationMethod(ModelGenerationMethodProvider.java:57)
255 hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner.ViatraReasoner.solve(ViatraReasoner.java:96)
256 hu.bme.mit.inf.dslreasoner.application.execution.GenerationTaskExecutor.executeGenerationTask(GenerationTaskExecutor.java:316)
257 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor._execute(ScriptExecutor.java:130)
258 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.execute(ScriptExecutor.java:339)
259 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.executeScript(ScriptExecutor.java:111)
260 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor$1.run(ScriptExecutor.java:73)
261 org.eclipse.core.internal.jobs.Worker.run(Worker.java:56)Error occured (NullPointerException):
262 hu.bme.mit.inf.dlsreasoner.alloy.reasoner.builder.Alloy2LogicMapper.transformOutput(Alloy2LogicMapper.java:53)
263 hu.bme.mit.inf.dlsreasoner.alloy.reasoner.AlloySolver.solve(AlloySolver.java:66)
264 hu.bme.mit.inf.dslreasoner.application.execution.GenerationTaskExecutor.executeGenerationTask(GenerationTaskExecutor.java:316)
265 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor._execute(ScriptExecutor.java:132)
266 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.execute(ScriptExecutor.java:343)
267 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.executeScript(ScriptExecutor.java:111)
268 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor$1.run(ScriptExecutor.java:73)
269 org.eclipse.core.internal.jobs.Worker.run(Worker.java:56)Error occured (UnsupportedOperationException): Can not transform pattern "ca.mcgill.ecse.dslreasoner.standalone.test.fam.queries.type"! Reason: Unknown constant type: class ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionType
270 hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.patterns.RelationDefinitionIndexer.transformPattern(RelationDefinitionIndexer.java:205)
271 hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.patterns.RelationDefinitionIndexer.generateRelationDefinitions(RelationDefinitionIndexer.java:66)
272 hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.patterns.PatternGenerator.transformBaseProperties(PatternGenerator.java:423)
273 hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.patterns.PatternProvider.generateQueries(PatternProvider.java:59)
274 hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.ModelGenerationMethodProvider.createModelGenerationMethod(ModelGenerationMethodProvider.java:57)
275 hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner.ViatraReasoner.solve(ViatraReasoner.java:96)
276 hu.bme.mit.inf.dslreasoner.application.execution.GenerationTaskExecutor.executeGenerationTask(GenerationTaskExecutor.java:316)
277 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor._execute(ScriptExecutor.java:132)
278 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.execute(ScriptExecutor.java:343)
279 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.executeScript(ScriptExecutor.java:111)
280 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor$1.run(ScriptExecutor.java:73)
281 org.eclipse.core.internal.jobs.Worker.run(Worker.java:56)Error occured (UnsupportedOperationException): Can not transform pattern "ca.mcgill.ecse.dslreasoner.standalone.test.fam.queries.type"! Reason: Unknown constant type: class ca.mcgill.ecse.dslreasoner.standalone.test.fam.FunctionType
282 hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.patterns.RelationDefinitionIndexer.transformPattern(RelationDefinitionIndexer.java:205)
283 hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.patterns.RelationDefinitionIndexer.generateRelationDefinitions(RelationDefinitionIndexer.java:66)
284 hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.patterns.PatternGenerator.transformBaseProperties(PatternGenerator.java:423)
285 hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.patterns.PatternProvider.generateQueries(PatternProvider.java:59)
286 hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.ModelGenerationMethodProvider.createModelGenerationMethod(ModelGenerationMethodProvider.java:57)
287 hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner.ViatraReasoner.solve(ViatraReasoner.java:96)
288 hu.bme.mit.inf.dslreasoner.application.execution.GenerationTaskExecutor.executeGenerationTask(GenerationTaskExecutor.java:316)
289 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor._execute(ScriptExecutor.java:132)
290 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.execute(ScriptExecutor.java:343)
291 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.executeScript(ScriptExecutor.java:111)
292 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor$1.run(ScriptExecutor.java:73)
293 org.eclipse.core.internal.jobs.Worker.run(Worker.java:56)Error occured (IllegalArgumentException): Unable to translate query "ca.mcgill.ecse.dslreasoner.standalone.test.ecore.queries.oppositeDifferentClass".
294Reason: IllegalArgumentException, Inconsistent types: [EStructuralFeature class, EModelElement class, ENamedElement class, EReference class, EObject class, ETypedElement class]
295 hu.bme.mit.inf.dslreasoner.viatra2logic.Viatra2Logic.transformQueries(Viatra2Logic.java:166)
296 hu.bme.mit.inf.dslreasoner.application.execution.GenerationTaskExecutor.executeGenerationTask(GenerationTaskExecutor.java:196)
297 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor._execute(ScriptExecutor.java:132)
298 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.execute(ScriptExecutor.java:343)
299 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.executeScript(ScriptExecutor.java:111)
300 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor$1.run(ScriptExecutor.java:73)
301 org.eclipse.core.internal.jobs.Worker.run(Worker.java:56)Error occured (IllegalArgumentException): Unable to translate query "ca.mcgill.ecse.dslreasoner.standalone.test.ecore.queries.oppositeDifferentClass".
302Reason: IllegalArgumentException, Inconsistent types: [EStructuralFeature class, EModelElement class, ENamedElement class, EReference class, EObject class, ETypedElement class]
303 hu.bme.mit.inf.dslreasoner.viatra2logic.Viatra2Logic.transformQueries(Viatra2Logic.java:166)
304 hu.bme.mit.inf.dslreasoner.application.execution.GenerationTaskExecutor.executeGenerationTask(GenerationTaskExecutor.java:196)
305 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor._execute(ScriptExecutor.java:132)
306 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.execute(ScriptExecutor.java:343)
307 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.executeScript(ScriptExecutor.java:111)
308 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor$1.run(ScriptExecutor.java:73)
195 org.eclipse.core.internal.jobs.Worker.run(Worker.java:56) \ No newline at end of file 309 org.eclipse.core.internal.jobs.Worker.run(Worker.java:56) \ No newline at end of file
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/debug/generated3valued.vql_deactivated b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/debug/generated3valued.vql_deactivated
index 88497c64..f02c64b0 100644
--- a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/debug/generated3valued.vql_deactivated
+++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/debug/generated3valued.vql_deactivated
@@ -31731,3 +31731,32525 @@ pattern refineRelation_value_attribute_EStringToStringMapEntry(
31731 find mayInRelationvalue_attribute_EStringToStringMapEntry(problem,interpretation,from,to); 31731 find mayInRelationvalue_attribute_EStringToStringMapEntry(problem,interpretation,from,to);
31732 neg find mustInRelationvalue_attribute_EStringToStringMapEntry(problem,interpretation,from,to); 31732 neg find mustInRelationvalue_attribute_EStringToStringMapEntry(problem,interpretation,from,to);
31733} 31733}
31734import epackage "http://www.bme.hu/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage"
31735import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/problem"
31736import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/language"
31737
31738//////////
31739// 0. Util
31740//////////
31741private pattern interpretation(problem:LogicProblem, interpretation:PartialInterpretation) {
31742 PartialInterpretation.problem(interpretation,problem);
31743}
31744
31745/////////////////////////
31746// 0.1 Existence
31747/////////////////////////
31748private pattern mustExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
31749 find interpretation(problem,interpretation);
31750 LogicProblem.elements(problem,element);
31751} or {
31752 find interpretation(problem,interpretation);
31753 PartialInterpretation.newElements(interpretation,element);
31754}
31755
31756private pattern mayExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
31757 find mustExist(problem,interpretation,element);
31758} or {
31759 find interpretation(problem,interpretation);
31760 neg find elementCloseWorld(element);
31761 PartialInterpretation.openWorldElements(interpretation,element);
31762}
31763
31764private pattern elementCloseWorld(element:DefinedElement) {
31765 PartialInterpretation.openWorldElements(i,element);
31766 PartialInterpretation.maxNewElements(i,0);
31767} or {
31768 Scope.targetTypeInterpretation(scope,interpretation);
31769 PartialTypeInterpratation.elements(interpretation,element);
31770 Scope.maxNewElements(scope,0);
31771}
31772
31773////////////////////////
31774// 0.2 Equivalence
31775////////////////////////
31776pattern mayEquivalent(problem:LogicProblem, interpretation:PartialInterpretation, a: DefinedElement, b: DefinedElement) {
31777 find mayExist(problem,interpretation,a);
31778 find mayExist(problem,interpretation,b);
31779 a == b;
31780}
31781
31782////////////////////////
31783// 0.3 Required Patterns by TypeIndexer
31784////////////////////////
31785private pattern typeInterpretation(problem:LogicProblem, interpretation:PartialInterpretation, type:TypeDeclaration, typeInterpretation:PartialComplexTypeInterpretation) {
31786 find interpretation(problem,interpretation);
31787 LogicProblem.types(problem,type);
31788 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
31789 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
31790}
31791
31792private pattern directInstanceOf(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement, type:Type) {
31793 find interpretation(problem,interpretation);
31794 LogicProblem.types(problem,type);
31795 TypeDefinition.elements(type,element);
31796} or {
31797 find interpretation(problem,interpretation);
31798 find typeInterpretation(problem,interpretation,type,typeInterpretation);
31799 PartialComplexTypeInterpretation.elements(typeInterpretation,element);
31800}
31801
31802private pattern isPrimitive(element: PrimitiveElement) {
31803 PrimitiveElement(element);
31804}
31805
31806//////////
31807// 1. Problem-Specific Base Indexers
31808//////////
31809// 1.1 Type Indexers
31810//////////
31811// 1.1.1 primitive Type Indexers
31812//////////
31813
31814//////////
31815// 1.1.2 domain-specific Type Indexers
31816//////////
31817/**
31818 * An element must be an instance of type "FunctionalElement class".
31819 */
31820private pattern mustInstanceOfFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
31821 Type.name(type,"FunctionalElement class");
31822 find directInstanceOf(problem,interpretation,element,type);
31823}
31824private pattern scopeDisallowsNewFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation) {
31825 find interpretation(problem,interpretation);
31826 PartialInterpretation.scopes(interpretation,scope);
31827 Scope.targetTypeInterpretation(scope,typeInterpretation);
31828 Scope.maxNewElements(scope,0);
31829 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
31830 Type.name(type,"FunctionalElement class");
31831}
31832
31833/**
31834 * An element may be an instance of type "FunctionalElement class".
31835 */
31836private pattern mayInstanceOfFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
31837{
31838 find interpretation(problem,interpretation);
31839 PartialInterpretation.newElements(interpretation,element);
31840 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
31841 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
31842 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
31843 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
31844 neg find mustInstanceOfFunction_class(problem,interpretation,element);
31845 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
31846 neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation);
31847 neg find isPrimitive(element);
31848} or {
31849 find interpretation(problem,interpretation);
31850 PartialInterpretation.openWorldElements(interpretation,element);
31851 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
31852 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
31853 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
31854 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
31855 neg find mustInstanceOfFunction_class(problem,interpretation,element);
31856 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
31857 neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation);
31858 neg find isPrimitive(element);
31859} or
31860{ find mustInstanceOfFunctionalElement_class(problem,interpretation,element); }
31861/**
31862 * An element must be an instance of type "FunctionalArchitectureModel class".
31863 */
31864private pattern mustInstanceOfFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
31865 Type.name(type,"FunctionalArchitectureModel class");
31866 find directInstanceOf(problem,interpretation,element,type);
31867}
31868private pattern scopeDisallowsNewFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation) {
31869 find interpretation(problem,interpretation);
31870 PartialInterpretation.scopes(interpretation,scope);
31871 Scope.targetTypeInterpretation(scope,typeInterpretation);
31872 Scope.maxNewElements(scope,0);
31873 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
31874 Type.name(type,"FunctionalArchitectureModel class");
31875}
31876
31877/**
31878 * An element may be an instance of type "FunctionalArchitectureModel class".
31879 */
31880private pattern mayInstanceOfFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
31881{
31882 find interpretation(problem,interpretation);
31883 PartialInterpretation.newElements(interpretation,element);
31884 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
31885 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
31886 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
31887 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
31888 neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element);
31889 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
31890 neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation);
31891 neg find isPrimitive(element);
31892} or {
31893 find interpretation(problem,interpretation);
31894 PartialInterpretation.openWorldElements(interpretation,element);
31895 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
31896 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
31897 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
31898 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
31899 neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element);
31900 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
31901 neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation);
31902 neg find isPrimitive(element);
31903} or
31904{ find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); }
31905/**
31906 * An element must be an instance of type "Function class".
31907 */
31908private pattern mustInstanceOfFunction_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
31909 Type.name(type,"Function class");
31910 find directInstanceOf(problem,interpretation,element,type);
31911}
31912private pattern scopeDisallowsNewFunction_class(problem:LogicProblem, interpretation:PartialInterpretation) {
31913 find interpretation(problem,interpretation);
31914 PartialInterpretation.scopes(interpretation,scope);
31915 Scope.targetTypeInterpretation(scope,typeInterpretation);
31916 Scope.maxNewElements(scope,0);
31917 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
31918 Type.name(type,"Function class");
31919}
31920
31921/**
31922 * An element may be an instance of type "Function class".
31923 */
31924private pattern mayInstanceOfFunction_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
31925{
31926 find interpretation(problem,interpretation);
31927 PartialInterpretation.newElements(interpretation,element);
31928 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
31929 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
31930 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
31931 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
31932 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
31933 neg find scopeDisallowsNewFunction_class(problem, interpretation);
31934 neg find isPrimitive(element);
31935} or {
31936 find interpretation(problem,interpretation);
31937 PartialInterpretation.openWorldElements(interpretation,element);
31938 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
31939 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
31940 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
31941 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
31942 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
31943 neg find scopeDisallowsNewFunction_class(problem, interpretation);
31944 neg find isPrimitive(element);
31945} or
31946{ find mustInstanceOfFunction_class(problem,interpretation,element); }
31947/**
31948 * An element must be an instance of type "FAMTerminator class".
31949 */
31950private pattern mustInstanceOfFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
31951 Type.name(type,"FAMTerminator class");
31952 find directInstanceOf(problem,interpretation,element,type);
31953}
31954private pattern scopeDisallowsNewFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation) {
31955 find interpretation(problem,interpretation);
31956 PartialInterpretation.scopes(interpretation,scope);
31957 Scope.targetTypeInterpretation(scope,typeInterpretation);
31958 Scope.maxNewElements(scope,0);
31959 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
31960 Type.name(type,"FAMTerminator class");
31961}
31962
31963/**
31964 * An element may be an instance of type "FAMTerminator class".
31965 */
31966private pattern mayInstanceOfFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
31967{
31968 find interpretation(problem,interpretation);
31969 PartialInterpretation.newElements(interpretation,element);
31970 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
31971 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
31972 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
31973 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
31974 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
31975 neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation);
31976 neg find isPrimitive(element);
31977} or {
31978 find interpretation(problem,interpretation);
31979 PartialInterpretation.openWorldElements(interpretation,element);
31980 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
31981 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
31982 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
31983 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
31984 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
31985 neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation);
31986 neg find isPrimitive(element);
31987} or
31988{ find mustInstanceOfFAMTerminator_class(problem,interpretation,element); }
31989/**
31990 * An element must be an instance of type "InformationLink class".
31991 */
31992private pattern mustInstanceOfInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
31993 Type.name(type,"InformationLink class");
31994 find directInstanceOf(problem,interpretation,element,type);
31995}
31996private pattern scopeDisallowsNewInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation) {
31997 find interpretation(problem,interpretation);
31998 PartialInterpretation.scopes(interpretation,scope);
31999 Scope.targetTypeInterpretation(scope,typeInterpretation);
32000 Scope.maxNewElements(scope,0);
32001 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
32002 Type.name(type,"InformationLink class");
32003}
32004
32005/**
32006 * An element may be an instance of type "InformationLink class".
32007 */
32008private pattern mayInstanceOfInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
32009{
32010 find interpretation(problem,interpretation);
32011 PartialInterpretation.newElements(interpretation,element);
32012 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
32013 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
32014 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
32015 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
32016 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
32017 neg find scopeDisallowsNewInformationLink_class(problem, interpretation);
32018 neg find isPrimitive(element);
32019} or {
32020 find interpretation(problem,interpretation);
32021 PartialInterpretation.openWorldElements(interpretation,element);
32022 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
32023 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
32024 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
32025 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
32026 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
32027 neg find scopeDisallowsNewInformationLink_class(problem, interpretation);
32028 neg find isPrimitive(element);
32029} or
32030{ find mustInstanceOfInformationLink_class(problem,interpretation,element); }
32031/**
32032 * An element must be an instance of type "FunctionalInterface class".
32033 */
32034private pattern mustInstanceOfFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
32035 Type.name(type,"FunctionalInterface class");
32036 find directInstanceOf(problem,interpretation,element,type);
32037}
32038private pattern scopeDisallowsNewFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation) {
32039 find interpretation(problem,interpretation);
32040 PartialInterpretation.scopes(interpretation,scope);
32041 Scope.targetTypeInterpretation(scope,typeInterpretation);
32042 Scope.maxNewElements(scope,0);
32043 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
32044 Type.name(type,"FunctionalInterface class");
32045}
32046
32047/**
32048 * An element may be an instance of type "FunctionalInterface class".
32049 */
32050private pattern mayInstanceOfFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
32051{
32052 find interpretation(problem,interpretation);
32053 PartialInterpretation.newElements(interpretation,element);
32054 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
32055 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
32056 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
32057 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
32058 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
32059 neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation);
32060 neg find isPrimitive(element);
32061} or {
32062 find interpretation(problem,interpretation);
32063 PartialInterpretation.openWorldElements(interpretation,element);
32064 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
32065 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
32066 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
32067 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
32068 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
32069 neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation);
32070 neg find isPrimitive(element);
32071} or
32072{ find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); }
32073/**
32074 * An element must be an instance of type "FunctionalInput class".
32075 */
32076private pattern mustInstanceOfFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
32077 Type.name(type,"FunctionalInput class");
32078 find directInstanceOf(problem,interpretation,element,type);
32079}
32080private pattern scopeDisallowsNewFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation) {
32081 find interpretation(problem,interpretation);
32082 PartialInterpretation.scopes(interpretation,scope);
32083 Scope.targetTypeInterpretation(scope,typeInterpretation);
32084 Scope.maxNewElements(scope,0);
32085 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
32086 Type.name(type,"FunctionalInput class");
32087}
32088
32089/**
32090 * An element may be an instance of type "FunctionalInput class".
32091 */
32092private pattern mayInstanceOfFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
32093{
32094 find interpretation(problem,interpretation);
32095 PartialInterpretation.newElements(interpretation,element);
32096 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
32097 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
32098 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
32099 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
32100 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
32101 neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element);
32102 neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation);
32103 neg find isPrimitive(element);
32104} or {
32105 find interpretation(problem,interpretation);
32106 PartialInterpretation.openWorldElements(interpretation,element);
32107 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
32108 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
32109 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
32110 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
32111 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
32112 neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element);
32113 neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation);
32114 neg find isPrimitive(element);
32115} or
32116{ find mustInstanceOfFunctionalInput_class(problem,interpretation,element); }
32117/**
32118 * An element must be an instance of type "FunctionalOutput class".
32119 */
32120private pattern mustInstanceOfFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
32121 Type.name(type,"FunctionalOutput class");
32122 find directInstanceOf(problem,interpretation,element,type);
32123}
32124private pattern scopeDisallowsNewFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation) {
32125 find interpretation(problem,interpretation);
32126 PartialInterpretation.scopes(interpretation,scope);
32127 Scope.targetTypeInterpretation(scope,typeInterpretation);
32128 Scope.maxNewElements(scope,0);
32129 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
32130 Type.name(type,"FunctionalOutput class");
32131}
32132
32133/**
32134 * An element may be an instance of type "FunctionalOutput class".
32135 */
32136private pattern mayInstanceOfFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
32137{
32138 find interpretation(problem,interpretation);
32139 PartialInterpretation.newElements(interpretation,element);
32140 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
32141 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
32142 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
32143 neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element);
32144 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
32145 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
32146 neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation);
32147 neg find isPrimitive(element);
32148} or {
32149 find interpretation(problem,interpretation);
32150 PartialInterpretation.openWorldElements(interpretation,element);
32151 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
32152 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
32153 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
32154 neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element);
32155 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
32156 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
32157 neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation);
32158 neg find isPrimitive(element);
32159} or
32160{ find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); }
32161/**
32162 * An element must be an instance of type "FunctionalData class".
32163 */
32164private pattern mustInstanceOfFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
32165 Type.name(type,"FunctionalData class");
32166 find directInstanceOf(problem,interpretation,element,type);
32167}
32168private pattern scopeDisallowsNewFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation) {
32169 find interpretation(problem,interpretation);
32170 PartialInterpretation.scopes(interpretation,scope);
32171 Scope.targetTypeInterpretation(scope,typeInterpretation);
32172 Scope.maxNewElements(scope,0);
32173 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
32174 Type.name(type,"FunctionalData class");
32175}
32176
32177/**
32178 * An element may be an instance of type "FunctionalData class".
32179 */
32180private pattern mayInstanceOfFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
32181{
32182 find interpretation(problem,interpretation);
32183 PartialInterpretation.newElements(interpretation,element);
32184 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
32185 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
32186 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
32187 neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element);
32188 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
32189 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
32190 neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element);
32191 neg find scopeDisallowsNewFunctionalData_class(problem, interpretation);
32192 neg find isPrimitive(element);
32193} or {
32194 find interpretation(problem,interpretation);
32195 PartialInterpretation.openWorldElements(interpretation,element);
32196 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
32197 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
32198 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
32199 neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element);
32200 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
32201 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
32202 neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element);
32203 neg find scopeDisallowsNewFunctionalData_class(problem, interpretation);
32204 neg find isPrimitive(element);
32205} or
32206{ find mustInstanceOfFunctionalData_class(problem,interpretation,element); }
32207/**
32208 * An element must be an instance of type "FunctionType enum".
32209 */
32210private pattern mustInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
32211 Type.name(type,"FunctionType enum");
32212 find directInstanceOf(problem,interpretation,element,type);
32213}
32214private pattern scopeDisallowsNewFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation) {
32215 find interpretation(problem,interpretation);
32216 PartialInterpretation.scopes(interpretation,scope);
32217 Scope.targetTypeInterpretation(scope,typeInterpretation);
32218 Scope.maxNewElements(scope,0);
32219 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
32220 Type.name(type,"FunctionType enum");
32221}
32222
32223/**
32224 * An element may be an instance of type "FunctionType enum".
32225 */
32226private pattern mayInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
32227{ find mustInstanceOfFunctionType_enum(problem,interpretation,element); }
32228/**
32229 * An element must be an instance of type "FunctionalArchitectureModel class DefinedPart".
32230 */
32231private pattern mustInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
32232 Type.name(type,"FunctionalArchitectureModel class DefinedPart");
32233 find directInstanceOf(problem,interpretation,element,type);
32234}
32235private pattern scopeDisallowsNewFunctionalArchitectureModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) {
32236 find interpretation(problem,interpretation);
32237 PartialInterpretation.scopes(interpretation,scope);
32238 Scope.targetTypeInterpretation(scope,typeInterpretation);
32239 Scope.maxNewElements(scope,0);
32240 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
32241 Type.name(type,"FunctionalArchitectureModel class DefinedPart");
32242}
32243
32244/**
32245 * An element may be an instance of type "FunctionalArchitectureModel class DefinedPart".
32246 */
32247private pattern mayInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
32248{ find mustInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem,interpretation,element); }
32249/**
32250 * An element must be an instance of type "FunctionalArchitectureModel class UndefinedPart".
32251 */
32252private pattern mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
32253 Type.name(type,"FunctionalArchitectureModel class UndefinedPart");
32254 find directInstanceOf(problem,interpretation,element,type);
32255}
32256private pattern scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) {
32257 find interpretation(problem,interpretation);
32258 PartialInterpretation.scopes(interpretation,scope);
32259 Scope.targetTypeInterpretation(scope,typeInterpretation);
32260 Scope.maxNewElements(scope,0);
32261 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
32262 Type.name(type,"FunctionalArchitectureModel class UndefinedPart");
32263}
32264
32265/**
32266 * An element may be an instance of type "FunctionalArchitectureModel class UndefinedPart".
32267 */
32268private pattern mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
32269{
32270 find interpretation(problem,interpretation);
32271 PartialInterpretation.newElements(interpretation,element);
32272 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
32273 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
32274 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
32275 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
32276 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
32277 neg find scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem, interpretation);
32278 neg find isPrimitive(element);
32279} or {
32280 find interpretation(problem,interpretation);
32281 PartialInterpretation.openWorldElements(interpretation,element);
32282 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
32283 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
32284 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
32285 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
32286 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
32287 neg find scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem, interpretation);
32288 neg find isPrimitive(element);
32289} or
32290{ find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); }
32291
32292//////////
32293// 1.2 Relation Declaration Indexers
32294//////////
32295/**
32296 * Matcher for detecting tuples t where []interface reference FunctionalElement(source,target)
32297 */
32298private pattern mustInRelationinterface_reference_FunctionalElement(
32299 problem:LogicProblem, interpretation:PartialInterpretation,
32300 source: DefinedElement, target:DefinedElement)
32301{
32302 find interpretation(problem,interpretation);
32303 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
32304 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface reference FunctionalElement");
32305 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
32306 BinaryElementRelationLink.param1(link,source);
32307 BinaryElementRelationLink.param2(link,target);
32308}
32309/**
32310 * Matcher for detecting tuples t where <>interface reference FunctionalElement(source,target)
32311 */
32312private pattern mayInRelationinterface_reference_FunctionalElement(
32313 problem:LogicProblem, interpretation:PartialInterpretation,
32314 source: DefinedElement, target:DefinedElement)
32315{
32316 find interpretation(problem,interpretation);
32317 // The two endpoint of the link have to exist
32318 find mayExist(problem, interpretation, source);
32319 find mayExist(problem, interpretation, target);
32320 // Type consistency
32321 find mayInstanceOfFunctionalElement_class(problem,interpretation,source);
32322 find mayInstanceOfFunctionalInterface_class(problem,interpretation,target);
32323 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
32324 // the upper bound of the multiplicity should be considered.
32325 numberOfExistingReferences == count find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,_);
32326 check(numberOfExistingReferences < 1);
32327 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
32328 // the upper bound of the opposite reference multiplicity should be considered.
32329 numberOfExistingOppositeReferences == count find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,target,_);
32330 check(numberOfExistingOppositeReferences < 1);
32331 // The reference is containment, then a new reference cannot be create if:
32332 // 1. Multiple parents
32333 neg find mustContains4(problem,interpretation,_,target);
32334 // 2. Circle in the containment hierarchy
32335 neg find mustTransitiveContains(source,target);
32336} or {
32337 find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,target);
32338}
32339/**
32340 * Matcher for detecting tuples t where []model reference FunctionalElement(source,target)
32341 */
32342private pattern mustInRelationmodel_reference_FunctionalElement(
32343 problem:LogicProblem, interpretation:PartialInterpretation,
32344 source: DefinedElement, target:DefinedElement)
32345{
32346 find interpretation(problem,interpretation);
32347 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
32348 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement");
32349 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
32350 BinaryElementRelationLink.param1(link,source);
32351 BinaryElementRelationLink.param2(link,target);
32352}
32353/**
32354 * Matcher for detecting tuples t where <>model reference FunctionalElement(source,target)
32355 */
32356private pattern mayInRelationmodel_reference_FunctionalElement(
32357 problem:LogicProblem, interpretation:PartialInterpretation,
32358 source: DefinedElement, target:DefinedElement)
32359{
32360 find interpretation(problem,interpretation);
32361 // The two endpoint of the link have to exist
32362 find mayExist(problem, interpretation, source);
32363 find mayExist(problem, interpretation, target);
32364 // Type consistency
32365 find mayInstanceOfFunctionalElement_class(problem,interpretation,source);
32366 find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,target);
32367 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
32368 // the upper bound of the multiplicity should be considered.
32369 numberOfExistingReferences == count find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,source,_);
32370 check(numberOfExistingReferences < 1);
32371} or {
32372 find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,source,target);
32373}
32374/**
32375 * Matcher for detecting tuples t where []parent reference FunctionalElement(source,target)
32376 */
32377private pattern mustInRelationparent_reference_FunctionalElement(
32378 problem:LogicProblem, interpretation:PartialInterpretation,
32379 source: DefinedElement, target:DefinedElement)
32380{
32381 find interpretation(problem,interpretation);
32382 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
32383 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"parent reference FunctionalElement");
32384 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
32385 BinaryElementRelationLink.param1(link,source);
32386 BinaryElementRelationLink.param2(link,target);
32387}
32388/**
32389 * Matcher for detecting tuples t where <>parent reference FunctionalElement(source,target)
32390 */
32391private pattern mayInRelationparent_reference_FunctionalElement(
32392 problem:LogicProblem, interpretation:PartialInterpretation,
32393 source: DefinedElement, target:DefinedElement)
32394{
32395 find interpretation(problem,interpretation);
32396 // The two endpoint of the link have to exist
32397 find mayExist(problem, interpretation, source);
32398 find mayExist(problem, interpretation, target);
32399 // Type consistency
32400 find mayInstanceOfFunctionalElement_class(problem,interpretation,source);
32401 find mayInstanceOfFunction_class(problem,interpretation,target);
32402 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
32403 // the upper bound of the multiplicity should be considered.
32404 numberOfExistingReferences == count find mustInRelationparent_reference_FunctionalElement(problem,interpretation,source,_);
32405 check(numberOfExistingReferences < 1);
32406 // The eOpposite of the reference is containment, then a referene cannot be created if
32407 // 1. Multiple parents
32408 neg find mustContains4(problem,interpretation,source,_);
32409 // 2. Circle in the containment hierarchy
32410 neg find mustTransitiveContains(source,target);
32411} or {
32412 find mustInRelationparent_reference_FunctionalElement(problem,interpretation,source,target);
32413}
32414/**
32415 * Matcher for detecting tuples t where []rootElements reference FunctionalArchitectureModel(source,target)
32416 */
32417private pattern mustInRelationrootElements_reference_FunctionalArchitectureModel(
32418 problem:LogicProblem, interpretation:PartialInterpretation,
32419 source: DefinedElement, target:DefinedElement)
32420{
32421 find interpretation(problem,interpretation);
32422 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
32423 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"rootElements reference FunctionalArchitectureModel");
32424 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
32425 BinaryElementRelationLink.param1(link,source);
32426 BinaryElementRelationLink.param2(link,target);
32427}
32428/**
32429 * Matcher for detecting tuples t where <>rootElements reference FunctionalArchitectureModel(source,target)
32430 */
32431private pattern mayInRelationrootElements_reference_FunctionalArchitectureModel(
32432 problem:LogicProblem, interpretation:PartialInterpretation,
32433 source: DefinedElement, target:DefinedElement)
32434{
32435 find interpretation(problem,interpretation);
32436 // The two endpoint of the link have to exist
32437 find mayExist(problem, interpretation, source);
32438 find mayExist(problem, interpretation, target);
32439 // Type consistency
32440 find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,source);
32441 find mayInstanceOfFunctionalElement_class(problem,interpretation,target);
32442 // The reference is containment, then a new reference cannot be create if:
32443 // 1. Multiple parents
32444 neg find mustContains4(problem,interpretation,_,target);
32445 // 2. Circle in the containment hierarchy
32446 neg find mustTransitiveContains(source,target);
32447} or {
32448 find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,source,target);
32449}
32450/**
32451 * Matcher for detecting tuples t where []subElements reference Function(source,target)
32452 */
32453private pattern mustInRelationsubElements_reference_Function(
32454 problem:LogicProblem, interpretation:PartialInterpretation,
32455 source: DefinedElement, target:DefinedElement)
32456{
32457 find interpretation(problem,interpretation);
32458 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
32459 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"subElements reference Function");
32460 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
32461 BinaryElementRelationLink.param1(link,source);
32462 BinaryElementRelationLink.param2(link,target);
32463}
32464/**
32465 * Matcher for detecting tuples t where <>subElements reference Function(source,target)
32466 */
32467private pattern mayInRelationsubElements_reference_Function(
32468 problem:LogicProblem, interpretation:PartialInterpretation,
32469 source: DefinedElement, target:DefinedElement)
32470{
32471 find interpretation(problem,interpretation);
32472 // The two endpoint of the link have to exist
32473 find mayExist(problem, interpretation, source);
32474 find mayExist(problem, interpretation, target);
32475 // Type consistency
32476 find mayInstanceOfFunction_class(problem,interpretation,source);
32477 find mayInstanceOfFunctionalElement_class(problem,interpretation,target);
32478 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
32479 // the upper bound of the opposite reference multiplicity should be considered.
32480 numberOfExistingOppositeReferences == count find mustInRelationparent_reference_FunctionalElement(problem,interpretation,target,_);
32481 check(numberOfExistingOppositeReferences < 1);
32482 // The reference is containment, then a new reference cannot be create if:
32483 // 1. Multiple parents
32484 neg find mustContains4(problem,interpretation,_,target);
32485 // 2. Circle in the containment hierarchy
32486 neg find mustTransitiveContains(source,target);
32487} or {
32488 find mustInRelationsubElements_reference_Function(problem,interpretation,source,target);
32489}
32490/**
32491 * Matcher for detecting tuples t where []data reference FAMTerminator(source,target)
32492 */
32493private pattern mustInRelationdata_reference_FAMTerminator(
32494 problem:LogicProblem, interpretation:PartialInterpretation,
32495 source: DefinedElement, target:DefinedElement)
32496{
32497 find interpretation(problem,interpretation);
32498 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
32499 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"data reference FAMTerminator");
32500 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
32501 BinaryElementRelationLink.param1(link,source);
32502 BinaryElementRelationLink.param2(link,target);
32503}
32504/**
32505 * Matcher for detecting tuples t where <>data reference FAMTerminator(source,target)
32506 */
32507private pattern mayInRelationdata_reference_FAMTerminator(
32508 problem:LogicProblem, interpretation:PartialInterpretation,
32509 source: DefinedElement, target:DefinedElement)
32510{
32511 find interpretation(problem,interpretation);
32512 // The two endpoint of the link have to exist
32513 find mayExist(problem, interpretation, source);
32514 find mayExist(problem, interpretation, target);
32515 // Type consistency
32516 find mayInstanceOfFAMTerminator_class(problem,interpretation,source);
32517 find mayInstanceOfFunctionalData_class(problem,interpretation,target);
32518 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
32519 // the upper bound of the multiplicity should be considered.
32520 numberOfExistingReferences == count find mustInRelationdata_reference_FAMTerminator(problem,interpretation,source,_);
32521 check(numberOfExistingReferences < 1);
32522 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
32523 // the upper bound of the opposite reference multiplicity should be considered.
32524 numberOfExistingOppositeReferences == count find mustInRelationterminator_reference_FunctionalData(problem,interpretation,target,_);
32525 check(numberOfExistingOppositeReferences < 1);
32526 // The eOpposite of the reference is containment, then a referene cannot be created if
32527 // 1. Multiple parents
32528 neg find mustContains4(problem,interpretation,source,_);
32529 // 2. Circle in the containment hierarchy
32530 neg find mustTransitiveContains(source,target);
32531} or {
32532 find mustInRelationdata_reference_FAMTerminator(problem,interpretation,source,target);
32533}
32534/**
32535 * Matcher for detecting tuples t where []from reference InformationLink(source,target)
32536 */
32537private pattern mustInRelationfrom_reference_InformationLink(
32538 problem:LogicProblem, interpretation:PartialInterpretation,
32539 source: DefinedElement, target:DefinedElement)
32540{
32541 find interpretation(problem,interpretation);
32542 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
32543 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"from reference InformationLink");
32544 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
32545 BinaryElementRelationLink.param1(link,source);
32546 BinaryElementRelationLink.param2(link,target);
32547}
32548/**
32549 * Matcher for detecting tuples t where <>from reference InformationLink(source,target)
32550 */
32551private pattern mayInRelationfrom_reference_InformationLink(
32552 problem:LogicProblem, interpretation:PartialInterpretation,
32553 source: DefinedElement, target:DefinedElement)
32554{
32555 find interpretation(problem,interpretation);
32556 // The two endpoint of the link have to exist
32557 find mayExist(problem, interpretation, source);
32558 find mayExist(problem, interpretation, target);
32559 // Type consistency
32560 find mayInstanceOfInformationLink_class(problem,interpretation,source);
32561 find mayInstanceOfFunctionalOutput_class(problem,interpretation,target);
32562 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
32563 // the upper bound of the multiplicity should be considered.
32564 numberOfExistingReferences == count find mustInRelationfrom_reference_InformationLink(problem,interpretation,source,_);
32565 check(numberOfExistingReferences < 1);
32566 // The eOpposite of the reference is containment, then a referene cannot be created if
32567 // 1. Multiple parents
32568 neg find mustContains4(problem,interpretation,source,_);
32569 // 2. Circle in the containment hierarchy
32570 neg find mustTransitiveContains(source,target);
32571} or {
32572 find mustInRelationfrom_reference_InformationLink(problem,interpretation,source,target);
32573}
32574/**
32575 * Matcher for detecting tuples t where []to reference InformationLink(source,target)
32576 */
32577private pattern mustInRelationto_reference_InformationLink(
32578 problem:LogicProblem, interpretation:PartialInterpretation,
32579 source: DefinedElement, target:DefinedElement)
32580{
32581 find interpretation(problem,interpretation);
32582 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
32583 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"to reference InformationLink");
32584 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
32585 BinaryElementRelationLink.param1(link,source);
32586 BinaryElementRelationLink.param2(link,target);
32587}
32588/**
32589 * Matcher for detecting tuples t where <>to reference InformationLink(source,target)
32590 */
32591private pattern mayInRelationto_reference_InformationLink(
32592 problem:LogicProblem, interpretation:PartialInterpretation,
32593 source: DefinedElement, target:DefinedElement)
32594{
32595 find interpretation(problem,interpretation);
32596 // The two endpoint of the link have to exist
32597 find mayExist(problem, interpretation, source);
32598 find mayExist(problem, interpretation, target);
32599 // Type consistency
32600 find mayInstanceOfInformationLink_class(problem,interpretation,source);
32601 find mayInstanceOfFunctionalInput_class(problem,interpretation,target);
32602 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
32603 // the upper bound of the multiplicity should be considered.
32604 numberOfExistingReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,source,_);
32605 check(numberOfExistingReferences < 1);
32606} or {
32607 find mustInRelationto_reference_InformationLink(problem,interpretation,source,target);
32608}
32609/**
32610 * Matcher for detecting tuples t where []data reference FunctionalInterface(source,target)
32611 */
32612private pattern mustInRelationdata_reference_FunctionalInterface(
32613 problem:LogicProblem, interpretation:PartialInterpretation,
32614 source: DefinedElement, target:DefinedElement)
32615{
32616 find interpretation(problem,interpretation);
32617 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
32618 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"data reference FunctionalInterface");
32619 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
32620 BinaryElementRelationLink.param1(link,source);
32621 BinaryElementRelationLink.param2(link,target);
32622}
32623/**
32624 * Matcher for detecting tuples t where <>data reference FunctionalInterface(source,target)
32625 */
32626private pattern mayInRelationdata_reference_FunctionalInterface(
32627 problem:LogicProblem, interpretation:PartialInterpretation,
32628 source: DefinedElement, target:DefinedElement)
32629{
32630 find interpretation(problem,interpretation);
32631 // The two endpoint of the link have to exist
32632 find mayExist(problem, interpretation, source);
32633 find mayExist(problem, interpretation, target);
32634 // Type consistency
32635 find mayInstanceOfFunctionalInterface_class(problem,interpretation,source);
32636 find mayInstanceOfFunctionalData_class(problem,interpretation,target);
32637 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
32638 // the upper bound of the opposite reference multiplicity should be considered.
32639 numberOfExistingOppositeReferences == count find mustInRelationinterface_reference_FunctionalData(problem,interpretation,target,_);
32640 check(numberOfExistingOppositeReferences < 1);
32641 // The reference is containment, then a new reference cannot be create if:
32642 // 1. Multiple parents
32643 neg find mustContains4(problem,interpretation,_,target);
32644 // 2. Circle in the containment hierarchy
32645 neg find mustTransitiveContains(source,target);
32646} or {
32647 find mustInRelationdata_reference_FunctionalInterface(problem,interpretation,source,target);
32648}
32649/**
32650 * Matcher for detecting tuples t where []element reference FunctionalInterface(source,target)
32651 */
32652private pattern mustInRelationelement_reference_FunctionalInterface(
32653 problem:LogicProblem, interpretation:PartialInterpretation,
32654 source: DefinedElement, target:DefinedElement)
32655{
32656 find interpretation(problem,interpretation);
32657 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
32658 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"element reference FunctionalInterface");
32659 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
32660 BinaryElementRelationLink.param1(link,source);
32661 BinaryElementRelationLink.param2(link,target);
32662}
32663/**
32664 * Matcher for detecting tuples t where <>element reference FunctionalInterface(source,target)
32665 */
32666private pattern mayInRelationelement_reference_FunctionalInterface(
32667 problem:LogicProblem, interpretation:PartialInterpretation,
32668 source: DefinedElement, target:DefinedElement)
32669{
32670 find interpretation(problem,interpretation);
32671 // The two endpoint of the link have to exist
32672 find mayExist(problem, interpretation, source);
32673 find mayExist(problem, interpretation, target);
32674 // Type consistency
32675 find mayInstanceOfFunctionalInterface_class(problem,interpretation,source);
32676 find mayInstanceOfFunctionalElement_class(problem,interpretation,target);
32677 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
32678 // the upper bound of the multiplicity should be considered.
32679 numberOfExistingReferences == count find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,source,_);
32680 check(numberOfExistingReferences < 1);
32681 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
32682 // the upper bound of the opposite reference multiplicity should be considered.
32683 numberOfExistingOppositeReferences == count find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,target,_);
32684 check(numberOfExistingOppositeReferences < 1);
32685 // The eOpposite of the reference is containment, then a referene cannot be created if
32686 // 1. Multiple parents
32687 neg find mustContains4(problem,interpretation,source,_);
32688 // 2. Circle in the containment hierarchy
32689 neg find mustTransitiveContains(source,target);
32690} or {
32691 find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,source,target);
32692}
32693/**
32694 * Matcher for detecting tuples t where []IncomingLinks reference FunctionalInput(source,target)
32695 */
32696private pattern mustInRelationIncomingLinks_reference_FunctionalInput(
32697 problem:LogicProblem, interpretation:PartialInterpretation,
32698 source: DefinedElement, target:DefinedElement)
32699{
32700 find interpretation(problem,interpretation);
32701 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
32702 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"IncomingLinks reference FunctionalInput");
32703 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
32704 BinaryElementRelationLink.param1(link,source);
32705 BinaryElementRelationLink.param2(link,target);
32706}
32707/**
32708 * Matcher for detecting tuples t where <>IncomingLinks reference FunctionalInput(source,target)
32709 */
32710private pattern mayInRelationIncomingLinks_reference_FunctionalInput(
32711 problem:LogicProblem, interpretation:PartialInterpretation,
32712 source: DefinedElement, target:DefinedElement)
32713{
32714 find interpretation(problem,interpretation);
32715 // The two endpoint of the link have to exist
32716 find mayExist(problem, interpretation, source);
32717 find mayExist(problem, interpretation, target);
32718 // Type consistency
32719 find mayInstanceOfFunctionalInput_class(problem,interpretation,source);
32720 find mayInstanceOfInformationLink_class(problem,interpretation,target);
32721 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
32722 // the upper bound of the opposite reference multiplicity should be considered.
32723 numberOfExistingOppositeReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,target,_);
32724 check(numberOfExistingOppositeReferences < 1);
32725} or {
32726 find mustInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,source,target);
32727}
32728/**
32729 * Matcher for detecting tuples t where []outgoingLinks reference FunctionalOutput(source,target)
32730 */
32731private pattern mustInRelationoutgoingLinks_reference_FunctionalOutput(
32732 problem:LogicProblem, interpretation:PartialInterpretation,
32733 source: DefinedElement, target:DefinedElement)
32734{
32735 find interpretation(problem,interpretation);
32736 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
32737 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"outgoingLinks reference FunctionalOutput");
32738 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
32739 BinaryElementRelationLink.param1(link,source);
32740 BinaryElementRelationLink.param2(link,target);
32741}
32742/**
32743 * Matcher for detecting tuples t where <>outgoingLinks reference FunctionalOutput(source,target)
32744 */
32745private pattern mayInRelationoutgoingLinks_reference_FunctionalOutput(
32746 problem:LogicProblem, interpretation:PartialInterpretation,
32747 source: DefinedElement, target:DefinedElement)
32748{
32749 find interpretation(problem,interpretation);
32750 // The two endpoint of the link have to exist
32751 find mayExist(problem, interpretation, source);
32752 find mayExist(problem, interpretation, target);
32753 // Type consistency
32754 find mayInstanceOfFunctionalOutput_class(problem,interpretation,source);
32755 find mayInstanceOfInformationLink_class(problem,interpretation,target);
32756 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
32757 // the upper bound of the opposite reference multiplicity should be considered.
32758 numberOfExistingOppositeReferences == count find mustInRelationfrom_reference_InformationLink(problem,interpretation,target,_);
32759 check(numberOfExistingOppositeReferences < 1);
32760 // The reference is containment, then a new reference cannot be create if:
32761 // 1. Multiple parents
32762 neg find mustContains4(problem,interpretation,_,target);
32763 // 2. Circle in the containment hierarchy
32764 neg find mustTransitiveContains(source,target);
32765} or {
32766 find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,source,target);
32767}
32768/**
32769 * Matcher for detecting tuples t where []terminator reference FunctionalData(source,target)
32770 */
32771private pattern mustInRelationterminator_reference_FunctionalData(
32772 problem:LogicProblem, interpretation:PartialInterpretation,
32773 source: DefinedElement, target:DefinedElement)
32774{
32775 find interpretation(problem,interpretation);
32776 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
32777 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"terminator reference FunctionalData");
32778 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
32779 BinaryElementRelationLink.param1(link,source);
32780 BinaryElementRelationLink.param2(link,target);
32781}
32782/**
32783 * Matcher for detecting tuples t where <>terminator reference FunctionalData(source,target)
32784 */
32785private pattern mayInRelationterminator_reference_FunctionalData(
32786 problem:LogicProblem, interpretation:PartialInterpretation,
32787 source: DefinedElement, target:DefinedElement)
32788{
32789 find interpretation(problem,interpretation);
32790 // The two endpoint of the link have to exist
32791 find mayExist(problem, interpretation, source);
32792 find mayExist(problem, interpretation, target);
32793 // Type consistency
32794 find mayInstanceOfFunctionalData_class(problem,interpretation,source);
32795 find mayInstanceOfFAMTerminator_class(problem,interpretation,target);
32796 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
32797 // the upper bound of the multiplicity should be considered.
32798 numberOfExistingReferences == count find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,_);
32799 check(numberOfExistingReferences < 1);
32800 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
32801 // the upper bound of the opposite reference multiplicity should be considered.
32802 numberOfExistingOppositeReferences == count find mustInRelationdata_reference_FAMTerminator(problem,interpretation,target,_);
32803 check(numberOfExistingOppositeReferences < 1);
32804 // The reference is containment, then a new reference cannot be create if:
32805 // 1. Multiple parents
32806 neg find mustContains4(problem,interpretation,_,target);
32807 // 2. Circle in the containment hierarchy
32808 neg find mustTransitiveContains(source,target);
32809} or {
32810 find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,target);
32811}
32812/**
32813 * Matcher for detecting tuples t where []interface reference FunctionalData(source,target)
32814 */
32815private pattern mustInRelationinterface_reference_FunctionalData(
32816 problem:LogicProblem, interpretation:PartialInterpretation,
32817 source: DefinedElement, target:DefinedElement)
32818{
32819 find interpretation(problem,interpretation);
32820 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
32821 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface reference FunctionalData");
32822 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
32823 BinaryElementRelationLink.param1(link,source);
32824 BinaryElementRelationLink.param2(link,target);
32825}
32826/**
32827 * Matcher for detecting tuples t where <>interface reference FunctionalData(source,target)
32828 */
32829private pattern mayInRelationinterface_reference_FunctionalData(
32830 problem:LogicProblem, interpretation:PartialInterpretation,
32831 source: DefinedElement, target:DefinedElement)
32832{
32833 find interpretation(problem,interpretation);
32834 // The two endpoint of the link have to exist
32835 find mayExist(problem, interpretation, source);
32836 find mayExist(problem, interpretation, target);
32837 // Type consistency
32838 find mayInstanceOfFunctionalData_class(problem,interpretation,source);
32839 find mayInstanceOfFunctionalInterface_class(problem,interpretation,target);
32840 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
32841 // the upper bound of the multiplicity should be considered.
32842 numberOfExistingReferences == count find mustInRelationinterface_reference_FunctionalData(problem,interpretation,source,_);
32843 check(numberOfExistingReferences < 1);
32844 // The eOpposite of the reference is containment, then a referene cannot be created if
32845 // 1. Multiple parents
32846 neg find mustContains4(problem,interpretation,source,_);
32847 // 2. Circle in the containment hierarchy
32848 neg find mustTransitiveContains(source,target);
32849} or {
32850 find mustInRelationinterface_reference_FunctionalData(problem,interpretation,source,target);
32851}
32852/**
32853 * Matcher for detecting tuples t where []type attribute Function(source,target)
32854 */
32855private pattern mustInRelationtype_attribute_Function(
32856 problem:LogicProblem, interpretation:PartialInterpretation,
32857 source: DefinedElement, target:DefinedElement)
32858{
32859 find interpretation(problem,interpretation);
32860 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
32861 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function");
32862 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
32863 BinaryElementRelationLink.param1(link,source);
32864 BinaryElementRelationLink.param2(link,target);
32865}
32866/**
32867 * Matcher for detecting tuples t where <>type attribute Function(source,target)
32868 */
32869private pattern mayInRelationtype_attribute_Function(
32870 problem:LogicProblem, interpretation:PartialInterpretation,
32871 source: DefinedElement, target:DefinedElement)
32872{
32873 find interpretation(problem,interpretation);
32874 // The two endpoint of the link have to exist
32875 find mayExist(problem, interpretation, source);
32876 find mayExist(problem, interpretation, target);
32877 // Type consistency
32878 find mayInstanceOfFunction_class(problem,interpretation,source);
32879 find mayInstanceOfFunctionType_enum(problem,interpretation,target);
32880 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
32881 // the upper bound of the multiplicity should be considered.
32882 numberOfExistingReferences == count find mustInRelationtype_attribute_Function(problem,interpretation,source,_);
32883 check(numberOfExistingReferences < 1);
32884} or {
32885 find mustInRelationtype_attribute_Function(problem,interpretation,source,target);
32886}
32887
32888//////////
32889// 1.3 Relation Definition Indexers
32890//////////
32891
32892//////////
32893// 1.4 Containment Indexer
32894//////////
32895private pattern mustContains2(source: DefinedElement, target: DefinedElement) {
32896 find mustContains4(_,_,source,target);
32897}
32898
32899private pattern mustContains4(problem:LogicProblem, interpretation:PartialInterpretation,
32900 source: DefinedElement, target: DefinedElement)
32901 { find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,target); }or
32902
32903 { find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,source,target); }or
32904
32905 { find mustInRelationsubElements_reference_Function(problem,interpretation,source,target); }or
32906
32907 { find mustInRelationdata_reference_FunctionalInterface(problem,interpretation,source,target); }or
32908
32909 { find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,source,target); }or
32910
32911 { find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,target); }
32912
32913private pattern mustTransitiveContains(source,target) {
32914 find mustContains2+(source,target);
32915}
32916
32917//////////
32918// 2. Invalidation Indexers
32919//////////
32920// 2.1 Invalidated by WF Queries
32921//////////
32922
32923//////////
32924// 3. Unfinishedness Indexers
32925//////////
32926// 3.1 Unfinishedness Measured by Multiplicity
32927//////////
32928pattern unfinishedLowerMultiplicity_model_reference_FunctionalElement(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) {
32929 find interpretation(problem,interpretation);
32930 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
32931 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement");
32932 find mustInstanceOfFunctionalElement_class(problem,interpretation,object);
32933 numberOfExistingReferences == count find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,object,_);
32934 check(numberOfExistingReferences < 1);
32935 missingMultiplicity == eval(1-numberOfExistingReferences);
32936}
32937pattern unfinishedLowerMultiplicity_to_reference_InformationLink(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) {
32938 find interpretation(problem,interpretation);
32939 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
32940 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"to reference InformationLink");
32941 find mustInstanceOfInformationLink_class(problem,interpretation,object);
32942 numberOfExistingReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,object,_);
32943 check(numberOfExistingReferences < 1);
32944 missingMultiplicity == eval(1-numberOfExistingReferences);
32945}
32946pattern unfinishedLowerMultiplicity_type_attribute_Function(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) {
32947 find interpretation(problem,interpretation);
32948 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
32949 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function");
32950 find mustInstanceOfFunction_class(problem,interpretation,object);
32951 numberOfExistingReferences == count find mustInRelationtype_attribute_Function(problem,interpretation,object,_);
32952 check(numberOfExistingReferences < 1);
32953 missingMultiplicity == eval(1-numberOfExistingReferences);
32954}
32955
32956//////////
32957// 3.2 Unfinishedness Measured by WF Queries
32958//////////
32959
32960//////////
32961// 4. Refinement Indexers
32962//////////
32963// 4.1 Object constructors
32964//////////
32965private pattern hasElementInContainment(problem:LogicProblem, interpretation:PartialInterpretation)
32966{
32967 find interpretation(problem,interpretation);
32968 find mustInstanceOfFunctionalInput_class(problem,interpretation,root);
32969 find mustExist(problem, interpretation, root);
32970}or{
32971 find interpretation(problem,interpretation);
32972 find mustInstanceOfFAMTerminator_class(problem,interpretation,root);
32973 find mustExist(problem, interpretation, root);
32974}or{
32975 find interpretation(problem,interpretation);
32976 find mustInstanceOfFunction_class(problem,interpretation,root);
32977 find mustExist(problem, interpretation, root);
32978}or{
32979 find interpretation(problem,interpretation);
32980 find mustInstanceOfInformationLink_class(problem,interpretation,root);
32981 find mustExist(problem, interpretation, root);
32982}or{
32983 find interpretation(problem,interpretation);
32984 find mustInstanceOfFunctionalElement_class(problem,interpretation,root);
32985 find mustExist(problem, interpretation, root);
32986}or{
32987 find interpretation(problem,interpretation);
32988 find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,root);
32989 find mustExist(problem, interpretation, root);
32990}or{
32991 find interpretation(problem,interpretation);
32992 find mustInstanceOfFunctionalOutput_class(problem,interpretation,root);
32993 find mustExist(problem, interpretation, root);
32994}or{
32995 find interpretation(problem,interpretation);
32996 find mustInstanceOfFunctionalData_class(problem,interpretation,root);
32997 find mustExist(problem, interpretation, root);
32998}or{
32999 find interpretation(problem,interpretation);
33000 find mustInstanceOfFunctionalInterface_class(problem,interpretation,root);
33001 find mustExist(problem, interpretation, root);
33002}or{
33003 find interpretation(problem,interpretation);
33004 find mustInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem,interpretation,root);
33005 find mustExist(problem, interpretation, root);
33006}or{
33007 find interpretation(problem,interpretation);
33008 find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,root);
33009 find mustExist(problem, interpretation, root);
33010}
33011pattern createObject_FunctionalInterface_class_by_interface_reference_FunctionalElement_with_element_reference_FunctionalInterface(
33012 problem:LogicProblem, interpretation:PartialInterpretation,
33013 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
33014 container:DefinedElement)
33015{
33016 find interpretation(problem,interpretation);
33017 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
33018 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class");
33019 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
33020 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"interface reference FunctionalElement");
33021 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
33022 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"element reference FunctionalInterface");
33023 find mustInstanceOfFunctionalElement_class(problem,interpretation,container);
33024 find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject);
33025 find mayInRelationinterface_reference_FunctionalElement(problem,interpretation,container,newObject);
33026 find mustExist(problem, interpretation, container);
33027 neg find mustExist(problem, interpretation, newObject);
33028}
33029pattern createObject_FunctionalInterface_class(
33030 problem:LogicProblem, interpretation:PartialInterpretation,
33031 typeInterpretation:PartialComplexTypeInterpretation)
33032{
33033 find interpretation(problem,interpretation);
33034 neg find hasElementInContainment(problem,interpretation);
33035 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
33036 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class");
33037 find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject);
33038 find mayExist(problem, interpretation, newObject);
33039 neg find mustExist(problem, interpretation, newObject);
33040}
33041pattern createObject_InformationLink_class_by_outgoingLinks_reference_FunctionalOutput_with_from_reference_InformationLink(
33042 problem:LogicProblem, interpretation:PartialInterpretation,
33043 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
33044 container:DefinedElement)
33045{
33046 find interpretation(problem,interpretation);
33047 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
33048 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class");
33049 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
33050 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"outgoingLinks reference FunctionalOutput");
33051 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
33052 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"from reference InformationLink");
33053 find mustInstanceOfFunctionalOutput_class(problem,interpretation,container);
33054 find mayInstanceOfInformationLink_class(problem,interpretation,newObject);
33055 find mayInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,container,newObject);
33056 find mustExist(problem, interpretation, container);
33057 neg find mustExist(problem, interpretation, newObject);
33058}
33059pattern createObject_InformationLink_class(
33060 problem:LogicProblem, interpretation:PartialInterpretation,
33061 typeInterpretation:PartialComplexTypeInterpretation)
33062{
33063 find interpretation(problem,interpretation);
33064 neg find hasElementInContainment(problem,interpretation);
33065 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
33066 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class");
33067 find mayInstanceOfInformationLink_class(problem,interpretation,newObject);
33068 find mayExist(problem, interpretation, newObject);
33069 neg find mustExist(problem, interpretation, newObject);
33070}
33071pattern createObject_FAMTerminator_class_by_terminator_reference_FunctionalData_with_data_reference_FAMTerminator(
33072 problem:LogicProblem, interpretation:PartialInterpretation,
33073 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
33074 container:DefinedElement)
33075{
33076 find interpretation(problem,interpretation);
33077 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
33078 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class");
33079 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
33080 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"terminator reference FunctionalData");
33081 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
33082 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"data reference FAMTerminator");
33083 find mustInstanceOfFunctionalData_class(problem,interpretation,container);
33084 find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject);
33085 find mayInRelationterminator_reference_FunctionalData(problem,interpretation,container,newObject);
33086 find mustExist(problem, interpretation, container);
33087 neg find mustExist(problem, interpretation, newObject);
33088}
33089pattern createObject_FAMTerminator_class(
33090 problem:LogicProblem, interpretation:PartialInterpretation,
33091 typeInterpretation:PartialComplexTypeInterpretation)
33092{
33093 find interpretation(problem,interpretation);
33094 neg find hasElementInContainment(problem,interpretation);
33095 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
33096 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class");
33097 find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject);
33098 find mayExist(problem, interpretation, newObject);
33099 neg find mustExist(problem, interpretation, newObject);
33100}
33101pattern createObject_FunctionalInput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData(
33102 problem:LogicProblem, interpretation:PartialInterpretation,
33103 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
33104 container:DefinedElement)
33105{
33106 find interpretation(problem,interpretation);
33107 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
33108 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class");
33109 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
33110 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface");
33111 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
33112 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData");
33113 find mustInstanceOfFunctionalInterface_class(problem,interpretation,container);
33114 find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject);
33115 find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject);
33116 find mustExist(problem, interpretation, container);
33117 neg find mustExist(problem, interpretation, newObject);
33118}
33119pattern createObject_FunctionalInput_class(
33120 problem:LogicProblem, interpretation:PartialInterpretation,
33121 typeInterpretation:PartialComplexTypeInterpretation)
33122{
33123 find interpretation(problem,interpretation);
33124 neg find hasElementInContainment(problem,interpretation);
33125 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
33126 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class");
33127 find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject);
33128 find mayExist(problem, interpretation, newObject);
33129 neg find mustExist(problem, interpretation, newObject);
33130}
33131pattern createObject_FunctionalArchitectureModel_class_UndefinedPart(
33132 problem:LogicProblem, interpretation:PartialInterpretation,
33133 typeInterpretation:PartialComplexTypeInterpretation)
33134{
33135 find interpretation(problem,interpretation);
33136 neg find hasElementInContainment(problem,interpretation);
33137 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
33138 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalArchitectureModel class UndefinedPart");
33139 find mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,newObject);
33140 find mayExist(problem, interpretation, newObject);
33141 neg find mustExist(problem, interpretation, newObject);
33142}
33143pattern createObject_Function_class_by_rootElements_reference_FunctionalArchitectureModel(
33144 problem:LogicProblem, interpretation:PartialInterpretation,
33145 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
33146 container:DefinedElement)
33147{
33148 find interpretation(problem,interpretation);
33149 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
33150 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class");
33151 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
33152 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"rootElements reference FunctionalArchitectureModel");
33153 find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,container);
33154 find mayInstanceOfFunction_class(problem,interpretation,newObject);
33155 find mayInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,container,newObject);
33156 find mustExist(problem, interpretation, container);
33157 neg find mustExist(problem, interpretation, newObject);
33158}
33159pattern createObject_Function_class_by_subElements_reference_Function_with_parent_reference_FunctionalElement(
33160 problem:LogicProblem, interpretation:PartialInterpretation,
33161 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
33162 container:DefinedElement)
33163{
33164 find interpretation(problem,interpretation);
33165 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
33166 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class");
33167 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
33168 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"subElements reference Function");
33169 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
33170 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"parent reference FunctionalElement");
33171 find mustInstanceOfFunction_class(problem,interpretation,container);
33172 find mayInstanceOfFunction_class(problem,interpretation,newObject);
33173 find mayInRelationsubElements_reference_Function(problem,interpretation,container,newObject);
33174 find mustExist(problem, interpretation, container);
33175 neg find mustExist(problem, interpretation, newObject);
33176}
33177pattern createObject_Function_class(
33178 problem:LogicProblem, interpretation:PartialInterpretation,
33179 typeInterpretation:PartialComplexTypeInterpretation)
33180{
33181 find interpretation(problem,interpretation);
33182 neg find hasElementInContainment(problem,interpretation);
33183 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
33184 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class");
33185 find mayInstanceOfFunction_class(problem,interpretation,newObject);
33186 find mayExist(problem, interpretation, newObject);
33187 neg find mustExist(problem, interpretation, newObject);
33188}
33189pattern createObject_FunctionalOutput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData(
33190 problem:LogicProblem, interpretation:PartialInterpretation,
33191 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
33192 container:DefinedElement)
33193{
33194 find interpretation(problem,interpretation);
33195 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
33196 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class");
33197 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
33198 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface");
33199 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
33200 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData");
33201 find mustInstanceOfFunctionalInterface_class(problem,interpretation,container);
33202 find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject);
33203 find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject);
33204 find mustExist(problem, interpretation, container);
33205 neg find mustExist(problem, interpretation, newObject);
33206}
33207pattern createObject_FunctionalOutput_class(
33208 problem:LogicProblem, interpretation:PartialInterpretation,
33209 typeInterpretation:PartialComplexTypeInterpretation)
33210{
33211 find interpretation(problem,interpretation);
33212 neg find hasElementInContainment(problem,interpretation);
33213 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
33214 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class");
33215 find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject);
33216 find mayExist(problem, interpretation, newObject);
33217 neg find mustExist(problem, interpretation, newObject);
33218}
33219
33220//////////
33221// 4.2 Type refinement
33222//////////
33223pattern refineTypeTo_FunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
33224 find interpretation(problem,interpretation);
33225 PartialInterpretation.newElements(interpretation,element);
33226 find mayInstanceOfFunctionalInterface_class(problem,interpretation,element);
33227 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
33228 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
33229 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
33230 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
33231 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
33232 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
33233}
33234pattern refineTypeTo_InformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
33235 find interpretation(problem,interpretation);
33236 PartialInterpretation.newElements(interpretation,element);
33237 find mayInstanceOfInformationLink_class(problem,interpretation,element);
33238 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
33239 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
33240 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
33241 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
33242 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
33243 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
33244}
33245pattern refineTypeTo_FAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
33246 find interpretation(problem,interpretation);
33247 PartialInterpretation.newElements(interpretation,element);
33248 find mayInstanceOfFAMTerminator_class(problem,interpretation,element);
33249 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
33250 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
33251 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
33252 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
33253 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
33254 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
33255}
33256pattern refineTypeTo_FunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
33257 find interpretation(problem,interpretation);
33258 PartialInterpretation.newElements(interpretation,element);
33259 find mayInstanceOfFunctionalInput_class(problem,interpretation,element);
33260 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
33261 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
33262 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
33263 neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element);
33264 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
33265 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
33266 neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element);
33267}
33268pattern refineTypeTo_FunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
33269 find interpretation(problem,interpretation);
33270 PartialInterpretation.newElements(interpretation,element);
33271 find mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element);
33272 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
33273 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
33274 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
33275 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
33276 neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element);
33277 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
33278}
33279pattern refineTypeTo_Function_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
33280 find interpretation(problem,interpretation);
33281 PartialInterpretation.newElements(interpretation,element);
33282 find mayInstanceOfFunction_class(problem,interpretation,element);
33283 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
33284 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
33285 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
33286 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
33287 neg find mustInstanceOfFunction_class(problem,interpretation,element);
33288 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
33289}
33290pattern refineTypeTo_FunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
33291 find interpretation(problem,interpretation);
33292 PartialInterpretation.newElements(interpretation,element);
33293 find mayInstanceOfFunctionalOutput_class(problem,interpretation,element);
33294 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
33295 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
33296 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
33297 neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element);
33298 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
33299 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
33300 neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element);
33301}
33302
33303//////////
33304// 4.3 Relation refinement
33305//////////
33306pattern refineRelation_model_reference_FunctionalElement(
33307 problem:LogicProblem, interpretation:PartialInterpretation,
33308 relationIterpretation:PartialRelationInterpretation,
33309 from: DefinedElement, to: DefinedElement)
33310{
33311 find interpretation(problem,interpretation);
33312 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
33313 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement");
33314 find mustExist(problem, interpretation, from);
33315 find mustExist(problem, interpretation, to);
33316 find mustInstanceOfFunctionalElement_class(problem,interpretation,from);
33317 find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,to);
33318 find mayInRelationmodel_reference_FunctionalElement(problem,interpretation,from,to);
33319 neg find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,from,to);
33320}
33321pattern refineRelation_IncomingLinks_reference_FunctionalInput_and_to_reference_InformationLink(
33322 problem:LogicProblem, interpretation:PartialInterpretation,
33323 relationIterpretation:PartialRelationInterpretation, oppositeInterpretation:PartialRelationInterpretation,
33324 from: DefinedElement, to: DefinedElement)
33325{
33326 find interpretation(problem,interpretation);
33327 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
33328 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"IncomingLinks reference FunctionalInput");
33329 PartialInterpretation.partialrelationinterpretation(interpretation,oppositeInterpretation);
33330 PartialRelationInterpretation.interpretationOf.name(oppositeInterpretation,"to reference InformationLink");
33331 find mustExist(problem, interpretation, from);
33332 find mustExist(problem, interpretation, to);
33333 find mustInstanceOfFunctionalInput_class(problem,interpretation,from);
33334 find mustInstanceOfInformationLink_class(problem,interpretation,to);
33335 find mayInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,from,to);
33336 neg find mustInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,from,to);
33337}
33338pattern refineRelation_type_attribute_Function(
33339 problem:LogicProblem, interpretation:PartialInterpretation,
33340 relationIterpretation:PartialRelationInterpretation,
33341 from: DefinedElement, to: DefinedElement)
33342{
33343 find interpretation(problem,interpretation);
33344 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
33345 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function");
33346 find mustExist(problem, interpretation, from);
33347 find mustExist(problem, interpretation, to);
33348 find mustInstanceOfFunction_class(problem,interpretation,from);
33349 find mustInstanceOfFunctionType_enum(problem,interpretation,to);
33350 find mayInRelationtype_attribute_Function(problem,interpretation,from,to);
33351 neg find mustInRelationtype_attribute_Function(problem,interpretation,from,to);
33352}
33353import epackage "http://www.bme.hu/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage"
33354import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/problem"
33355import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/language"
33356
33357//////////
33358// 0. Util
33359//////////
33360private pattern interpretation(problem:LogicProblem, interpretation:PartialInterpretation) {
33361 PartialInterpretation.problem(interpretation,problem);
33362}
33363
33364/////////////////////////
33365// 0.1 Existence
33366/////////////////////////
33367private pattern mustExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
33368 find interpretation(problem,interpretation);
33369 LogicProblem.elements(problem,element);
33370} or {
33371 find interpretation(problem,interpretation);
33372 PartialInterpretation.newElements(interpretation,element);
33373}
33374
33375private pattern mayExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
33376 find mustExist(problem,interpretation,element);
33377} or {
33378 find interpretation(problem,interpretation);
33379 neg find elementCloseWorld(element);
33380 PartialInterpretation.openWorldElements(interpretation,element);
33381}
33382
33383private pattern elementCloseWorld(element:DefinedElement) {
33384 PartialInterpretation.openWorldElements(i,element);
33385 PartialInterpretation.maxNewElements(i,0);
33386} or {
33387 Scope.targetTypeInterpretation(scope,interpretation);
33388 PartialTypeInterpratation.elements(interpretation,element);
33389 Scope.maxNewElements(scope,0);
33390}
33391
33392////////////////////////
33393// 0.2 Equivalence
33394////////////////////////
33395pattern mayEquivalent(problem:LogicProblem, interpretation:PartialInterpretation, a: DefinedElement, b: DefinedElement) {
33396 find mayExist(problem,interpretation,a);
33397 find mayExist(problem,interpretation,b);
33398 a == b;
33399}
33400
33401////////////////////////
33402// 0.3 Required Patterns by TypeIndexer
33403////////////////////////
33404private pattern typeInterpretation(problem:LogicProblem, interpretation:PartialInterpretation, type:TypeDeclaration, typeInterpretation:PartialComplexTypeInterpretation) {
33405 find interpretation(problem,interpretation);
33406 LogicProblem.types(problem,type);
33407 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
33408 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
33409}
33410
33411private pattern directInstanceOf(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement, type:Type) {
33412 find interpretation(problem,interpretation);
33413 LogicProblem.types(problem,type);
33414 TypeDefinition.elements(type,element);
33415} or {
33416 find interpretation(problem,interpretation);
33417 find typeInterpretation(problem,interpretation,type,typeInterpretation);
33418 PartialComplexTypeInterpretation.elements(typeInterpretation,element);
33419}
33420
33421private pattern isPrimitive(element: PrimitiveElement) {
33422 PrimitiveElement(element);
33423}
33424
33425//////////
33426// 1. Problem-Specific Base Indexers
33427//////////
33428// 1.1 Type Indexers
33429//////////
33430// 1.1.1 primitive Type Indexers
33431//////////
33432
33433//////////
33434// 1.1.2 domain-specific Type Indexers
33435//////////
33436/**
33437 * An element must be an instance of type "FunctionalElement class".
33438 */
33439private pattern mustInstanceOfFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
33440 Type.name(type,"FunctionalElement class");
33441 find directInstanceOf(problem,interpretation,element,type);
33442}
33443private pattern scopeDisallowsNewFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation) {
33444 find interpretation(problem,interpretation);
33445 PartialInterpretation.scopes(interpretation,scope);
33446 Scope.targetTypeInterpretation(scope,typeInterpretation);
33447 Scope.maxNewElements(scope,0);
33448 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
33449 Type.name(type,"FunctionalElement class");
33450}
33451
33452/**
33453 * An element may be an instance of type "FunctionalElement class".
33454 */
33455private pattern mayInstanceOfFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
33456{
33457 find interpretation(problem,interpretation);
33458 PartialInterpretation.newElements(interpretation,element);
33459 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
33460 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
33461 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
33462 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
33463 neg find mustInstanceOfFunction_class(problem,interpretation,element);
33464 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
33465 neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation);
33466 neg find isPrimitive(element);
33467} or {
33468 find interpretation(problem,interpretation);
33469 PartialInterpretation.openWorldElements(interpretation,element);
33470 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
33471 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
33472 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
33473 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
33474 neg find mustInstanceOfFunction_class(problem,interpretation,element);
33475 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
33476 neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation);
33477 neg find isPrimitive(element);
33478} or
33479{ find mustInstanceOfFunctionalElement_class(problem,interpretation,element); }
33480/**
33481 * An element must be an instance of type "FunctionalArchitectureModel class".
33482 */
33483private pattern mustInstanceOfFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
33484 Type.name(type,"FunctionalArchitectureModel class");
33485 find directInstanceOf(problem,interpretation,element,type);
33486}
33487private pattern scopeDisallowsNewFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation) {
33488 find interpretation(problem,interpretation);
33489 PartialInterpretation.scopes(interpretation,scope);
33490 Scope.targetTypeInterpretation(scope,typeInterpretation);
33491 Scope.maxNewElements(scope,0);
33492 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
33493 Type.name(type,"FunctionalArchitectureModel class");
33494}
33495
33496/**
33497 * An element may be an instance of type "FunctionalArchitectureModel class".
33498 */
33499private pattern mayInstanceOfFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
33500{
33501 find interpretation(problem,interpretation);
33502 PartialInterpretation.newElements(interpretation,element);
33503 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
33504 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
33505 neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element);
33506 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
33507 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
33508 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
33509 neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation);
33510 neg find isPrimitive(element);
33511} or {
33512 find interpretation(problem,interpretation);
33513 PartialInterpretation.openWorldElements(interpretation,element);
33514 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
33515 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
33516 neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element);
33517 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
33518 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
33519 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
33520 neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation);
33521 neg find isPrimitive(element);
33522} or
33523{ find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); }
33524/**
33525 * An element must be an instance of type "Function class".
33526 */
33527private pattern mustInstanceOfFunction_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
33528 Type.name(type,"Function class");
33529 find directInstanceOf(problem,interpretation,element,type);
33530}
33531private pattern scopeDisallowsNewFunction_class(problem:LogicProblem, interpretation:PartialInterpretation) {
33532 find interpretation(problem,interpretation);
33533 PartialInterpretation.scopes(interpretation,scope);
33534 Scope.targetTypeInterpretation(scope,typeInterpretation);
33535 Scope.maxNewElements(scope,0);
33536 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
33537 Type.name(type,"Function class");
33538}
33539
33540/**
33541 * An element may be an instance of type "Function class".
33542 */
33543private pattern mayInstanceOfFunction_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
33544{
33545 find interpretation(problem,interpretation);
33546 PartialInterpretation.newElements(interpretation,element);
33547 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
33548 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
33549 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
33550 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
33551 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
33552 neg find scopeDisallowsNewFunction_class(problem, interpretation);
33553 neg find isPrimitive(element);
33554} or {
33555 find interpretation(problem,interpretation);
33556 PartialInterpretation.openWorldElements(interpretation,element);
33557 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
33558 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
33559 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
33560 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
33561 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
33562 neg find scopeDisallowsNewFunction_class(problem, interpretation);
33563 neg find isPrimitive(element);
33564} or
33565{ find mustInstanceOfFunction_class(problem,interpretation,element); }
33566/**
33567 * An element must be an instance of type "FAMTerminator class".
33568 */
33569private pattern mustInstanceOfFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
33570 Type.name(type,"FAMTerminator class");
33571 find directInstanceOf(problem,interpretation,element,type);
33572}
33573private pattern scopeDisallowsNewFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation) {
33574 find interpretation(problem,interpretation);
33575 PartialInterpretation.scopes(interpretation,scope);
33576 Scope.targetTypeInterpretation(scope,typeInterpretation);
33577 Scope.maxNewElements(scope,0);
33578 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
33579 Type.name(type,"FAMTerminator class");
33580}
33581
33582/**
33583 * An element may be an instance of type "FAMTerminator class".
33584 */
33585private pattern mayInstanceOfFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
33586{
33587 find interpretation(problem,interpretation);
33588 PartialInterpretation.newElements(interpretation,element);
33589 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
33590 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
33591 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
33592 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
33593 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
33594 neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation);
33595 neg find isPrimitive(element);
33596} or {
33597 find interpretation(problem,interpretation);
33598 PartialInterpretation.openWorldElements(interpretation,element);
33599 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
33600 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
33601 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
33602 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
33603 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
33604 neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation);
33605 neg find isPrimitive(element);
33606} or
33607{ find mustInstanceOfFAMTerminator_class(problem,interpretation,element); }
33608/**
33609 * An element must be an instance of type "InformationLink class".
33610 */
33611private pattern mustInstanceOfInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
33612 Type.name(type,"InformationLink class");
33613 find directInstanceOf(problem,interpretation,element,type);
33614}
33615private pattern scopeDisallowsNewInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation) {
33616 find interpretation(problem,interpretation);
33617 PartialInterpretation.scopes(interpretation,scope);
33618 Scope.targetTypeInterpretation(scope,typeInterpretation);
33619 Scope.maxNewElements(scope,0);
33620 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
33621 Type.name(type,"InformationLink class");
33622}
33623
33624/**
33625 * An element may be an instance of type "InformationLink class".
33626 */
33627private pattern mayInstanceOfInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
33628{
33629 find interpretation(problem,interpretation);
33630 PartialInterpretation.newElements(interpretation,element);
33631 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
33632 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
33633 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
33634 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
33635 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
33636 neg find scopeDisallowsNewInformationLink_class(problem, interpretation);
33637 neg find isPrimitive(element);
33638} or {
33639 find interpretation(problem,interpretation);
33640 PartialInterpretation.openWorldElements(interpretation,element);
33641 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
33642 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
33643 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
33644 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
33645 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
33646 neg find scopeDisallowsNewInformationLink_class(problem, interpretation);
33647 neg find isPrimitive(element);
33648} or
33649{ find mustInstanceOfInformationLink_class(problem,interpretation,element); }
33650/**
33651 * An element must be an instance of type "FunctionalInterface class".
33652 */
33653private pattern mustInstanceOfFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
33654 Type.name(type,"FunctionalInterface class");
33655 find directInstanceOf(problem,interpretation,element,type);
33656}
33657private pattern scopeDisallowsNewFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation) {
33658 find interpretation(problem,interpretation);
33659 PartialInterpretation.scopes(interpretation,scope);
33660 Scope.targetTypeInterpretation(scope,typeInterpretation);
33661 Scope.maxNewElements(scope,0);
33662 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
33663 Type.name(type,"FunctionalInterface class");
33664}
33665
33666/**
33667 * An element may be an instance of type "FunctionalInterface class".
33668 */
33669private pattern mayInstanceOfFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
33670{
33671 find interpretation(problem,interpretation);
33672 PartialInterpretation.newElements(interpretation,element);
33673 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
33674 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
33675 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
33676 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
33677 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
33678 neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation);
33679 neg find isPrimitive(element);
33680} or {
33681 find interpretation(problem,interpretation);
33682 PartialInterpretation.openWorldElements(interpretation,element);
33683 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
33684 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
33685 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
33686 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
33687 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
33688 neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation);
33689 neg find isPrimitive(element);
33690} or
33691{ find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); }
33692/**
33693 * An element must be an instance of type "FunctionalInput class".
33694 */
33695private pattern mustInstanceOfFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
33696 Type.name(type,"FunctionalInput class");
33697 find directInstanceOf(problem,interpretation,element,type);
33698}
33699private pattern scopeDisallowsNewFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation) {
33700 find interpretation(problem,interpretation);
33701 PartialInterpretation.scopes(interpretation,scope);
33702 Scope.targetTypeInterpretation(scope,typeInterpretation);
33703 Scope.maxNewElements(scope,0);
33704 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
33705 Type.name(type,"FunctionalInput class");
33706}
33707
33708/**
33709 * An element may be an instance of type "FunctionalInput class".
33710 */
33711private pattern mayInstanceOfFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
33712{
33713 find interpretation(problem,interpretation);
33714 PartialInterpretation.newElements(interpretation,element);
33715 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
33716 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
33717 neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element);
33718 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
33719 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
33720 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
33721 neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation);
33722 neg find isPrimitive(element);
33723} or {
33724 find interpretation(problem,interpretation);
33725 PartialInterpretation.openWorldElements(interpretation,element);
33726 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
33727 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
33728 neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element);
33729 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
33730 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
33731 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
33732 neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation);
33733 neg find isPrimitive(element);
33734} or
33735{ find mustInstanceOfFunctionalInput_class(problem,interpretation,element); }
33736/**
33737 * An element must be an instance of type "FunctionalOutput class".
33738 */
33739private pattern mustInstanceOfFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
33740 Type.name(type,"FunctionalOutput class");
33741 find directInstanceOf(problem,interpretation,element,type);
33742}
33743private pattern scopeDisallowsNewFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation) {
33744 find interpretation(problem,interpretation);
33745 PartialInterpretation.scopes(interpretation,scope);
33746 Scope.targetTypeInterpretation(scope,typeInterpretation);
33747 Scope.maxNewElements(scope,0);
33748 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
33749 Type.name(type,"FunctionalOutput class");
33750}
33751
33752/**
33753 * An element may be an instance of type "FunctionalOutput class".
33754 */
33755private pattern mayInstanceOfFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
33756{
33757 find interpretation(problem,interpretation);
33758 PartialInterpretation.newElements(interpretation,element);
33759 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
33760 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
33761 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
33762 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
33763 neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element);
33764 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
33765 neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation);
33766 neg find isPrimitive(element);
33767} or {
33768 find interpretation(problem,interpretation);
33769 PartialInterpretation.openWorldElements(interpretation,element);
33770 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
33771 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
33772 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
33773 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
33774 neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element);
33775 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
33776 neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation);
33777 neg find isPrimitive(element);
33778} or
33779{ find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); }
33780/**
33781 * An element must be an instance of type "FunctionalData class".
33782 */
33783private pattern mustInstanceOfFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
33784 Type.name(type,"FunctionalData class");
33785 find directInstanceOf(problem,interpretation,element,type);
33786}
33787private pattern scopeDisallowsNewFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation) {
33788 find interpretation(problem,interpretation);
33789 PartialInterpretation.scopes(interpretation,scope);
33790 Scope.targetTypeInterpretation(scope,typeInterpretation);
33791 Scope.maxNewElements(scope,0);
33792 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
33793 Type.name(type,"FunctionalData class");
33794}
33795
33796/**
33797 * An element may be an instance of type "FunctionalData class".
33798 */
33799private pattern mayInstanceOfFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
33800{
33801 find interpretation(problem,interpretation);
33802 PartialInterpretation.newElements(interpretation,element);
33803 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
33804 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
33805 neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element);
33806 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
33807 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
33808 neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element);
33809 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
33810 neg find scopeDisallowsNewFunctionalData_class(problem, interpretation);
33811 neg find isPrimitive(element);
33812} or {
33813 find interpretation(problem,interpretation);
33814 PartialInterpretation.openWorldElements(interpretation,element);
33815 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
33816 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
33817 neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element);
33818 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
33819 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
33820 neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element);
33821 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
33822 neg find scopeDisallowsNewFunctionalData_class(problem, interpretation);
33823 neg find isPrimitive(element);
33824} or
33825{ find mustInstanceOfFunctionalData_class(problem,interpretation,element); }
33826/**
33827 * An element must be an instance of type "FunctionType enum".
33828 */
33829private pattern mustInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
33830 Type.name(type,"FunctionType enum");
33831 find directInstanceOf(problem,interpretation,element,type);
33832}
33833private pattern scopeDisallowsNewFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation) {
33834 find interpretation(problem,interpretation);
33835 PartialInterpretation.scopes(interpretation,scope);
33836 Scope.targetTypeInterpretation(scope,typeInterpretation);
33837 Scope.maxNewElements(scope,0);
33838 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
33839 Type.name(type,"FunctionType enum");
33840}
33841
33842/**
33843 * An element may be an instance of type "FunctionType enum".
33844 */
33845private pattern mayInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
33846{ find mustInstanceOfFunctionType_enum(problem,interpretation,element); }
33847/**
33848 * An element must be an instance of type "FunctionalArchitectureModel class DefinedPart".
33849 */
33850private pattern mustInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
33851 Type.name(type,"FunctionalArchitectureModel class DefinedPart");
33852 find directInstanceOf(problem,interpretation,element,type);
33853}
33854private pattern scopeDisallowsNewFunctionalArchitectureModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) {
33855 find interpretation(problem,interpretation);
33856 PartialInterpretation.scopes(interpretation,scope);
33857 Scope.targetTypeInterpretation(scope,typeInterpretation);
33858 Scope.maxNewElements(scope,0);
33859 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
33860 Type.name(type,"FunctionalArchitectureModel class DefinedPart");
33861}
33862
33863/**
33864 * An element may be an instance of type "FunctionalArchitectureModel class DefinedPart".
33865 */
33866private pattern mayInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
33867{ find mustInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem,interpretation,element); }
33868/**
33869 * An element must be an instance of type "FunctionalArchitectureModel class UndefinedPart".
33870 */
33871private pattern mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
33872 Type.name(type,"FunctionalArchitectureModel class UndefinedPart");
33873 find directInstanceOf(problem,interpretation,element,type);
33874}
33875private pattern scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) {
33876 find interpretation(problem,interpretation);
33877 PartialInterpretation.scopes(interpretation,scope);
33878 Scope.targetTypeInterpretation(scope,typeInterpretation);
33879 Scope.maxNewElements(scope,0);
33880 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
33881 Type.name(type,"FunctionalArchitectureModel class UndefinedPart");
33882}
33883
33884/**
33885 * An element may be an instance of type "FunctionalArchitectureModel class UndefinedPart".
33886 */
33887private pattern mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
33888{
33889 find interpretation(problem,interpretation);
33890 PartialInterpretation.newElements(interpretation,element);
33891 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
33892 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
33893 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
33894 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
33895 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
33896 neg find scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem, interpretation);
33897 neg find isPrimitive(element);
33898} or {
33899 find interpretation(problem,interpretation);
33900 PartialInterpretation.openWorldElements(interpretation,element);
33901 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
33902 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
33903 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
33904 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
33905 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
33906 neg find scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem, interpretation);
33907 neg find isPrimitive(element);
33908} or
33909{ find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); }
33910
33911//////////
33912// 1.2 Relation Declaration Indexers
33913//////////
33914/**
33915 * Matcher for detecting tuples t where []interface reference FunctionalElement(source,target)
33916 */
33917private pattern mustInRelationinterface_reference_FunctionalElement(
33918 problem:LogicProblem, interpretation:PartialInterpretation,
33919 source: DefinedElement, target:DefinedElement)
33920{
33921 find interpretation(problem,interpretation);
33922 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
33923 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface reference FunctionalElement");
33924 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
33925 BinaryElementRelationLink.param1(link,source);
33926 BinaryElementRelationLink.param2(link,target);
33927}
33928/**
33929 * Matcher for detecting tuples t where <>interface reference FunctionalElement(source,target)
33930 */
33931private pattern mayInRelationinterface_reference_FunctionalElement(
33932 problem:LogicProblem, interpretation:PartialInterpretation,
33933 source: DefinedElement, target:DefinedElement)
33934{
33935 find interpretation(problem,interpretation);
33936 // The two endpoint of the link have to exist
33937 find mayExist(problem, interpretation, source);
33938 find mayExist(problem, interpretation, target);
33939 // Type consistency
33940 find mayInstanceOfFunctionalElement_class(problem,interpretation,source);
33941 find mayInstanceOfFunctionalInterface_class(problem,interpretation,target);
33942 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
33943 // the upper bound of the multiplicity should be considered.
33944 numberOfExistingReferences == count find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,_);
33945 check(numberOfExistingReferences < 1);
33946 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
33947 // the upper bound of the opposite reference multiplicity should be considered.
33948 numberOfExistingOppositeReferences == count find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,target,_);
33949 check(numberOfExistingOppositeReferences < 1);
33950 // The reference is containment, then a new reference cannot be create if:
33951 // 1. Multiple parents
33952 neg find mustContains4(problem,interpretation,_,target);
33953 // 2. Circle in the containment hierarchy
33954 neg find mustTransitiveContains(source,target);
33955} or {
33956 find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,target);
33957}
33958/**
33959 * Matcher for detecting tuples t where []model reference FunctionalElement(source,target)
33960 */
33961private pattern mustInRelationmodel_reference_FunctionalElement(
33962 problem:LogicProblem, interpretation:PartialInterpretation,
33963 source: DefinedElement, target:DefinedElement)
33964{
33965 find interpretation(problem,interpretation);
33966 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
33967 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement");
33968 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
33969 BinaryElementRelationLink.param1(link,source);
33970 BinaryElementRelationLink.param2(link,target);
33971}
33972/**
33973 * Matcher for detecting tuples t where <>model reference FunctionalElement(source,target)
33974 */
33975private pattern mayInRelationmodel_reference_FunctionalElement(
33976 problem:LogicProblem, interpretation:PartialInterpretation,
33977 source: DefinedElement, target:DefinedElement)
33978{
33979 find interpretation(problem,interpretation);
33980 // The two endpoint of the link have to exist
33981 find mayExist(problem, interpretation, source);
33982 find mayExist(problem, interpretation, target);
33983 // Type consistency
33984 find mayInstanceOfFunctionalElement_class(problem,interpretation,source);
33985 find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,target);
33986 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
33987 // the upper bound of the multiplicity should be considered.
33988 numberOfExistingReferences == count find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,source,_);
33989 check(numberOfExistingReferences < 1);
33990} or {
33991 find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,source,target);
33992}
33993/**
33994 * Matcher for detecting tuples t where []parent reference FunctionalElement(source,target)
33995 */
33996private pattern mustInRelationparent_reference_FunctionalElement(
33997 problem:LogicProblem, interpretation:PartialInterpretation,
33998 source: DefinedElement, target:DefinedElement)
33999{
34000 find interpretation(problem,interpretation);
34001 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
34002 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"parent reference FunctionalElement");
34003 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
34004 BinaryElementRelationLink.param1(link,source);
34005 BinaryElementRelationLink.param2(link,target);
34006}
34007/**
34008 * Matcher for detecting tuples t where <>parent reference FunctionalElement(source,target)
34009 */
34010private pattern mayInRelationparent_reference_FunctionalElement(
34011 problem:LogicProblem, interpretation:PartialInterpretation,
34012 source: DefinedElement, target:DefinedElement)
34013{
34014 find interpretation(problem,interpretation);
34015 // The two endpoint of the link have to exist
34016 find mayExist(problem, interpretation, source);
34017 find mayExist(problem, interpretation, target);
34018 // Type consistency
34019 find mayInstanceOfFunctionalElement_class(problem,interpretation,source);
34020 find mayInstanceOfFunction_class(problem,interpretation,target);
34021 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
34022 // the upper bound of the multiplicity should be considered.
34023 numberOfExistingReferences == count find mustInRelationparent_reference_FunctionalElement(problem,interpretation,source,_);
34024 check(numberOfExistingReferences < 1);
34025 // The eOpposite of the reference is containment, then a referene cannot be created if
34026 // 1. Multiple parents
34027 neg find mustContains4(problem,interpretation,source,_);
34028 // 2. Circle in the containment hierarchy
34029 neg find mustTransitiveContains(source,target);
34030} or {
34031 find mustInRelationparent_reference_FunctionalElement(problem,interpretation,source,target);
34032}
34033/**
34034 * Matcher for detecting tuples t where []rootElements reference FunctionalArchitectureModel(source,target)
34035 */
34036private pattern mustInRelationrootElements_reference_FunctionalArchitectureModel(
34037 problem:LogicProblem, interpretation:PartialInterpretation,
34038 source: DefinedElement, target:DefinedElement)
34039{
34040 find interpretation(problem,interpretation);
34041 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
34042 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"rootElements reference FunctionalArchitectureModel");
34043 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
34044 BinaryElementRelationLink.param1(link,source);
34045 BinaryElementRelationLink.param2(link,target);
34046}
34047/**
34048 * Matcher for detecting tuples t where <>rootElements reference FunctionalArchitectureModel(source,target)
34049 */
34050private pattern mayInRelationrootElements_reference_FunctionalArchitectureModel(
34051 problem:LogicProblem, interpretation:PartialInterpretation,
34052 source: DefinedElement, target:DefinedElement)
34053{
34054 find interpretation(problem,interpretation);
34055 // The two endpoint of the link have to exist
34056 find mayExist(problem, interpretation, source);
34057 find mayExist(problem, interpretation, target);
34058 // Type consistency
34059 find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,source);
34060 find mayInstanceOfFunctionalElement_class(problem,interpretation,target);
34061 // The reference is containment, then a new reference cannot be create if:
34062 // 1. Multiple parents
34063 neg find mustContains4(problem,interpretation,_,target);
34064 // 2. Circle in the containment hierarchy
34065 neg find mustTransitiveContains(source,target);
34066} or {
34067 find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,source,target);
34068}
34069/**
34070 * Matcher for detecting tuples t where []subElements reference Function(source,target)
34071 */
34072private pattern mustInRelationsubElements_reference_Function(
34073 problem:LogicProblem, interpretation:PartialInterpretation,
34074 source: DefinedElement, target:DefinedElement)
34075{
34076 find interpretation(problem,interpretation);
34077 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
34078 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"subElements reference Function");
34079 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
34080 BinaryElementRelationLink.param1(link,source);
34081 BinaryElementRelationLink.param2(link,target);
34082}
34083/**
34084 * Matcher for detecting tuples t where <>subElements reference Function(source,target)
34085 */
34086private pattern mayInRelationsubElements_reference_Function(
34087 problem:LogicProblem, interpretation:PartialInterpretation,
34088 source: DefinedElement, target:DefinedElement)
34089{
34090 find interpretation(problem,interpretation);
34091 // The two endpoint of the link have to exist
34092 find mayExist(problem, interpretation, source);
34093 find mayExist(problem, interpretation, target);
34094 // Type consistency
34095 find mayInstanceOfFunction_class(problem,interpretation,source);
34096 find mayInstanceOfFunctionalElement_class(problem,interpretation,target);
34097 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
34098 // the upper bound of the opposite reference multiplicity should be considered.
34099 numberOfExistingOppositeReferences == count find mustInRelationparent_reference_FunctionalElement(problem,interpretation,target,_);
34100 check(numberOfExistingOppositeReferences < 1);
34101 // The reference is containment, then a new reference cannot be create if:
34102 // 1. Multiple parents
34103 neg find mustContains4(problem,interpretation,_,target);
34104 // 2. Circle in the containment hierarchy
34105 neg find mustTransitiveContains(source,target);
34106} or {
34107 find mustInRelationsubElements_reference_Function(problem,interpretation,source,target);
34108}
34109/**
34110 * Matcher for detecting tuples t where []data reference FAMTerminator(source,target)
34111 */
34112private pattern mustInRelationdata_reference_FAMTerminator(
34113 problem:LogicProblem, interpretation:PartialInterpretation,
34114 source: DefinedElement, target:DefinedElement)
34115{
34116 find interpretation(problem,interpretation);
34117 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
34118 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"data reference FAMTerminator");
34119 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
34120 BinaryElementRelationLink.param1(link,source);
34121 BinaryElementRelationLink.param2(link,target);
34122}
34123/**
34124 * Matcher for detecting tuples t where <>data reference FAMTerminator(source,target)
34125 */
34126private pattern mayInRelationdata_reference_FAMTerminator(
34127 problem:LogicProblem, interpretation:PartialInterpretation,
34128 source: DefinedElement, target:DefinedElement)
34129{
34130 find interpretation(problem,interpretation);
34131 // The two endpoint of the link have to exist
34132 find mayExist(problem, interpretation, source);
34133 find mayExist(problem, interpretation, target);
34134 // Type consistency
34135 find mayInstanceOfFAMTerminator_class(problem,interpretation,source);
34136 find mayInstanceOfFunctionalData_class(problem,interpretation,target);
34137 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
34138 // the upper bound of the multiplicity should be considered.
34139 numberOfExistingReferences == count find mustInRelationdata_reference_FAMTerminator(problem,interpretation,source,_);
34140 check(numberOfExistingReferences < 1);
34141 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
34142 // the upper bound of the opposite reference multiplicity should be considered.
34143 numberOfExistingOppositeReferences == count find mustInRelationterminator_reference_FunctionalData(problem,interpretation,target,_);
34144 check(numberOfExistingOppositeReferences < 1);
34145 // The eOpposite of the reference is containment, then a referene cannot be created if
34146 // 1. Multiple parents
34147 neg find mustContains4(problem,interpretation,source,_);
34148 // 2. Circle in the containment hierarchy
34149 neg find mustTransitiveContains(source,target);
34150} or {
34151 find mustInRelationdata_reference_FAMTerminator(problem,interpretation,source,target);
34152}
34153/**
34154 * Matcher for detecting tuples t where []from reference InformationLink(source,target)
34155 */
34156private pattern mustInRelationfrom_reference_InformationLink(
34157 problem:LogicProblem, interpretation:PartialInterpretation,
34158 source: DefinedElement, target:DefinedElement)
34159{
34160 find interpretation(problem,interpretation);
34161 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
34162 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"from reference InformationLink");
34163 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
34164 BinaryElementRelationLink.param1(link,source);
34165 BinaryElementRelationLink.param2(link,target);
34166}
34167/**
34168 * Matcher for detecting tuples t where <>from reference InformationLink(source,target)
34169 */
34170private pattern mayInRelationfrom_reference_InformationLink(
34171 problem:LogicProblem, interpretation:PartialInterpretation,
34172 source: DefinedElement, target:DefinedElement)
34173{
34174 find interpretation(problem,interpretation);
34175 // The two endpoint of the link have to exist
34176 find mayExist(problem, interpretation, source);
34177 find mayExist(problem, interpretation, target);
34178 // Type consistency
34179 find mayInstanceOfInformationLink_class(problem,interpretation,source);
34180 find mayInstanceOfFunctionalOutput_class(problem,interpretation,target);
34181 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
34182 // the upper bound of the multiplicity should be considered.
34183 numberOfExistingReferences == count find mustInRelationfrom_reference_InformationLink(problem,interpretation,source,_);
34184 check(numberOfExistingReferences < 1);
34185 // The eOpposite of the reference is containment, then a referene cannot be created if
34186 // 1. Multiple parents
34187 neg find mustContains4(problem,interpretation,source,_);
34188 // 2. Circle in the containment hierarchy
34189 neg find mustTransitiveContains(source,target);
34190} or {
34191 find mustInRelationfrom_reference_InformationLink(problem,interpretation,source,target);
34192}
34193/**
34194 * Matcher for detecting tuples t where []to reference InformationLink(source,target)
34195 */
34196private pattern mustInRelationto_reference_InformationLink(
34197 problem:LogicProblem, interpretation:PartialInterpretation,
34198 source: DefinedElement, target:DefinedElement)
34199{
34200 find interpretation(problem,interpretation);
34201 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
34202 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"to reference InformationLink");
34203 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
34204 BinaryElementRelationLink.param1(link,source);
34205 BinaryElementRelationLink.param2(link,target);
34206}
34207/**
34208 * Matcher for detecting tuples t where <>to reference InformationLink(source,target)
34209 */
34210private pattern mayInRelationto_reference_InformationLink(
34211 problem:LogicProblem, interpretation:PartialInterpretation,
34212 source: DefinedElement, target:DefinedElement)
34213{
34214 find interpretation(problem,interpretation);
34215 // The two endpoint of the link have to exist
34216 find mayExist(problem, interpretation, source);
34217 find mayExist(problem, interpretation, target);
34218 // Type consistency
34219 find mayInstanceOfInformationLink_class(problem,interpretation,source);
34220 find mayInstanceOfFunctionalInput_class(problem,interpretation,target);
34221 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
34222 // the upper bound of the multiplicity should be considered.
34223 numberOfExistingReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,source,_);
34224 check(numberOfExistingReferences < 1);
34225} or {
34226 find mustInRelationto_reference_InformationLink(problem,interpretation,source,target);
34227}
34228/**
34229 * Matcher for detecting tuples t where []data reference FunctionalInterface(source,target)
34230 */
34231private pattern mustInRelationdata_reference_FunctionalInterface(
34232 problem:LogicProblem, interpretation:PartialInterpretation,
34233 source: DefinedElement, target:DefinedElement)
34234{
34235 find interpretation(problem,interpretation);
34236 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
34237 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"data reference FunctionalInterface");
34238 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
34239 BinaryElementRelationLink.param1(link,source);
34240 BinaryElementRelationLink.param2(link,target);
34241}
34242/**
34243 * Matcher for detecting tuples t where <>data reference FunctionalInterface(source,target)
34244 */
34245private pattern mayInRelationdata_reference_FunctionalInterface(
34246 problem:LogicProblem, interpretation:PartialInterpretation,
34247 source: DefinedElement, target:DefinedElement)
34248{
34249 find interpretation(problem,interpretation);
34250 // The two endpoint of the link have to exist
34251 find mayExist(problem, interpretation, source);
34252 find mayExist(problem, interpretation, target);
34253 // Type consistency
34254 find mayInstanceOfFunctionalInterface_class(problem,interpretation,source);
34255 find mayInstanceOfFunctionalData_class(problem,interpretation,target);
34256 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
34257 // the upper bound of the opposite reference multiplicity should be considered.
34258 numberOfExistingOppositeReferences == count find mustInRelationinterface_reference_FunctionalData(problem,interpretation,target,_);
34259 check(numberOfExistingOppositeReferences < 1);
34260 // The reference is containment, then a new reference cannot be create if:
34261 // 1. Multiple parents
34262 neg find mustContains4(problem,interpretation,_,target);
34263 // 2. Circle in the containment hierarchy
34264 neg find mustTransitiveContains(source,target);
34265} or {
34266 find mustInRelationdata_reference_FunctionalInterface(problem,interpretation,source,target);
34267}
34268/**
34269 * Matcher for detecting tuples t where []element reference FunctionalInterface(source,target)
34270 */
34271private pattern mustInRelationelement_reference_FunctionalInterface(
34272 problem:LogicProblem, interpretation:PartialInterpretation,
34273 source: DefinedElement, target:DefinedElement)
34274{
34275 find interpretation(problem,interpretation);
34276 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
34277 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"element reference FunctionalInterface");
34278 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
34279 BinaryElementRelationLink.param1(link,source);
34280 BinaryElementRelationLink.param2(link,target);
34281}
34282/**
34283 * Matcher for detecting tuples t where <>element reference FunctionalInterface(source,target)
34284 */
34285private pattern mayInRelationelement_reference_FunctionalInterface(
34286 problem:LogicProblem, interpretation:PartialInterpretation,
34287 source: DefinedElement, target:DefinedElement)
34288{
34289 find interpretation(problem,interpretation);
34290 // The two endpoint of the link have to exist
34291 find mayExist(problem, interpretation, source);
34292 find mayExist(problem, interpretation, target);
34293 // Type consistency
34294 find mayInstanceOfFunctionalInterface_class(problem,interpretation,source);
34295 find mayInstanceOfFunctionalElement_class(problem,interpretation,target);
34296 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
34297 // the upper bound of the multiplicity should be considered.
34298 numberOfExistingReferences == count find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,source,_);
34299 check(numberOfExistingReferences < 1);
34300 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
34301 // the upper bound of the opposite reference multiplicity should be considered.
34302 numberOfExistingOppositeReferences == count find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,target,_);
34303 check(numberOfExistingOppositeReferences < 1);
34304 // The eOpposite of the reference is containment, then a referene cannot be created if
34305 // 1. Multiple parents
34306 neg find mustContains4(problem,interpretation,source,_);
34307 // 2. Circle in the containment hierarchy
34308 neg find mustTransitiveContains(source,target);
34309} or {
34310 find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,source,target);
34311}
34312/**
34313 * Matcher for detecting tuples t where []IncomingLinks reference FunctionalInput(source,target)
34314 */
34315private pattern mustInRelationIncomingLinks_reference_FunctionalInput(
34316 problem:LogicProblem, interpretation:PartialInterpretation,
34317 source: DefinedElement, target:DefinedElement)
34318{
34319 find interpretation(problem,interpretation);
34320 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
34321 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"IncomingLinks reference FunctionalInput");
34322 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
34323 BinaryElementRelationLink.param1(link,source);
34324 BinaryElementRelationLink.param2(link,target);
34325}
34326/**
34327 * Matcher for detecting tuples t where <>IncomingLinks reference FunctionalInput(source,target)
34328 */
34329private pattern mayInRelationIncomingLinks_reference_FunctionalInput(
34330 problem:LogicProblem, interpretation:PartialInterpretation,
34331 source: DefinedElement, target:DefinedElement)
34332{
34333 find interpretation(problem,interpretation);
34334 // The two endpoint of the link have to exist
34335 find mayExist(problem, interpretation, source);
34336 find mayExist(problem, interpretation, target);
34337 // Type consistency
34338 find mayInstanceOfFunctionalInput_class(problem,interpretation,source);
34339 find mayInstanceOfInformationLink_class(problem,interpretation,target);
34340 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
34341 // the upper bound of the opposite reference multiplicity should be considered.
34342 numberOfExistingOppositeReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,target,_);
34343 check(numberOfExistingOppositeReferences < 1);
34344} or {
34345 find mustInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,source,target);
34346}
34347/**
34348 * Matcher for detecting tuples t where []outgoingLinks reference FunctionalOutput(source,target)
34349 */
34350private pattern mustInRelationoutgoingLinks_reference_FunctionalOutput(
34351 problem:LogicProblem, interpretation:PartialInterpretation,
34352 source: DefinedElement, target:DefinedElement)
34353{
34354 find interpretation(problem,interpretation);
34355 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
34356 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"outgoingLinks reference FunctionalOutput");
34357 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
34358 BinaryElementRelationLink.param1(link,source);
34359 BinaryElementRelationLink.param2(link,target);
34360}
34361/**
34362 * Matcher for detecting tuples t where <>outgoingLinks reference FunctionalOutput(source,target)
34363 */
34364private pattern mayInRelationoutgoingLinks_reference_FunctionalOutput(
34365 problem:LogicProblem, interpretation:PartialInterpretation,
34366 source: DefinedElement, target:DefinedElement)
34367{
34368 find interpretation(problem,interpretation);
34369 // The two endpoint of the link have to exist
34370 find mayExist(problem, interpretation, source);
34371 find mayExist(problem, interpretation, target);
34372 // Type consistency
34373 find mayInstanceOfFunctionalOutput_class(problem,interpretation,source);
34374 find mayInstanceOfInformationLink_class(problem,interpretation,target);
34375 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
34376 // the upper bound of the opposite reference multiplicity should be considered.
34377 numberOfExistingOppositeReferences == count find mustInRelationfrom_reference_InformationLink(problem,interpretation,target,_);
34378 check(numberOfExistingOppositeReferences < 1);
34379 // The reference is containment, then a new reference cannot be create if:
34380 // 1. Multiple parents
34381 neg find mustContains4(problem,interpretation,_,target);
34382 // 2. Circle in the containment hierarchy
34383 neg find mustTransitiveContains(source,target);
34384} or {
34385 find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,source,target);
34386}
34387/**
34388 * Matcher for detecting tuples t where []terminator reference FunctionalData(source,target)
34389 */
34390private pattern mustInRelationterminator_reference_FunctionalData(
34391 problem:LogicProblem, interpretation:PartialInterpretation,
34392 source: DefinedElement, target:DefinedElement)
34393{
34394 find interpretation(problem,interpretation);
34395 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
34396 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"terminator reference FunctionalData");
34397 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
34398 BinaryElementRelationLink.param1(link,source);
34399 BinaryElementRelationLink.param2(link,target);
34400}
34401/**
34402 * Matcher for detecting tuples t where <>terminator reference FunctionalData(source,target)
34403 */
34404private pattern mayInRelationterminator_reference_FunctionalData(
34405 problem:LogicProblem, interpretation:PartialInterpretation,
34406 source: DefinedElement, target:DefinedElement)
34407{
34408 find interpretation(problem,interpretation);
34409 // The two endpoint of the link have to exist
34410 find mayExist(problem, interpretation, source);
34411 find mayExist(problem, interpretation, target);
34412 // Type consistency
34413 find mayInstanceOfFunctionalData_class(problem,interpretation,source);
34414 find mayInstanceOfFAMTerminator_class(problem,interpretation,target);
34415 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
34416 // the upper bound of the multiplicity should be considered.
34417 numberOfExistingReferences == count find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,_);
34418 check(numberOfExistingReferences < 1);
34419 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
34420 // the upper bound of the opposite reference multiplicity should be considered.
34421 numberOfExistingOppositeReferences == count find mustInRelationdata_reference_FAMTerminator(problem,interpretation,target,_);
34422 check(numberOfExistingOppositeReferences < 1);
34423 // The reference is containment, then a new reference cannot be create if:
34424 // 1. Multiple parents
34425 neg find mustContains4(problem,interpretation,_,target);
34426 // 2. Circle in the containment hierarchy
34427 neg find mustTransitiveContains(source,target);
34428} or {
34429 find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,target);
34430}
34431/**
34432 * Matcher for detecting tuples t where []interface reference FunctionalData(source,target)
34433 */
34434private pattern mustInRelationinterface_reference_FunctionalData(
34435 problem:LogicProblem, interpretation:PartialInterpretation,
34436 source: DefinedElement, target:DefinedElement)
34437{
34438 find interpretation(problem,interpretation);
34439 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
34440 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface reference FunctionalData");
34441 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
34442 BinaryElementRelationLink.param1(link,source);
34443 BinaryElementRelationLink.param2(link,target);
34444}
34445/**
34446 * Matcher for detecting tuples t where <>interface reference FunctionalData(source,target)
34447 */
34448private pattern mayInRelationinterface_reference_FunctionalData(
34449 problem:LogicProblem, interpretation:PartialInterpretation,
34450 source: DefinedElement, target:DefinedElement)
34451{
34452 find interpretation(problem,interpretation);
34453 // The two endpoint of the link have to exist
34454 find mayExist(problem, interpretation, source);
34455 find mayExist(problem, interpretation, target);
34456 // Type consistency
34457 find mayInstanceOfFunctionalData_class(problem,interpretation,source);
34458 find mayInstanceOfFunctionalInterface_class(problem,interpretation,target);
34459 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
34460 // the upper bound of the multiplicity should be considered.
34461 numberOfExistingReferences == count find mustInRelationinterface_reference_FunctionalData(problem,interpretation,source,_);
34462 check(numberOfExistingReferences < 1);
34463 // The eOpposite of the reference is containment, then a referene cannot be created if
34464 // 1. Multiple parents
34465 neg find mustContains4(problem,interpretation,source,_);
34466 // 2. Circle in the containment hierarchy
34467 neg find mustTransitiveContains(source,target);
34468} or {
34469 find mustInRelationinterface_reference_FunctionalData(problem,interpretation,source,target);
34470}
34471/**
34472 * Matcher for detecting tuples t where []type attribute Function(source,target)
34473 */
34474private pattern mustInRelationtype_attribute_Function(
34475 problem:LogicProblem, interpretation:PartialInterpretation,
34476 source: DefinedElement, target:DefinedElement)
34477{
34478 find interpretation(problem,interpretation);
34479 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
34480 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function");
34481 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
34482 BinaryElementRelationLink.param1(link,source);
34483 BinaryElementRelationLink.param2(link,target);
34484}
34485/**
34486 * Matcher for detecting tuples t where <>type attribute Function(source,target)
34487 */
34488private pattern mayInRelationtype_attribute_Function(
34489 problem:LogicProblem, interpretation:PartialInterpretation,
34490 source: DefinedElement, target:DefinedElement)
34491{
34492 find interpretation(problem,interpretation);
34493 // The two endpoint of the link have to exist
34494 find mayExist(problem, interpretation, source);
34495 find mayExist(problem, interpretation, target);
34496 // Type consistency
34497 find mayInstanceOfFunction_class(problem,interpretation,source);
34498 find mayInstanceOfFunctionType_enum(problem,interpretation,target);
34499 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
34500 // the upper bound of the multiplicity should be considered.
34501 numberOfExistingReferences == count find mustInRelationtype_attribute_Function(problem,interpretation,source,_);
34502 check(numberOfExistingReferences < 1);
34503} or {
34504 find mustInRelationtype_attribute_Function(problem,interpretation,source,target);
34505}
34506
34507//////////
34508// 1.3 Relation Definition Indexers
34509//////////
34510
34511//////////
34512// 1.4 Containment Indexer
34513//////////
34514private pattern mustContains2(source: DefinedElement, target: DefinedElement) {
34515 find mustContains4(_,_,source,target);
34516}
34517
34518private pattern mustContains4(problem:LogicProblem, interpretation:PartialInterpretation,
34519 source: DefinedElement, target: DefinedElement)
34520 { find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,target); }or
34521
34522 { find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,source,target); }or
34523
34524 { find mustInRelationsubElements_reference_Function(problem,interpretation,source,target); }or
34525
34526 { find mustInRelationdata_reference_FunctionalInterface(problem,interpretation,source,target); }or
34527
34528 { find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,source,target); }or
34529
34530 { find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,target); }
34531
34532private pattern mustTransitiveContains(source,target) {
34533 find mustContains2+(source,target);
34534}
34535
34536//////////
34537// 2. Invalidation Indexers
34538//////////
34539// 2.1 Invalidated by WF Queries
34540//////////
34541
34542//////////
34543// 3. Unfinishedness Indexers
34544//////////
34545// 3.1 Unfinishedness Measured by Multiplicity
34546//////////
34547pattern unfinishedLowerMultiplicity_model_reference_FunctionalElement(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) {
34548 find interpretation(problem,interpretation);
34549 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
34550 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement");
34551 find mustInstanceOfFunctionalElement_class(problem,interpretation,object);
34552 numberOfExistingReferences == count find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,object,_);
34553 check(numberOfExistingReferences < 1);
34554 missingMultiplicity == eval(1-numberOfExistingReferences);
34555}
34556pattern unfinishedLowerMultiplicity_to_reference_InformationLink(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) {
34557 find interpretation(problem,interpretation);
34558 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
34559 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"to reference InformationLink");
34560 find mustInstanceOfInformationLink_class(problem,interpretation,object);
34561 numberOfExistingReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,object,_);
34562 check(numberOfExistingReferences < 1);
34563 missingMultiplicity == eval(1-numberOfExistingReferences);
34564}
34565pattern unfinishedLowerMultiplicity_type_attribute_Function(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) {
34566 find interpretation(problem,interpretation);
34567 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
34568 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function");
34569 find mustInstanceOfFunction_class(problem,interpretation,object);
34570 numberOfExistingReferences == count find mustInRelationtype_attribute_Function(problem,interpretation,object,_);
34571 check(numberOfExistingReferences < 1);
34572 missingMultiplicity == eval(1-numberOfExistingReferences);
34573}
34574
34575//////////
34576// 3.2 Unfinishedness Measured by WF Queries
34577//////////
34578
34579//////////
34580// 4. Refinement Indexers
34581//////////
34582// 4.1 Object constructors
34583//////////
34584private pattern hasElementInContainment(problem:LogicProblem, interpretation:PartialInterpretation)
34585{
34586 find interpretation(problem,interpretation);
34587 find mustInstanceOfFunctionalInput_class(problem,interpretation,root);
34588 find mustExist(problem, interpretation, root);
34589}or{
34590 find interpretation(problem,interpretation);
34591 find mustInstanceOfFAMTerminator_class(problem,interpretation,root);
34592 find mustExist(problem, interpretation, root);
34593}or{
34594 find interpretation(problem,interpretation);
34595 find mustInstanceOfFunction_class(problem,interpretation,root);
34596 find mustExist(problem, interpretation, root);
34597}or{
34598 find interpretation(problem,interpretation);
34599 find mustInstanceOfInformationLink_class(problem,interpretation,root);
34600 find mustExist(problem, interpretation, root);
34601}or{
34602 find interpretation(problem,interpretation);
34603 find mustInstanceOfFunctionalElement_class(problem,interpretation,root);
34604 find mustExist(problem, interpretation, root);
34605}or{
34606 find interpretation(problem,interpretation);
34607 find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,root);
34608 find mustExist(problem, interpretation, root);
34609}or{
34610 find interpretation(problem,interpretation);
34611 find mustInstanceOfFunctionalOutput_class(problem,interpretation,root);
34612 find mustExist(problem, interpretation, root);
34613}or{
34614 find interpretation(problem,interpretation);
34615 find mustInstanceOfFunctionalData_class(problem,interpretation,root);
34616 find mustExist(problem, interpretation, root);
34617}or{
34618 find interpretation(problem,interpretation);
34619 find mustInstanceOfFunctionalInterface_class(problem,interpretation,root);
34620 find mustExist(problem, interpretation, root);
34621}or{
34622 find interpretation(problem,interpretation);
34623 find mustInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem,interpretation,root);
34624 find mustExist(problem, interpretation, root);
34625}or{
34626 find interpretation(problem,interpretation);
34627 find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,root);
34628 find mustExist(problem, interpretation, root);
34629}
34630pattern createObject_FunctionalInterface_class_by_interface_reference_FunctionalElement_with_element_reference_FunctionalInterface(
34631 problem:LogicProblem, interpretation:PartialInterpretation,
34632 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
34633 container:DefinedElement)
34634{
34635 find interpretation(problem,interpretation);
34636 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
34637 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class");
34638 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
34639 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"interface reference FunctionalElement");
34640 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
34641 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"element reference FunctionalInterface");
34642 find mustInstanceOfFunctionalElement_class(problem,interpretation,container);
34643 find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject);
34644 find mayInRelationinterface_reference_FunctionalElement(problem,interpretation,container,newObject);
34645 find mustExist(problem, interpretation, container);
34646 neg find mustExist(problem, interpretation, newObject);
34647}
34648pattern createObject_FunctionalInterface_class(
34649 problem:LogicProblem, interpretation:PartialInterpretation,
34650 typeInterpretation:PartialComplexTypeInterpretation)
34651{
34652 find interpretation(problem,interpretation);
34653 neg find hasElementInContainment(problem,interpretation);
34654 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
34655 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class");
34656 find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject);
34657 find mayExist(problem, interpretation, newObject);
34658 neg find mustExist(problem, interpretation, newObject);
34659}
34660pattern createObject_FunctionalOutput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData(
34661 problem:LogicProblem, interpretation:PartialInterpretation,
34662 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
34663 container:DefinedElement)
34664{
34665 find interpretation(problem,interpretation);
34666 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
34667 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class");
34668 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
34669 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface");
34670 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
34671 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData");
34672 find mustInstanceOfFunctionalInterface_class(problem,interpretation,container);
34673 find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject);
34674 find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject);
34675 find mustExist(problem, interpretation, container);
34676 neg find mustExist(problem, interpretation, newObject);
34677}
34678pattern createObject_FunctionalOutput_class(
34679 problem:LogicProblem, interpretation:PartialInterpretation,
34680 typeInterpretation:PartialComplexTypeInterpretation)
34681{
34682 find interpretation(problem,interpretation);
34683 neg find hasElementInContainment(problem,interpretation);
34684 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
34685 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class");
34686 find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject);
34687 find mayExist(problem, interpretation, newObject);
34688 neg find mustExist(problem, interpretation, newObject);
34689}
34690pattern createObject_FunctionalArchitectureModel_class_UndefinedPart(
34691 problem:LogicProblem, interpretation:PartialInterpretation,
34692 typeInterpretation:PartialComplexTypeInterpretation)
34693{
34694 find interpretation(problem,interpretation);
34695 neg find hasElementInContainment(problem,interpretation);
34696 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
34697 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalArchitectureModel class UndefinedPart");
34698 find mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,newObject);
34699 find mayExist(problem, interpretation, newObject);
34700 neg find mustExist(problem, interpretation, newObject);
34701}
34702pattern createObject_InformationLink_class_by_outgoingLinks_reference_FunctionalOutput_with_from_reference_InformationLink(
34703 problem:LogicProblem, interpretation:PartialInterpretation,
34704 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
34705 container:DefinedElement)
34706{
34707 find interpretation(problem,interpretation);
34708 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
34709 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class");
34710 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
34711 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"outgoingLinks reference FunctionalOutput");
34712 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
34713 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"from reference InformationLink");
34714 find mustInstanceOfFunctionalOutput_class(problem,interpretation,container);
34715 find mayInstanceOfInformationLink_class(problem,interpretation,newObject);
34716 find mayInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,container,newObject);
34717 find mustExist(problem, interpretation, container);
34718 neg find mustExist(problem, interpretation, newObject);
34719}
34720pattern createObject_InformationLink_class(
34721 problem:LogicProblem, interpretation:PartialInterpretation,
34722 typeInterpretation:PartialComplexTypeInterpretation)
34723{
34724 find interpretation(problem,interpretation);
34725 neg find hasElementInContainment(problem,interpretation);
34726 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
34727 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class");
34728 find mayInstanceOfInformationLink_class(problem,interpretation,newObject);
34729 find mayExist(problem, interpretation, newObject);
34730 neg find mustExist(problem, interpretation, newObject);
34731}
34732pattern createObject_Function_class_by_rootElements_reference_FunctionalArchitectureModel(
34733 problem:LogicProblem, interpretation:PartialInterpretation,
34734 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
34735 container:DefinedElement)
34736{
34737 find interpretation(problem,interpretation);
34738 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
34739 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class");
34740 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
34741 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"rootElements reference FunctionalArchitectureModel");
34742 find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,container);
34743 find mayInstanceOfFunction_class(problem,interpretation,newObject);
34744 find mayInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,container,newObject);
34745 find mustExist(problem, interpretation, container);
34746 neg find mustExist(problem, interpretation, newObject);
34747}
34748pattern createObject_Function_class_by_subElements_reference_Function_with_parent_reference_FunctionalElement(
34749 problem:LogicProblem, interpretation:PartialInterpretation,
34750 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
34751 container:DefinedElement)
34752{
34753 find interpretation(problem,interpretation);
34754 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
34755 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class");
34756 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
34757 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"subElements reference Function");
34758 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
34759 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"parent reference FunctionalElement");
34760 find mustInstanceOfFunction_class(problem,interpretation,container);
34761 find mayInstanceOfFunction_class(problem,interpretation,newObject);
34762 find mayInRelationsubElements_reference_Function(problem,interpretation,container,newObject);
34763 find mustExist(problem, interpretation, container);
34764 neg find mustExist(problem, interpretation, newObject);
34765}
34766pattern createObject_Function_class(
34767 problem:LogicProblem, interpretation:PartialInterpretation,
34768 typeInterpretation:PartialComplexTypeInterpretation)
34769{
34770 find interpretation(problem,interpretation);
34771 neg find hasElementInContainment(problem,interpretation);
34772 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
34773 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class");
34774 find mayInstanceOfFunction_class(problem,interpretation,newObject);
34775 find mayExist(problem, interpretation, newObject);
34776 neg find mustExist(problem, interpretation, newObject);
34777}
34778pattern createObject_FunctionalInput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData(
34779 problem:LogicProblem, interpretation:PartialInterpretation,
34780 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
34781 container:DefinedElement)
34782{
34783 find interpretation(problem,interpretation);
34784 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
34785 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class");
34786 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
34787 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface");
34788 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
34789 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData");
34790 find mustInstanceOfFunctionalInterface_class(problem,interpretation,container);
34791 find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject);
34792 find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject);
34793 find mustExist(problem, interpretation, container);
34794 neg find mustExist(problem, interpretation, newObject);
34795}
34796pattern createObject_FunctionalInput_class(
34797 problem:LogicProblem, interpretation:PartialInterpretation,
34798 typeInterpretation:PartialComplexTypeInterpretation)
34799{
34800 find interpretation(problem,interpretation);
34801 neg find hasElementInContainment(problem,interpretation);
34802 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
34803 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class");
34804 find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject);
34805 find mayExist(problem, interpretation, newObject);
34806 neg find mustExist(problem, interpretation, newObject);
34807}
34808pattern createObject_FAMTerminator_class_by_terminator_reference_FunctionalData_with_data_reference_FAMTerminator(
34809 problem:LogicProblem, interpretation:PartialInterpretation,
34810 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
34811 container:DefinedElement)
34812{
34813 find interpretation(problem,interpretation);
34814 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
34815 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class");
34816 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
34817 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"terminator reference FunctionalData");
34818 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
34819 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"data reference FAMTerminator");
34820 find mustInstanceOfFunctionalData_class(problem,interpretation,container);
34821 find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject);
34822 find mayInRelationterminator_reference_FunctionalData(problem,interpretation,container,newObject);
34823 find mustExist(problem, interpretation, container);
34824 neg find mustExist(problem, interpretation, newObject);
34825}
34826pattern createObject_FAMTerminator_class(
34827 problem:LogicProblem, interpretation:PartialInterpretation,
34828 typeInterpretation:PartialComplexTypeInterpretation)
34829{
34830 find interpretation(problem,interpretation);
34831 neg find hasElementInContainment(problem,interpretation);
34832 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
34833 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class");
34834 find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject);
34835 find mayExist(problem, interpretation, newObject);
34836 neg find mustExist(problem, interpretation, newObject);
34837}
34838
34839//////////
34840// 4.2 Type refinement
34841//////////
34842pattern refineTypeTo_FunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
34843 find interpretation(problem,interpretation);
34844 PartialInterpretation.newElements(interpretation,element);
34845 find mayInstanceOfFunctionalInterface_class(problem,interpretation,element);
34846 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
34847 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
34848 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
34849 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
34850 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
34851 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
34852}
34853pattern refineTypeTo_FunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
34854 find interpretation(problem,interpretation);
34855 PartialInterpretation.newElements(interpretation,element);
34856 find mayInstanceOfFunctionalOutput_class(problem,interpretation,element);
34857 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
34858 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
34859 neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element);
34860 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
34861 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
34862 neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element);
34863 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
34864}
34865pattern refineTypeTo_FunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
34866 find interpretation(problem,interpretation);
34867 PartialInterpretation.newElements(interpretation,element);
34868 find mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element);
34869 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
34870 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
34871 neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element);
34872 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
34873 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
34874 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
34875}
34876pattern refineTypeTo_InformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
34877 find interpretation(problem,interpretation);
34878 PartialInterpretation.newElements(interpretation,element);
34879 find mayInstanceOfInformationLink_class(problem,interpretation,element);
34880 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
34881 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
34882 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
34883 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
34884 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
34885 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
34886}
34887pattern refineTypeTo_Function_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
34888 find interpretation(problem,interpretation);
34889 PartialInterpretation.newElements(interpretation,element);
34890 find mayInstanceOfFunction_class(problem,interpretation,element);
34891 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
34892 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
34893 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
34894 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
34895 neg find mustInstanceOfFunction_class(problem,interpretation,element);
34896 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
34897}
34898pattern refineTypeTo_FunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
34899 find interpretation(problem,interpretation);
34900 PartialInterpretation.newElements(interpretation,element);
34901 find mayInstanceOfFunctionalInput_class(problem,interpretation,element);
34902 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
34903 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
34904 neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element);
34905 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
34906 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
34907 neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element);
34908 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
34909}
34910pattern refineTypeTo_FAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
34911 find interpretation(problem,interpretation);
34912 PartialInterpretation.newElements(interpretation,element);
34913 find mayInstanceOfFAMTerminator_class(problem,interpretation,element);
34914 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
34915 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
34916 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
34917 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
34918 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
34919 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
34920}
34921
34922//////////
34923// 4.3 Relation refinement
34924//////////
34925pattern refineRelation_model_reference_FunctionalElement(
34926 problem:LogicProblem, interpretation:PartialInterpretation,
34927 relationIterpretation:PartialRelationInterpretation,
34928 from: DefinedElement, to: DefinedElement)
34929{
34930 find interpretation(problem,interpretation);
34931 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
34932 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement");
34933 find mustExist(problem, interpretation, from);
34934 find mustExist(problem, interpretation, to);
34935 find mustInstanceOfFunctionalElement_class(problem,interpretation,from);
34936 find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,to);
34937 find mayInRelationmodel_reference_FunctionalElement(problem,interpretation,from,to);
34938 neg find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,from,to);
34939}
34940pattern refineRelation_IncomingLinks_reference_FunctionalInput_and_to_reference_InformationLink(
34941 problem:LogicProblem, interpretation:PartialInterpretation,
34942 relationIterpretation:PartialRelationInterpretation, oppositeInterpretation:PartialRelationInterpretation,
34943 from: DefinedElement, to: DefinedElement)
34944{
34945 find interpretation(problem,interpretation);
34946 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
34947 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"IncomingLinks reference FunctionalInput");
34948 PartialInterpretation.partialrelationinterpretation(interpretation,oppositeInterpretation);
34949 PartialRelationInterpretation.interpretationOf.name(oppositeInterpretation,"to reference InformationLink");
34950 find mustExist(problem, interpretation, from);
34951 find mustExist(problem, interpretation, to);
34952 find mustInstanceOfFunctionalInput_class(problem,interpretation,from);
34953 find mustInstanceOfInformationLink_class(problem,interpretation,to);
34954 find mayInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,from,to);
34955 neg find mustInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,from,to);
34956}
34957pattern refineRelation_type_attribute_Function(
34958 problem:LogicProblem, interpretation:PartialInterpretation,
34959 relationIterpretation:PartialRelationInterpretation,
34960 from: DefinedElement, to: DefinedElement)
34961{
34962 find interpretation(problem,interpretation);
34963 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
34964 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function");
34965 find mustExist(problem, interpretation, from);
34966 find mustExist(problem, interpretation, to);
34967 find mustInstanceOfFunction_class(problem,interpretation,from);
34968 find mustInstanceOfFunctionType_enum(problem,interpretation,to);
34969 find mayInRelationtype_attribute_Function(problem,interpretation,from,to);
34970 neg find mustInRelationtype_attribute_Function(problem,interpretation,from,to);
34971}
34972import epackage "http://www.bme.hu/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage"
34973import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/problem"
34974import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/language"
34975
34976//////////
34977// 0. Util
34978//////////
34979private pattern interpretation(problem:LogicProblem, interpretation:PartialInterpretation) {
34980 PartialInterpretation.problem(interpretation,problem);
34981}
34982
34983/////////////////////////
34984// 0.1 Existence
34985/////////////////////////
34986private pattern mustExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
34987 find interpretation(problem,interpretation);
34988 LogicProblem.elements(problem,element);
34989} or {
34990 find interpretation(problem,interpretation);
34991 PartialInterpretation.newElements(interpretation,element);
34992}
34993
34994private pattern mayExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
34995 find mustExist(problem,interpretation,element);
34996} or {
34997 find interpretation(problem,interpretation);
34998 neg find elementCloseWorld(element);
34999 PartialInterpretation.openWorldElements(interpretation,element);
35000}
35001
35002private pattern elementCloseWorld(element:DefinedElement) {
35003 PartialInterpretation.openWorldElements(i,element);
35004 PartialInterpretation.maxNewElements(i,0);
35005} or {
35006 Scope.targetTypeInterpretation(scope,interpretation);
35007 PartialTypeInterpratation.elements(interpretation,element);
35008 Scope.maxNewElements(scope,0);
35009}
35010
35011////////////////////////
35012// 0.2 Equivalence
35013////////////////////////
35014pattern mayEquivalent(problem:LogicProblem, interpretation:PartialInterpretation, a: DefinedElement, b: DefinedElement) {
35015 find mayExist(problem,interpretation,a);
35016 find mayExist(problem,interpretation,b);
35017 a == b;
35018}
35019
35020////////////////////////
35021// 0.3 Required Patterns by TypeIndexer
35022////////////////////////
35023private pattern typeInterpretation(problem:LogicProblem, interpretation:PartialInterpretation, type:TypeDeclaration, typeInterpretation:PartialComplexTypeInterpretation) {
35024 find interpretation(problem,interpretation);
35025 LogicProblem.types(problem,type);
35026 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
35027 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
35028}
35029
35030private pattern directInstanceOf(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement, type:Type) {
35031 find interpretation(problem,interpretation);
35032 LogicProblem.types(problem,type);
35033 TypeDefinition.elements(type,element);
35034} or {
35035 find interpretation(problem,interpretation);
35036 find typeInterpretation(problem,interpretation,type,typeInterpretation);
35037 PartialComplexTypeInterpretation.elements(typeInterpretation,element);
35038}
35039
35040private pattern isPrimitive(element: PrimitiveElement) {
35041 PrimitiveElement(element);
35042}
35043
35044//////////
35045// 1. Problem-Specific Base Indexers
35046//////////
35047// 1.1 Type Indexers
35048//////////
35049// 1.1.1 primitive Type Indexers
35050//////////
35051
35052//////////
35053// 1.1.2 domain-specific Type Indexers
35054//////////
35055/**
35056 * An element must be an instance of type "EAttribute class".
35057 */
35058private pattern mustInstanceOfEAttribute_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
35059 Type.name(type,"EAttribute class");
35060 find directInstanceOf(problem,interpretation,element,type);
35061}
35062private pattern scopeDisallowsNewEAttribute_class(problem:LogicProblem, interpretation:PartialInterpretation) {
35063 find interpretation(problem,interpretation);
35064 PartialInterpretation.scopes(interpretation,scope);
35065 Scope.targetTypeInterpretation(scope,typeInterpretation);
35066 Scope.maxNewElements(scope,0);
35067 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
35068 Type.name(type,"EAttribute class");
35069}
35070
35071/**
35072 * An element may be an instance of type "EAttribute class".
35073 */
35074private pattern mayInstanceOfEAttribute_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
35075{
35076 find interpretation(problem,interpretation);
35077 PartialInterpretation.newElements(interpretation,element);
35078 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
35079 neg find mustInstanceOfEObject_class(problem,interpretation,element);
35080 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
35081 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
35082 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
35083 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
35084 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
35085 neg find mustInstanceOfEReference_class(problem,interpretation,element);
35086 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
35087 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
35088 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
35089 neg find scopeDisallowsNewEAttribute_class(problem, interpretation);
35090 neg find isPrimitive(element);
35091} or {
35092 find interpretation(problem,interpretation);
35093 PartialInterpretation.openWorldElements(interpretation,element);
35094 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
35095 neg find mustInstanceOfEObject_class(problem,interpretation,element);
35096 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
35097 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
35098 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
35099 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
35100 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
35101 neg find mustInstanceOfEReference_class(problem,interpretation,element);
35102 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
35103 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
35104 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
35105 neg find scopeDisallowsNewEAttribute_class(problem, interpretation);
35106 neg find isPrimitive(element);
35107} or
35108{ find mustInstanceOfEAttribute_class(problem,interpretation,element); }
35109/**
35110 * An element must be an instance of type "EAnnotation class".
35111 */
35112private pattern mustInstanceOfEAnnotation_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
35113 Type.name(type,"EAnnotation class");
35114 find directInstanceOf(problem,interpretation,element,type);
35115}
35116private pattern scopeDisallowsNewEAnnotation_class(problem:LogicProblem, interpretation:PartialInterpretation) {
35117 find interpretation(problem,interpretation);
35118 PartialInterpretation.scopes(interpretation,scope);
35119 Scope.targetTypeInterpretation(scope,typeInterpretation);
35120 Scope.maxNewElements(scope,0);
35121 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
35122 Type.name(type,"EAnnotation class");
35123}
35124
35125/**
35126 * An element may be an instance of type "EAnnotation class".
35127 */
35128private pattern mayInstanceOfEAnnotation_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
35129{
35130 find interpretation(problem,interpretation);
35131 PartialInterpretation.newElements(interpretation,element);
35132 neg find mustInstanceOfEObject_class(problem,interpretation,element);
35133 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
35134 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
35135 neg find mustInstanceOfENamedElement_class(problem,interpretation,element);
35136 neg find scopeDisallowsNewEAnnotation_class(problem, interpretation);
35137 neg find isPrimitive(element);
35138} or {
35139 find interpretation(problem,interpretation);
35140 PartialInterpretation.openWorldElements(interpretation,element);
35141 neg find mustInstanceOfEObject_class(problem,interpretation,element);
35142 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
35143 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
35144 neg find mustInstanceOfENamedElement_class(problem,interpretation,element);
35145 neg find scopeDisallowsNewEAnnotation_class(problem, interpretation);
35146 neg find isPrimitive(element);
35147} or
35148{ find mustInstanceOfEAnnotation_class(problem,interpretation,element); }
35149/**
35150 * An element must be an instance of type "EClass class".
35151 */
35152private pattern mustInstanceOfEClass_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
35153 Type.name(type,"EClass class");
35154 find directInstanceOf(problem,interpretation,element,type);
35155}
35156private pattern scopeDisallowsNewEClass_class(problem:LogicProblem, interpretation:PartialInterpretation) {
35157 find interpretation(problem,interpretation);
35158 PartialInterpretation.scopes(interpretation,scope);
35159 Scope.targetTypeInterpretation(scope,typeInterpretation);
35160 Scope.maxNewElements(scope,0);
35161 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
35162 Type.name(type,"EClass class");
35163}
35164
35165/**
35166 * An element may be an instance of type "EClass class".
35167 */
35168private pattern mayInstanceOfEClass_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
35169{
35170 find interpretation(problem,interpretation);
35171 PartialInterpretation.newElements(interpretation,element);
35172 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
35173 neg find mustInstanceOfEObject_class(problem,interpretation,element);
35174 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
35175 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
35176 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
35177 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
35178 neg find mustInstanceOfEDataType_class(problem,interpretation,element);
35179 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
35180 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
35181 neg find scopeDisallowsNewEClass_class(problem, interpretation);
35182 neg find isPrimitive(element);
35183} or {
35184 find interpretation(problem,interpretation);
35185 PartialInterpretation.openWorldElements(interpretation,element);
35186 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
35187 neg find mustInstanceOfEObject_class(problem,interpretation,element);
35188 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
35189 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
35190 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
35191 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
35192 neg find mustInstanceOfEDataType_class(problem,interpretation,element);
35193 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
35194 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
35195 neg find scopeDisallowsNewEClass_class(problem, interpretation);
35196 neg find isPrimitive(element);
35197} or
35198{ find mustInstanceOfEClass_class(problem,interpretation,element); }
35199/**
35200 * An element must be an instance of type "EClassifier class".
35201 */
35202private pattern mustInstanceOfEClassifier_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
35203 Type.name(type,"EClassifier class");
35204 find directInstanceOf(problem,interpretation,element,type);
35205}
35206private pattern scopeDisallowsNewEClassifier_class(problem:LogicProblem, interpretation:PartialInterpretation) {
35207 find interpretation(problem,interpretation);
35208 PartialInterpretation.scopes(interpretation,scope);
35209 Scope.targetTypeInterpretation(scope,typeInterpretation);
35210 Scope.maxNewElements(scope,0);
35211 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
35212 Type.name(type,"EClassifier class");
35213}
35214
35215/**
35216 * An element may be an instance of type "EClassifier class".
35217 */
35218private pattern mayInstanceOfEClassifier_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
35219{
35220 find interpretation(problem,interpretation);
35221 PartialInterpretation.newElements(interpretation,element);
35222 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
35223 neg find mustInstanceOfEObject_class(problem,interpretation,element);
35224 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
35225 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
35226 neg find mustInstanceOfEClass_class(problem,interpretation,element);
35227 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
35228 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
35229 neg find mustInstanceOfEDataType_class(problem,interpretation,element);
35230 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
35231 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
35232 neg find scopeDisallowsNewEClassifier_class(problem, interpretation);
35233 neg find isPrimitive(element);
35234} or {
35235 find interpretation(problem,interpretation);
35236 PartialInterpretation.openWorldElements(interpretation,element);
35237 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
35238 neg find mustInstanceOfEObject_class(problem,interpretation,element);
35239 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
35240 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
35241 neg find mustInstanceOfEClass_class(problem,interpretation,element);
35242 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
35243 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
35244 neg find mustInstanceOfEDataType_class(problem,interpretation,element);
35245 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
35246 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
35247 neg find scopeDisallowsNewEClassifier_class(problem, interpretation);
35248 neg find isPrimitive(element);
35249} or
35250{ find mustInstanceOfEClassifier_class(problem,interpretation,element); }
35251/**
35252 * An element must be an instance of type "EDataType class".
35253 */
35254private pattern mustInstanceOfEDataType_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
35255 Type.name(type,"EDataType class");
35256 find directInstanceOf(problem,interpretation,element,type);
35257}
35258private pattern scopeDisallowsNewEDataType_class(problem:LogicProblem, interpretation:PartialInterpretation) {
35259 find interpretation(problem,interpretation);
35260 PartialInterpretation.scopes(interpretation,scope);
35261 Scope.targetTypeInterpretation(scope,typeInterpretation);
35262 Scope.maxNewElements(scope,0);
35263 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
35264 Type.name(type,"EDataType class");
35265}
35266
35267/**
35268 * An element may be an instance of type "EDataType class".
35269 */
35270private pattern mayInstanceOfEDataType_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
35271{
35272 find interpretation(problem,interpretation);
35273 PartialInterpretation.newElements(interpretation,element);
35274 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
35275 neg find mustInstanceOfEObject_class(problem,interpretation,element);
35276 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
35277 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
35278 neg find mustInstanceOfEClass_class(problem,interpretation,element);
35279 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
35280 neg find mustInstanceOfEEnum_class(problem,interpretation,element);
35281 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
35282 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
35283 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
35284 neg find scopeDisallowsNewEDataType_class(problem, interpretation);
35285 neg find isPrimitive(element);
35286} or {
35287 find interpretation(problem,interpretation);
35288 PartialInterpretation.openWorldElements(interpretation,element);
35289 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
35290 neg find mustInstanceOfEObject_class(problem,interpretation,element);
35291 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
35292 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
35293 neg find mustInstanceOfEClass_class(problem,interpretation,element);
35294 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
35295 neg find mustInstanceOfEEnum_class(problem,interpretation,element);
35296 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
35297 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
35298 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
35299 neg find scopeDisallowsNewEDataType_class(problem, interpretation);
35300 neg find isPrimitive(element);
35301} or
35302{ find mustInstanceOfEDataType_class(problem,interpretation,element); }
35303/**
35304 * An element must be an instance of type "EEnum class".
35305 */
35306private pattern mustInstanceOfEEnum_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
35307 Type.name(type,"EEnum class");
35308 find directInstanceOf(problem,interpretation,element,type);
35309}
35310private pattern scopeDisallowsNewEEnum_class(problem:LogicProblem, interpretation:PartialInterpretation) {
35311 find interpretation(problem,interpretation);
35312 PartialInterpretation.scopes(interpretation,scope);
35313 Scope.targetTypeInterpretation(scope,typeInterpretation);
35314 Scope.maxNewElements(scope,0);
35315 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
35316 Type.name(type,"EEnum class");
35317}
35318
35319/**
35320 * An element may be an instance of type "EEnum class".
35321 */
35322private pattern mayInstanceOfEEnum_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
35323{
35324 find interpretation(problem,interpretation);
35325 PartialInterpretation.newElements(interpretation,element);
35326 neg find mustInstanceOfEObject_class(problem,interpretation,element);
35327 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
35328 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
35329 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
35330 neg find mustInstanceOfEClass_class(problem,interpretation,element);
35331 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
35332 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
35333 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
35334 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
35335 neg find scopeDisallowsNewEEnum_class(problem, interpretation);
35336 neg find isPrimitive(element);
35337} or {
35338 find interpretation(problem,interpretation);
35339 PartialInterpretation.openWorldElements(interpretation,element);
35340 neg find mustInstanceOfEObject_class(problem,interpretation,element);
35341 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
35342 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
35343 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
35344 neg find mustInstanceOfEClass_class(problem,interpretation,element);
35345 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
35346 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
35347 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
35348 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
35349 neg find scopeDisallowsNewEEnum_class(problem, interpretation);
35350 neg find isPrimitive(element);
35351} or
35352{ find mustInstanceOfEEnum_class(problem,interpretation,element); }
35353/**
35354 * An element must be an instance of type "EEnumLiteral class".
35355 */
35356private pattern mustInstanceOfEEnumLiteral_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
35357 Type.name(type,"EEnumLiteral class");
35358 find directInstanceOf(problem,interpretation,element,type);
35359}
35360private pattern scopeDisallowsNewEEnumLiteral_class(problem:LogicProblem, interpretation:PartialInterpretation) {
35361 find interpretation(problem,interpretation);
35362 PartialInterpretation.scopes(interpretation,scope);
35363 Scope.targetTypeInterpretation(scope,typeInterpretation);
35364 Scope.maxNewElements(scope,0);
35365 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
35366 Type.name(type,"EEnumLiteral class");
35367}
35368
35369/**
35370 * An element may be an instance of type "EEnumLiteral class".
35371 */
35372private pattern mayInstanceOfEEnumLiteral_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
35373{
35374 find interpretation(problem,interpretation);
35375 PartialInterpretation.newElements(interpretation,element);
35376 neg find mustInstanceOfEObject_class(problem,interpretation,element);
35377 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
35378 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
35379 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
35380 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
35381 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
35382 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
35383 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
35384 neg find scopeDisallowsNewEEnumLiteral_class(problem, interpretation);
35385 neg find isPrimitive(element);
35386} or {
35387 find interpretation(problem,interpretation);
35388 PartialInterpretation.openWorldElements(interpretation,element);
35389 neg find mustInstanceOfEObject_class(problem,interpretation,element);
35390 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
35391 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
35392 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
35393 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
35394 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
35395 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
35396 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
35397 neg find scopeDisallowsNewEEnumLiteral_class(problem, interpretation);
35398 neg find isPrimitive(element);
35399} or
35400{ find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); }
35401/**
35402 * An element must be an instance of type "EModelElement class".
35403 */
35404private pattern mustInstanceOfEModelElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
35405 Type.name(type,"EModelElement class");
35406 find directInstanceOf(problem,interpretation,element,type);
35407}
35408private pattern scopeDisallowsNewEModelElement_class(problem:LogicProblem, interpretation:PartialInterpretation) {
35409 find interpretation(problem,interpretation);
35410 PartialInterpretation.scopes(interpretation,scope);
35411 Scope.targetTypeInterpretation(scope,typeInterpretation);
35412 Scope.maxNewElements(scope,0);
35413 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
35414 Type.name(type,"EModelElement class");
35415}
35416
35417/**
35418 * An element may be an instance of type "EModelElement class".
35419 */
35420private pattern mayInstanceOfEModelElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
35421{
35422 find interpretation(problem,interpretation);
35423 PartialInterpretation.newElements(interpretation,element);
35424 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
35425 neg find mustInstanceOfEObject_class(problem,interpretation,element);
35426 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
35427 neg find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,element);
35428 neg find mustInstanceOfENamedElement_class(problem,interpretation,element);
35429 neg find scopeDisallowsNewEModelElement_class(problem, interpretation);
35430 neg find isPrimitive(element);
35431} or {
35432 find interpretation(problem,interpretation);
35433 PartialInterpretation.openWorldElements(interpretation,element);
35434 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
35435 neg find mustInstanceOfEObject_class(problem,interpretation,element);
35436 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
35437 neg find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,element);
35438 neg find mustInstanceOfENamedElement_class(problem,interpretation,element);
35439 neg find scopeDisallowsNewEModelElement_class(problem, interpretation);
35440 neg find isPrimitive(element);
35441} or
35442{ find mustInstanceOfEModelElement_class(problem,interpretation,element); }
35443/**
35444 * An element must be an instance of type "ENamedElement class".
35445 */
35446private pattern mustInstanceOfENamedElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
35447 Type.name(type,"ENamedElement class");
35448 find directInstanceOf(problem,interpretation,element,type);
35449}
35450private pattern scopeDisallowsNewENamedElement_class(problem:LogicProblem, interpretation:PartialInterpretation) {
35451 find interpretation(problem,interpretation);
35452 PartialInterpretation.scopes(interpretation,scope);
35453 Scope.targetTypeInterpretation(scope,typeInterpretation);
35454 Scope.maxNewElements(scope,0);
35455 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
35456 Type.name(type,"ENamedElement class");
35457}
35458
35459/**
35460 * An element may be an instance of type "ENamedElement class".
35461 */
35462private pattern mayInstanceOfENamedElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
35463{
35464 find interpretation(problem,interpretation);
35465 PartialInterpretation.newElements(interpretation,element);
35466 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
35467 neg find mustInstanceOfEObject_class(problem,interpretation,element);
35468 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
35469 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
35470 neg find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,element);
35471 neg find scopeDisallowsNewENamedElement_class(problem, interpretation);
35472 neg find isPrimitive(element);
35473} or {
35474 find interpretation(problem,interpretation);
35475 PartialInterpretation.openWorldElements(interpretation,element);
35476 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
35477 neg find mustInstanceOfEObject_class(problem,interpretation,element);
35478 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
35479 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
35480 neg find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,element);
35481 neg find scopeDisallowsNewENamedElement_class(problem, interpretation);
35482 neg find isPrimitive(element);
35483} or
35484{ find mustInstanceOfENamedElement_class(problem,interpretation,element); }
35485/**
35486 * An element must be an instance of type "EObject class".
35487 */
35488private pattern mustInstanceOfEObject_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
35489 Type.name(type,"EObject class");
35490 find directInstanceOf(problem,interpretation,element,type);
35491}
35492private pattern scopeDisallowsNewEObject_class(problem:LogicProblem, interpretation:PartialInterpretation) {
35493 find interpretation(problem,interpretation);
35494 PartialInterpretation.scopes(interpretation,scope);
35495 Scope.targetTypeInterpretation(scope,typeInterpretation);
35496 Scope.maxNewElements(scope,0);
35497 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
35498 Type.name(type,"EObject class");
35499}
35500
35501/**
35502 * An element may be an instance of type "EObject class".
35503 */
35504private pattern mayInstanceOfEObject_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
35505{
35506 find interpretation(problem,interpretation);
35507 PartialInterpretation.newElements(interpretation,element);
35508 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
35509 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
35510 neg find mustInstanceOfEModelElement_class(problem,interpretation,element);
35511 neg find scopeDisallowsNewEObject_class(problem, interpretation);
35512 neg find isPrimitive(element);
35513} or {
35514 find interpretation(problem,interpretation);
35515 PartialInterpretation.openWorldElements(interpretation,element);
35516 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
35517 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
35518 neg find mustInstanceOfEModelElement_class(problem,interpretation,element);
35519 neg find scopeDisallowsNewEObject_class(problem, interpretation);
35520 neg find isPrimitive(element);
35521} or
35522{ find mustInstanceOfEObject_class(problem,interpretation,element); }
35523/**
35524 * An element must be an instance of type "EOperation class".
35525 */
35526private pattern mustInstanceOfEOperation_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
35527 Type.name(type,"EOperation class");
35528 find directInstanceOf(problem,interpretation,element,type);
35529}
35530private pattern scopeDisallowsNewEOperation_class(problem:LogicProblem, interpretation:PartialInterpretation) {
35531 find interpretation(problem,interpretation);
35532 PartialInterpretation.scopes(interpretation,scope);
35533 Scope.targetTypeInterpretation(scope,typeInterpretation);
35534 Scope.maxNewElements(scope,0);
35535 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
35536 Type.name(type,"EOperation class");
35537}
35538
35539/**
35540 * An element may be an instance of type "EOperation class".
35541 */
35542private pattern mayInstanceOfEOperation_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
35543{
35544 find interpretation(problem,interpretation);
35545 PartialInterpretation.newElements(interpretation,element);
35546 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
35547 neg find mustInstanceOfEObject_class(problem,interpretation,element);
35548 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
35549 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
35550 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
35551 neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element);
35552 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
35553 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
35554 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
35555 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
35556 neg find scopeDisallowsNewEOperation_class(problem, interpretation);
35557 neg find isPrimitive(element);
35558} or {
35559 find interpretation(problem,interpretation);
35560 PartialInterpretation.openWorldElements(interpretation,element);
35561 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
35562 neg find mustInstanceOfEObject_class(problem,interpretation,element);
35563 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
35564 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
35565 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
35566 neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element);
35567 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
35568 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
35569 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
35570 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
35571 neg find scopeDisallowsNewEOperation_class(problem, interpretation);
35572 neg find isPrimitive(element);
35573} or
35574{ find mustInstanceOfEOperation_class(problem,interpretation,element); }
35575/**
35576 * An element must be an instance of type "EPackage class".
35577 */
35578private pattern mustInstanceOfEPackage_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
35579 Type.name(type,"EPackage class");
35580 find directInstanceOf(problem,interpretation,element,type);
35581}
35582private pattern scopeDisallowsNewEPackage_class(problem:LogicProblem, interpretation:PartialInterpretation) {
35583 find interpretation(problem,interpretation);
35584 PartialInterpretation.scopes(interpretation,scope);
35585 Scope.targetTypeInterpretation(scope,typeInterpretation);
35586 Scope.maxNewElements(scope,0);
35587 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
35588 Type.name(type,"EPackage class");
35589}
35590
35591/**
35592 * An element may be an instance of type "EPackage class".
35593 */
35594private pattern mayInstanceOfEPackage_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
35595{
35596 find interpretation(problem,interpretation);
35597 PartialInterpretation.newElements(interpretation,element);
35598 neg find mustInstanceOfEObject_class(problem,interpretation,element);
35599 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
35600 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
35601 neg find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,element);
35602 neg find scopeDisallowsNewEPackage_class(problem, interpretation);
35603 neg find isPrimitive(element);
35604} or {
35605 find interpretation(problem,interpretation);
35606 PartialInterpretation.openWorldElements(interpretation,element);
35607 neg find mustInstanceOfEObject_class(problem,interpretation,element);
35608 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
35609 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
35610 neg find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,element);
35611 neg find scopeDisallowsNewEPackage_class(problem, interpretation);
35612 neg find isPrimitive(element);
35613} or
35614{ find mustInstanceOfEPackage_class(problem,interpretation,element); }
35615/**
35616 * An element must be an instance of type "EParameter class".
35617 */
35618private pattern mustInstanceOfEParameter_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
35619 Type.name(type,"EParameter class");
35620 find directInstanceOf(problem,interpretation,element,type);
35621}
35622private pattern scopeDisallowsNewEParameter_class(problem:LogicProblem, interpretation:PartialInterpretation) {
35623 find interpretation(problem,interpretation);
35624 PartialInterpretation.scopes(interpretation,scope);
35625 Scope.targetTypeInterpretation(scope,typeInterpretation);
35626 Scope.maxNewElements(scope,0);
35627 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
35628 Type.name(type,"EParameter class");
35629}
35630
35631/**
35632 * An element may be an instance of type "EParameter class".
35633 */
35634private pattern mayInstanceOfEParameter_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
35635{
35636 find interpretation(problem,interpretation);
35637 PartialInterpretation.newElements(interpretation,element);
35638 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
35639 neg find mustInstanceOfEObject_class(problem,interpretation,element);
35640 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
35641 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
35642 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
35643 neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element);
35644 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
35645 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
35646 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
35647 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
35648 neg find scopeDisallowsNewEParameter_class(problem, interpretation);
35649 neg find isPrimitive(element);
35650} or {
35651 find interpretation(problem,interpretation);
35652 PartialInterpretation.openWorldElements(interpretation,element);
35653 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
35654 neg find mustInstanceOfEObject_class(problem,interpretation,element);
35655 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
35656 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
35657 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
35658 neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element);
35659 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
35660 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
35661 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
35662 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
35663 neg find scopeDisallowsNewEParameter_class(problem, interpretation);
35664 neg find isPrimitive(element);
35665} or
35666{ find mustInstanceOfEParameter_class(problem,interpretation,element); }
35667/**
35668 * An element must be an instance of type "EReference class".
35669 */
35670private pattern mustInstanceOfEReference_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
35671 Type.name(type,"EReference class");
35672 find directInstanceOf(problem,interpretation,element,type);
35673}
35674private pattern scopeDisallowsNewEReference_class(problem:LogicProblem, interpretation:PartialInterpretation) {
35675 find interpretation(problem,interpretation);
35676 PartialInterpretation.scopes(interpretation,scope);
35677 Scope.targetTypeInterpretation(scope,typeInterpretation);
35678 Scope.maxNewElements(scope,0);
35679 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
35680 Type.name(type,"EReference class");
35681}
35682
35683/**
35684 * An element may be an instance of type "EReference class".
35685 */
35686private pattern mayInstanceOfEReference_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
35687{
35688 find interpretation(problem,interpretation);
35689 PartialInterpretation.newElements(interpretation,element);
35690 neg find mustInstanceOfEObject_class(problem,interpretation,element);
35691 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
35692 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
35693 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
35694 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
35695 neg find mustInstanceOfEAttribute_class(problem,interpretation,element);
35696 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
35697 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
35698 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
35699 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
35700 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
35701 neg find scopeDisallowsNewEReference_class(problem, interpretation);
35702 neg find isPrimitive(element);
35703} or {
35704 find interpretation(problem,interpretation);
35705 PartialInterpretation.openWorldElements(interpretation,element);
35706 neg find mustInstanceOfEObject_class(problem,interpretation,element);
35707 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
35708 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
35709 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
35710 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
35711 neg find mustInstanceOfEAttribute_class(problem,interpretation,element);
35712 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
35713 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
35714 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
35715 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
35716 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
35717 neg find scopeDisallowsNewEReference_class(problem, interpretation);
35718 neg find isPrimitive(element);
35719} or
35720{ find mustInstanceOfEReference_class(problem,interpretation,element); }
35721/**
35722 * An element must be an instance of type "EStructuralFeature class".
35723 */
35724private pattern mustInstanceOfEStructuralFeature_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
35725 Type.name(type,"EStructuralFeature class");
35726 find directInstanceOf(problem,interpretation,element,type);
35727}
35728private pattern scopeDisallowsNewEStructuralFeature_class(problem:LogicProblem, interpretation:PartialInterpretation) {
35729 find interpretation(problem,interpretation);
35730 PartialInterpretation.scopes(interpretation,scope);
35731 Scope.targetTypeInterpretation(scope,typeInterpretation);
35732 Scope.maxNewElements(scope,0);
35733 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
35734 Type.name(type,"EStructuralFeature class");
35735}
35736
35737/**
35738 * An element may be an instance of type "EStructuralFeature class".
35739 */
35740private pattern mayInstanceOfEStructuralFeature_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
35741{
35742 find interpretation(problem,interpretation);
35743 PartialInterpretation.newElements(interpretation,element);
35744 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
35745 neg find mustInstanceOfEObject_class(problem,interpretation,element);
35746 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
35747 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
35748 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
35749 neg find mustInstanceOfEAttribute_class(problem,interpretation,element);
35750 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
35751 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
35752 neg find mustInstanceOfEReference_class(problem,interpretation,element);
35753 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
35754 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
35755 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
35756 neg find scopeDisallowsNewEStructuralFeature_class(problem, interpretation);
35757 neg find isPrimitive(element);
35758} or {
35759 find interpretation(problem,interpretation);
35760 PartialInterpretation.openWorldElements(interpretation,element);
35761 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
35762 neg find mustInstanceOfEObject_class(problem,interpretation,element);
35763 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
35764 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
35765 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
35766 neg find mustInstanceOfEAttribute_class(problem,interpretation,element);
35767 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
35768 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
35769 neg find mustInstanceOfEReference_class(problem,interpretation,element);
35770 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
35771 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
35772 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
35773 neg find scopeDisallowsNewEStructuralFeature_class(problem, interpretation);
35774 neg find isPrimitive(element);
35775} or
35776{ find mustInstanceOfEStructuralFeature_class(problem,interpretation,element); }
35777/**
35778 * An element must be an instance of type "ETypedElement class".
35779 */
35780private pattern mustInstanceOfETypedElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
35781 Type.name(type,"ETypedElement class");
35782 find directInstanceOf(problem,interpretation,element,type);
35783}
35784private pattern scopeDisallowsNewETypedElement_class(problem:LogicProblem, interpretation:PartialInterpretation) {
35785 find interpretation(problem,interpretation);
35786 PartialInterpretation.scopes(interpretation,scope);
35787 Scope.targetTypeInterpretation(scope,typeInterpretation);
35788 Scope.maxNewElements(scope,0);
35789 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
35790 Type.name(type,"ETypedElement class");
35791}
35792
35793/**
35794 * An element may be an instance of type "ETypedElement class".
35795 */
35796private pattern mayInstanceOfETypedElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
35797{
35798 find interpretation(problem,interpretation);
35799 PartialInterpretation.newElements(interpretation,element);
35800 neg find mustInstanceOfEObject_class(problem,interpretation,element);
35801 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
35802 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
35803 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
35804 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
35805 neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element);
35806 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
35807 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
35808 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
35809 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
35810 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
35811 neg find scopeDisallowsNewETypedElement_class(problem, interpretation);
35812 neg find isPrimitive(element);
35813} or {
35814 find interpretation(problem,interpretation);
35815 PartialInterpretation.openWorldElements(interpretation,element);
35816 neg find mustInstanceOfEObject_class(problem,interpretation,element);
35817 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
35818 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
35819 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
35820 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
35821 neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element);
35822 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
35823 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
35824 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
35825 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
35826 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
35827 neg find scopeDisallowsNewETypedElement_class(problem, interpretation);
35828 neg find isPrimitive(element);
35829} or
35830{ find mustInstanceOfETypedElement_class(problem,interpretation,element); }
35831/**
35832 * An element must be an instance of type "EStringToStringMapEntry class".
35833 */
35834private pattern mustInstanceOfEStringToStringMapEntry_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
35835 Type.name(type,"EStringToStringMapEntry class");
35836 find directInstanceOf(problem,interpretation,element,type);
35837}
35838private pattern scopeDisallowsNewEStringToStringMapEntry_class(problem:LogicProblem, interpretation:PartialInterpretation) {
35839 find interpretation(problem,interpretation);
35840 PartialInterpretation.scopes(interpretation,scope);
35841 Scope.targetTypeInterpretation(scope,typeInterpretation);
35842 Scope.maxNewElements(scope,0);
35843 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
35844 Type.name(type,"EStringToStringMapEntry class");
35845}
35846
35847/**
35848 * An element may be an instance of type "EStringToStringMapEntry class".
35849 */
35850private pattern mayInstanceOfEStringToStringMapEntry_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
35851{
35852 find interpretation(problem,interpretation);
35853 PartialInterpretation.newElements(interpretation,element);
35854 neg find mustInstanceOfEObject_class(problem,interpretation,element);
35855 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
35856 neg find mustInstanceOfEModelElement_class(problem,interpretation,element);
35857 neg find scopeDisallowsNewEStringToStringMapEntry_class(problem, interpretation);
35858 neg find isPrimitive(element);
35859} or {
35860 find interpretation(problem,interpretation);
35861 PartialInterpretation.openWorldElements(interpretation,element);
35862 neg find mustInstanceOfEObject_class(problem,interpretation,element);
35863 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
35864 neg find mustInstanceOfEModelElement_class(problem,interpretation,element);
35865 neg find scopeDisallowsNewEStringToStringMapEntry_class(problem, interpretation);
35866 neg find isPrimitive(element);
35867} or
35868{ find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); }
35869/**
35870 * An element must be an instance of type "EGenericType class".
35871 */
35872private pattern mustInstanceOfEGenericType_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
35873 Type.name(type,"EGenericType class");
35874 find directInstanceOf(problem,interpretation,element,type);
35875}
35876private pattern scopeDisallowsNewEGenericType_class(problem:LogicProblem, interpretation:PartialInterpretation) {
35877 find interpretation(problem,interpretation);
35878 PartialInterpretation.scopes(interpretation,scope);
35879 Scope.targetTypeInterpretation(scope,typeInterpretation);
35880 Scope.maxNewElements(scope,0);
35881 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
35882 Type.name(type,"EGenericType class");
35883}
35884
35885/**
35886 * An element may be an instance of type "EGenericType class".
35887 */
35888private pattern mayInstanceOfEGenericType_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
35889{
35890 find interpretation(problem,interpretation);
35891 PartialInterpretation.newElements(interpretation,element);
35892 neg find mustInstanceOfEObject_class(problem,interpretation,element);
35893 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
35894 neg find mustInstanceOfEModelElement_class(problem,interpretation,element);
35895 neg find scopeDisallowsNewEGenericType_class(problem, interpretation);
35896 neg find isPrimitive(element);
35897} or {
35898 find interpretation(problem,interpretation);
35899 PartialInterpretation.openWorldElements(interpretation,element);
35900 neg find mustInstanceOfEObject_class(problem,interpretation,element);
35901 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
35902 neg find mustInstanceOfEModelElement_class(problem,interpretation,element);
35903 neg find scopeDisallowsNewEGenericType_class(problem, interpretation);
35904 neg find isPrimitive(element);
35905} or
35906{ find mustInstanceOfEGenericType_class(problem,interpretation,element); }
35907/**
35908 * An element must be an instance of type "ETypeParameter class".
35909 */
35910private pattern mustInstanceOfETypeParameter_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
35911 Type.name(type,"ETypeParameter class");
35912 find directInstanceOf(problem,interpretation,element,type);
35913}
35914private pattern scopeDisallowsNewETypeParameter_class(problem:LogicProblem, interpretation:PartialInterpretation) {
35915 find interpretation(problem,interpretation);
35916 PartialInterpretation.scopes(interpretation,scope);
35917 Scope.targetTypeInterpretation(scope,typeInterpretation);
35918 Scope.maxNewElements(scope,0);
35919 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
35920 Type.name(type,"ETypeParameter class");
35921}
35922
35923/**
35924 * An element may be an instance of type "ETypeParameter class".
35925 */
35926private pattern mayInstanceOfETypeParameter_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
35927{
35928 find interpretation(problem,interpretation);
35929 PartialInterpretation.newElements(interpretation,element);
35930 neg find mustInstanceOfEObject_class(problem,interpretation,element);
35931 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
35932 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
35933 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
35934 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
35935 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
35936 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
35937 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
35938 neg find scopeDisallowsNewETypeParameter_class(problem, interpretation);
35939 neg find isPrimitive(element);
35940} or {
35941 find interpretation(problem,interpretation);
35942 PartialInterpretation.openWorldElements(interpretation,element);
35943 neg find mustInstanceOfEObject_class(problem,interpretation,element);
35944 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
35945 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
35946 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
35947 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
35948 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
35949 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
35950 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
35951 neg find scopeDisallowsNewETypeParameter_class(problem, interpretation);
35952 neg find isPrimitive(element);
35953} or
35954{ find mustInstanceOfETypeParameter_class(problem,interpretation,element); }
35955/**
35956 * An element must be an instance of type "EModelElement class DefinedPart".
35957 */
35958private pattern mustInstanceOfEModelElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
35959 Type.name(type,"EModelElement class DefinedPart");
35960 find directInstanceOf(problem,interpretation,element,type);
35961}
35962private pattern scopeDisallowsNewEModelElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) {
35963 find interpretation(problem,interpretation);
35964 PartialInterpretation.scopes(interpretation,scope);
35965 Scope.targetTypeInterpretation(scope,typeInterpretation);
35966 Scope.maxNewElements(scope,0);
35967 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
35968 Type.name(type,"EModelElement class DefinedPart");
35969}
35970
35971/**
35972 * An element may be an instance of type "EModelElement class DefinedPart".
35973 */
35974private pattern mayInstanceOfEModelElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
35975{ find mustInstanceOfEModelElement_class_DefinedPart(problem,interpretation,element); }
35976/**
35977 * An element must be an instance of type "EModelElement class UndefinedPart".
35978 */
35979private pattern mustInstanceOfEModelElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
35980 Type.name(type,"EModelElement class UndefinedPart");
35981 find directInstanceOf(problem,interpretation,element,type);
35982}
35983private pattern scopeDisallowsNewEModelElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) {
35984 find interpretation(problem,interpretation);
35985 PartialInterpretation.scopes(interpretation,scope);
35986 Scope.targetTypeInterpretation(scope,typeInterpretation);
35987 Scope.maxNewElements(scope,0);
35988 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
35989 Type.name(type,"EModelElement class UndefinedPart");
35990}
35991
35992/**
35993 * An element may be an instance of type "EModelElement class UndefinedPart".
35994 */
35995private pattern mayInstanceOfEModelElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
35996{
35997 find interpretation(problem,interpretation);
35998 PartialInterpretation.newElements(interpretation,element);
35999 neg find mustInstanceOfEObject_class(problem,interpretation,element);
36000 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
36001 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
36002 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
36003 neg find mustInstanceOfENamedElement_class(problem,interpretation,element);
36004 neg find scopeDisallowsNewEModelElement_class_UndefinedPart(problem, interpretation);
36005 neg find isPrimitive(element);
36006} or {
36007 find interpretation(problem,interpretation);
36008 PartialInterpretation.openWorldElements(interpretation,element);
36009 neg find mustInstanceOfEObject_class(problem,interpretation,element);
36010 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
36011 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
36012 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
36013 neg find mustInstanceOfENamedElement_class(problem,interpretation,element);
36014 neg find scopeDisallowsNewEModelElement_class_UndefinedPart(problem, interpretation);
36015 neg find isPrimitive(element);
36016} or
36017{ find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,element); }
36018/**
36019 * An element must be an instance of type "ENamedElement class DefinedPart".
36020 */
36021private pattern mustInstanceOfENamedElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
36022 Type.name(type,"ENamedElement class DefinedPart");
36023 find directInstanceOf(problem,interpretation,element,type);
36024}
36025private pattern scopeDisallowsNewENamedElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) {
36026 find interpretation(problem,interpretation);
36027 PartialInterpretation.scopes(interpretation,scope);
36028 Scope.targetTypeInterpretation(scope,typeInterpretation);
36029 Scope.maxNewElements(scope,0);
36030 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
36031 Type.name(type,"ENamedElement class DefinedPart");
36032}
36033
36034/**
36035 * An element may be an instance of type "ENamedElement class DefinedPart".
36036 */
36037private pattern mayInstanceOfENamedElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
36038{ find mustInstanceOfENamedElement_class_DefinedPart(problem,interpretation,element); }
36039/**
36040 * An element must be an instance of type "ENamedElement class UndefinedPart".
36041 */
36042private pattern mustInstanceOfENamedElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
36043 Type.name(type,"ENamedElement class UndefinedPart");
36044 find directInstanceOf(problem,interpretation,element,type);
36045}
36046private pattern scopeDisallowsNewENamedElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) {
36047 find interpretation(problem,interpretation);
36048 PartialInterpretation.scopes(interpretation,scope);
36049 Scope.targetTypeInterpretation(scope,typeInterpretation);
36050 Scope.maxNewElements(scope,0);
36051 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
36052 Type.name(type,"ENamedElement class UndefinedPart");
36053}
36054
36055/**
36056 * An element may be an instance of type "ENamedElement class UndefinedPart".
36057 */
36058private pattern mayInstanceOfENamedElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
36059{
36060 find interpretation(problem,interpretation);
36061 PartialInterpretation.newElements(interpretation,element);
36062 neg find mustInstanceOfEObject_class(problem,interpretation,element);
36063 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
36064 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
36065 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
36066 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
36067 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
36068 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
36069 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
36070 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
36071 neg find scopeDisallowsNewENamedElement_class_UndefinedPart(problem, interpretation);
36072 neg find isPrimitive(element);
36073} or {
36074 find interpretation(problem,interpretation);
36075 PartialInterpretation.openWorldElements(interpretation,element);
36076 neg find mustInstanceOfEObject_class(problem,interpretation,element);
36077 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
36078 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
36079 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
36080 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
36081 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
36082 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
36083 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
36084 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
36085 neg find scopeDisallowsNewENamedElement_class_UndefinedPart(problem, interpretation);
36086 neg find isPrimitive(element);
36087} or
36088{ find mustInstanceOfENamedElement_class_UndefinedPart(problem,interpretation,element); }
36089/**
36090 * An element must be an instance of type "EPackage class DefinedPart".
36091 */
36092private pattern mustInstanceOfEPackage_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
36093 Type.name(type,"EPackage class DefinedPart");
36094 find directInstanceOf(problem,interpretation,element,type);
36095}
36096private pattern scopeDisallowsNewEPackage_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) {
36097 find interpretation(problem,interpretation);
36098 PartialInterpretation.scopes(interpretation,scope);
36099 Scope.targetTypeInterpretation(scope,typeInterpretation);
36100 Scope.maxNewElements(scope,0);
36101 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
36102 Type.name(type,"EPackage class DefinedPart");
36103}
36104
36105/**
36106 * An element may be an instance of type "EPackage class DefinedPart".
36107 */
36108private pattern mayInstanceOfEPackage_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
36109{ find mustInstanceOfEPackage_class_DefinedPart(problem,interpretation,element); }
36110/**
36111 * An element must be an instance of type "EPackage class UndefinedPart".
36112 */
36113private pattern mustInstanceOfEPackage_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
36114 Type.name(type,"EPackage class UndefinedPart");
36115 find directInstanceOf(problem,interpretation,element,type);
36116}
36117private pattern scopeDisallowsNewEPackage_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) {
36118 find interpretation(problem,interpretation);
36119 PartialInterpretation.scopes(interpretation,scope);
36120 Scope.targetTypeInterpretation(scope,typeInterpretation);
36121 Scope.maxNewElements(scope,0);
36122 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
36123 Type.name(type,"EPackage class UndefinedPart");
36124}
36125
36126/**
36127 * An element may be an instance of type "EPackage class UndefinedPart".
36128 */
36129private pattern mayInstanceOfEPackage_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
36130{
36131 find interpretation(problem,interpretation);
36132 PartialInterpretation.newElements(interpretation,element);
36133 neg find mustInstanceOfEObject_class(problem,interpretation,element);
36134 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
36135 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
36136 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
36137 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
36138 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
36139 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
36140 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
36141 neg find scopeDisallowsNewEPackage_class_UndefinedPart(problem, interpretation);
36142 neg find isPrimitive(element);
36143} or {
36144 find interpretation(problem,interpretation);
36145 PartialInterpretation.openWorldElements(interpretation,element);
36146 neg find mustInstanceOfEObject_class(problem,interpretation,element);
36147 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
36148 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
36149 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
36150 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
36151 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
36152 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
36153 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
36154 neg find scopeDisallowsNewEPackage_class_UndefinedPart(problem, interpretation);
36155 neg find isPrimitive(element);
36156} or
36157{ find mustInstanceOfEPackage_class_UndefinedPart(problem,interpretation,element); }
36158
36159//////////
36160// 1.2 Relation Declaration Indexers
36161//////////
36162/**
36163 * Matcher for detecting tuples t where []eAttributeType reference EAttribute(source,target)
36164 */
36165private pattern mustInRelationeAttributeType_reference_EAttribute(
36166 problem:LogicProblem, interpretation:PartialInterpretation,
36167 source: DefinedElement, target:DefinedElement)
36168{
36169 find interpretation(problem,interpretation);
36170 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
36171 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAttributeType reference EAttribute");
36172 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
36173 BinaryElementRelationLink.param1(link,source);
36174 BinaryElementRelationLink.param2(link,target);
36175}
36176/**
36177 * Matcher for detecting tuples t where <>eAttributeType reference EAttribute(source,target)
36178 */
36179private pattern mayInRelationeAttributeType_reference_EAttribute(
36180 problem:LogicProblem, interpretation:PartialInterpretation,
36181 source: DefinedElement, target:DefinedElement)
36182{
36183 find interpretation(problem,interpretation);
36184 // The two endpoint of the link have to exist
36185 find mayExist(problem, interpretation, source);
36186 find mayExist(problem, interpretation, target);
36187 // Type consistency
36188 find mayInstanceOfEAttribute_class(problem,interpretation,source);
36189 find mayInstanceOfEDataType_class(problem,interpretation,target);
36190 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
36191 // the upper bound of the multiplicity should be considered.
36192 numberOfExistingReferences == count find mustInRelationeAttributeType_reference_EAttribute(problem,interpretation,source,_);
36193 check(numberOfExistingReferences < 1);
36194} or {
36195 find mustInRelationeAttributeType_reference_EAttribute(problem,interpretation,source,target);
36196}
36197/**
36198 * Matcher for detecting tuples t where []details reference EAnnotation(source,target)
36199 */
36200private pattern mustInRelationdetails_reference_EAnnotation(
36201 problem:LogicProblem, interpretation:PartialInterpretation,
36202 source: DefinedElement, target:DefinedElement)
36203{
36204 find interpretation(problem,interpretation);
36205 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
36206 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"details reference EAnnotation");
36207 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
36208 BinaryElementRelationLink.param1(link,source);
36209 BinaryElementRelationLink.param2(link,target);
36210}
36211/**
36212 * Matcher for detecting tuples t where <>details reference EAnnotation(source,target)
36213 */
36214private pattern mayInRelationdetails_reference_EAnnotation(
36215 problem:LogicProblem, interpretation:PartialInterpretation,
36216 source: DefinedElement, target:DefinedElement)
36217{
36218 find interpretation(problem,interpretation);
36219 // The two endpoint of the link have to exist
36220 find mayExist(problem, interpretation, source);
36221 find mayExist(problem, interpretation, target);
36222 // Type consistency
36223 find mayInstanceOfEAnnotation_class(problem,interpretation,source);
36224 find mayInstanceOfEStringToStringMapEntry_class(problem,interpretation,target);
36225 // The reference is containment, then a new reference cannot be create if:
36226 // 1. Multiple parents
36227 neg find mustContains4(problem,interpretation,_,target);
36228 // 2. Circle in the containment hierarchy
36229 neg find mustTransitiveContains(source,target);
36230} or {
36231 find mustInRelationdetails_reference_EAnnotation(problem,interpretation,source,target);
36232}
36233/**
36234 * Matcher for detecting tuples t where []eModelElement reference EAnnotation(source,target)
36235 */
36236private pattern mustInRelationeModelElement_reference_EAnnotation(
36237 problem:LogicProblem, interpretation:PartialInterpretation,
36238 source: DefinedElement, target:DefinedElement)
36239{
36240 find interpretation(problem,interpretation);
36241 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
36242 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eModelElement reference EAnnotation");
36243 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
36244 BinaryElementRelationLink.param1(link,source);
36245 BinaryElementRelationLink.param2(link,target);
36246}
36247/**
36248 * Matcher for detecting tuples t where <>eModelElement reference EAnnotation(source,target)
36249 */
36250private pattern mayInRelationeModelElement_reference_EAnnotation(
36251 problem:LogicProblem, interpretation:PartialInterpretation,
36252 source: DefinedElement, target:DefinedElement)
36253{
36254 find interpretation(problem,interpretation);
36255 // The two endpoint of the link have to exist
36256 find mayExist(problem, interpretation, source);
36257 find mayExist(problem, interpretation, target);
36258 // Type consistency
36259 find mayInstanceOfEAnnotation_class(problem,interpretation,source);
36260 find mayInstanceOfEModelElement_class(problem,interpretation,target);
36261 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
36262 // the upper bound of the multiplicity should be considered.
36263 numberOfExistingReferences == count find mustInRelationeModelElement_reference_EAnnotation(problem,interpretation,source,_);
36264 check(numberOfExistingReferences < 1);
36265 // The eOpposite of the reference is containment, then a referene cannot be created if
36266 // 1. Multiple parents
36267 neg find mustContains4(problem,interpretation,source,_);
36268 // 2. Circle in the containment hierarchy
36269 neg find mustTransitiveContains(source,target);
36270} or {
36271 find mustInRelationeModelElement_reference_EAnnotation(problem,interpretation,source,target);
36272}
36273/**
36274 * Matcher for detecting tuples t where []contents reference EAnnotation(source,target)
36275 */
36276private pattern mustInRelationcontents_reference_EAnnotation(
36277 problem:LogicProblem, interpretation:PartialInterpretation,
36278 source: DefinedElement, target:DefinedElement)
36279{
36280 find interpretation(problem,interpretation);
36281 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
36282 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"contents reference EAnnotation");
36283 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
36284 BinaryElementRelationLink.param1(link,source);
36285 BinaryElementRelationLink.param2(link,target);
36286}
36287/**
36288 * Matcher for detecting tuples t where <>contents reference EAnnotation(source,target)
36289 */
36290private pattern mayInRelationcontents_reference_EAnnotation(
36291 problem:LogicProblem, interpretation:PartialInterpretation,
36292 source: DefinedElement, target:DefinedElement)
36293{
36294 find interpretation(problem,interpretation);
36295 // The two endpoint of the link have to exist
36296 find mayExist(problem, interpretation, source);
36297 find mayExist(problem, interpretation, target);
36298 // Type consistency
36299 find mayInstanceOfEAnnotation_class(problem,interpretation,source);
36300 find mayInstanceOfEObject_class(problem,interpretation,target);
36301 // The reference is containment, then a new reference cannot be create if:
36302 // 1. Multiple parents
36303 neg find mustContains4(problem,interpretation,_,target);
36304 // 2. Circle in the containment hierarchy
36305 neg find mustTransitiveContains(source,target);
36306} or {
36307 find mustInRelationcontents_reference_EAnnotation(problem,interpretation,source,target);
36308}
36309/**
36310 * Matcher for detecting tuples t where []references reference EAnnotation(source,target)
36311 */
36312private pattern mustInRelationreferences_reference_EAnnotation(
36313 problem:LogicProblem, interpretation:PartialInterpretation,
36314 source: DefinedElement, target:DefinedElement)
36315{
36316 find interpretation(problem,interpretation);
36317 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
36318 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"references reference EAnnotation");
36319 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
36320 BinaryElementRelationLink.param1(link,source);
36321 BinaryElementRelationLink.param2(link,target);
36322}
36323/**
36324 * Matcher for detecting tuples t where <>references reference EAnnotation(source,target)
36325 */
36326private pattern mayInRelationreferences_reference_EAnnotation(
36327 problem:LogicProblem, interpretation:PartialInterpretation,
36328 source: DefinedElement, target:DefinedElement)
36329{
36330 find interpretation(problem,interpretation);
36331 // The two endpoint of the link have to exist
36332 find mayExist(problem, interpretation, source);
36333 find mayExist(problem, interpretation, target);
36334 // Type consistency
36335 find mayInstanceOfEAnnotation_class(problem,interpretation,source);
36336 find mayInstanceOfEObject_class(problem,interpretation,target);
36337} or {
36338 find mustInRelationreferences_reference_EAnnotation(problem,interpretation,source,target);
36339}
36340/**
36341 * Matcher for detecting tuples t where []eSuperTypes reference EClass(source,target)
36342 */
36343private pattern mustInRelationeSuperTypes_reference_EClass(
36344 problem:LogicProblem, interpretation:PartialInterpretation,
36345 source: DefinedElement, target:DefinedElement)
36346{
36347 find interpretation(problem,interpretation);
36348 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
36349 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eSuperTypes reference EClass");
36350 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
36351 BinaryElementRelationLink.param1(link,source);
36352 BinaryElementRelationLink.param2(link,target);
36353}
36354/**
36355 * Matcher for detecting tuples t where <>eSuperTypes reference EClass(source,target)
36356 */
36357private pattern mayInRelationeSuperTypes_reference_EClass(
36358 problem:LogicProblem, interpretation:PartialInterpretation,
36359 source: DefinedElement, target:DefinedElement)
36360{
36361 find interpretation(problem,interpretation);
36362 // The two endpoint of the link have to exist
36363 find mayExist(problem, interpretation, source);
36364 find mayExist(problem, interpretation, target);
36365 // Type consistency
36366 find mayInstanceOfEClass_class(problem,interpretation,source);
36367 find mayInstanceOfEClass_class(problem,interpretation,target);
36368} or {
36369 find mustInRelationeSuperTypes_reference_EClass(problem,interpretation,source,target);
36370}
36371/**
36372 * Matcher for detecting tuples t where []eOperations reference EClass(source,target)
36373 */
36374private pattern mustInRelationeOperations_reference_EClass(
36375 problem:LogicProblem, interpretation:PartialInterpretation,
36376 source: DefinedElement, target:DefinedElement)
36377{
36378 find interpretation(problem,interpretation);
36379 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
36380 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eOperations reference EClass");
36381 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
36382 BinaryElementRelationLink.param1(link,source);
36383 BinaryElementRelationLink.param2(link,target);
36384}
36385/**
36386 * Matcher for detecting tuples t where <>eOperations reference EClass(source,target)
36387 */
36388private pattern mayInRelationeOperations_reference_EClass(
36389 problem:LogicProblem, interpretation:PartialInterpretation,
36390 source: DefinedElement, target:DefinedElement)
36391{
36392 find interpretation(problem,interpretation);
36393 // The two endpoint of the link have to exist
36394 find mayExist(problem, interpretation, source);
36395 find mayExist(problem, interpretation, target);
36396 // Type consistency
36397 find mayInstanceOfEClass_class(problem,interpretation,source);
36398 find mayInstanceOfEOperation_class(problem,interpretation,target);
36399 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
36400 // the upper bound of the opposite reference multiplicity should be considered.
36401 numberOfExistingOppositeReferences == count find mustInRelationeContainingClass_reference_EOperation(problem,interpretation,target,_);
36402 check(numberOfExistingOppositeReferences < 1);
36403 // The reference is containment, then a new reference cannot be create if:
36404 // 1. Multiple parents
36405 neg find mustContains4(problem,interpretation,_,target);
36406 // 2. Circle in the containment hierarchy
36407 neg find mustTransitiveContains(source,target);
36408} or {
36409 find mustInRelationeOperations_reference_EClass(problem,interpretation,source,target);
36410}
36411/**
36412 * Matcher for detecting tuples t where []eAllAttributes reference EClass(source,target)
36413 */
36414private pattern mustInRelationeAllAttributes_reference_EClass(
36415 problem:LogicProblem, interpretation:PartialInterpretation,
36416 source: DefinedElement, target:DefinedElement)
36417{
36418 find interpretation(problem,interpretation);
36419 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
36420 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllAttributes reference EClass");
36421 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
36422 BinaryElementRelationLink.param1(link,source);
36423 BinaryElementRelationLink.param2(link,target);
36424}
36425/**
36426 * Matcher for detecting tuples t where <>eAllAttributes reference EClass(source,target)
36427 */
36428private pattern mayInRelationeAllAttributes_reference_EClass(
36429 problem:LogicProblem, interpretation:PartialInterpretation,
36430 source: DefinedElement, target:DefinedElement)
36431{
36432 find interpretation(problem,interpretation);
36433 // The two endpoint of the link have to exist
36434 find mayExist(problem, interpretation, source);
36435 find mayExist(problem, interpretation, target);
36436 // Type consistency
36437 find mayInstanceOfEClass_class(problem,interpretation,source);
36438 find mayInstanceOfEAttribute_class(problem,interpretation,target);
36439} or {
36440 find mustInRelationeAllAttributes_reference_EClass(problem,interpretation,source,target);
36441}
36442/**
36443 * Matcher for detecting tuples t where []eAllReferences reference EClass(source,target)
36444 */
36445private pattern mustInRelationeAllReferences_reference_EClass(
36446 problem:LogicProblem, interpretation:PartialInterpretation,
36447 source: DefinedElement, target:DefinedElement)
36448{
36449 find interpretation(problem,interpretation);
36450 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
36451 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllReferences reference EClass");
36452 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
36453 BinaryElementRelationLink.param1(link,source);
36454 BinaryElementRelationLink.param2(link,target);
36455}
36456/**
36457 * Matcher for detecting tuples t where <>eAllReferences reference EClass(source,target)
36458 */
36459private pattern mayInRelationeAllReferences_reference_EClass(
36460 problem:LogicProblem, interpretation:PartialInterpretation,
36461 source: DefinedElement, target:DefinedElement)
36462{
36463 find interpretation(problem,interpretation);
36464 // The two endpoint of the link have to exist
36465 find mayExist(problem, interpretation, source);
36466 find mayExist(problem, interpretation, target);
36467 // Type consistency
36468 find mayInstanceOfEClass_class(problem,interpretation,source);
36469 find mayInstanceOfEReference_class(problem,interpretation,target);
36470} or {
36471 find mustInRelationeAllReferences_reference_EClass(problem,interpretation,source,target);
36472}
36473/**
36474 * Matcher for detecting tuples t where []eReferences reference EClass(source,target)
36475 */
36476private pattern mustInRelationeReferences_reference_EClass(
36477 problem:LogicProblem, interpretation:PartialInterpretation,
36478 source: DefinedElement, target:DefinedElement)
36479{
36480 find interpretation(problem,interpretation);
36481 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
36482 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eReferences reference EClass");
36483 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
36484 BinaryElementRelationLink.param1(link,source);
36485 BinaryElementRelationLink.param2(link,target);
36486}
36487/**
36488 * Matcher for detecting tuples t where <>eReferences reference EClass(source,target)
36489 */
36490private pattern mayInRelationeReferences_reference_EClass(
36491 problem:LogicProblem, interpretation:PartialInterpretation,
36492 source: DefinedElement, target:DefinedElement)
36493{
36494 find interpretation(problem,interpretation);
36495 // The two endpoint of the link have to exist
36496 find mayExist(problem, interpretation, source);
36497 find mayExist(problem, interpretation, target);
36498 // Type consistency
36499 find mayInstanceOfEClass_class(problem,interpretation,source);
36500 find mayInstanceOfEReference_class(problem,interpretation,target);
36501} or {
36502 find mustInRelationeReferences_reference_EClass(problem,interpretation,source,target);
36503}
36504/**
36505 * Matcher for detecting tuples t where []eAttributes reference EClass(source,target)
36506 */
36507private pattern mustInRelationeAttributes_reference_EClass(
36508 problem:LogicProblem, interpretation:PartialInterpretation,
36509 source: DefinedElement, target:DefinedElement)
36510{
36511 find interpretation(problem,interpretation);
36512 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
36513 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAttributes reference EClass");
36514 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
36515 BinaryElementRelationLink.param1(link,source);
36516 BinaryElementRelationLink.param2(link,target);
36517}
36518/**
36519 * Matcher for detecting tuples t where <>eAttributes reference EClass(source,target)
36520 */
36521private pattern mayInRelationeAttributes_reference_EClass(
36522 problem:LogicProblem, interpretation:PartialInterpretation,
36523 source: DefinedElement, target:DefinedElement)
36524{
36525 find interpretation(problem,interpretation);
36526 // The two endpoint of the link have to exist
36527 find mayExist(problem, interpretation, source);
36528 find mayExist(problem, interpretation, target);
36529 // Type consistency
36530 find mayInstanceOfEClass_class(problem,interpretation,source);
36531 find mayInstanceOfEAttribute_class(problem,interpretation,target);
36532} or {
36533 find mustInRelationeAttributes_reference_EClass(problem,interpretation,source,target);
36534}
36535/**
36536 * Matcher for detecting tuples t where []eAllContainments reference EClass(source,target)
36537 */
36538private pattern mustInRelationeAllContainments_reference_EClass(
36539 problem:LogicProblem, interpretation:PartialInterpretation,
36540 source: DefinedElement, target:DefinedElement)
36541{
36542 find interpretation(problem,interpretation);
36543 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
36544 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllContainments reference EClass");
36545 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
36546 BinaryElementRelationLink.param1(link,source);
36547 BinaryElementRelationLink.param2(link,target);
36548}
36549/**
36550 * Matcher for detecting tuples t where <>eAllContainments reference EClass(source,target)
36551 */
36552private pattern mayInRelationeAllContainments_reference_EClass(
36553 problem:LogicProblem, interpretation:PartialInterpretation,
36554 source: DefinedElement, target:DefinedElement)
36555{
36556 find interpretation(problem,interpretation);
36557 // The two endpoint of the link have to exist
36558 find mayExist(problem, interpretation, source);
36559 find mayExist(problem, interpretation, target);
36560 // Type consistency
36561 find mayInstanceOfEClass_class(problem,interpretation,source);
36562 find mayInstanceOfEReference_class(problem,interpretation,target);
36563} or {
36564 find mustInRelationeAllContainments_reference_EClass(problem,interpretation,source,target);
36565}
36566/**
36567 * Matcher for detecting tuples t where []eAllOperations reference EClass(source,target)
36568 */
36569private pattern mustInRelationeAllOperations_reference_EClass(
36570 problem:LogicProblem, interpretation:PartialInterpretation,
36571 source: DefinedElement, target:DefinedElement)
36572{
36573 find interpretation(problem,interpretation);
36574 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
36575 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllOperations reference EClass");
36576 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
36577 BinaryElementRelationLink.param1(link,source);
36578 BinaryElementRelationLink.param2(link,target);
36579}
36580/**
36581 * Matcher for detecting tuples t where <>eAllOperations reference EClass(source,target)
36582 */
36583private pattern mayInRelationeAllOperations_reference_EClass(
36584 problem:LogicProblem, interpretation:PartialInterpretation,
36585 source: DefinedElement, target:DefinedElement)
36586{
36587 find interpretation(problem,interpretation);
36588 // The two endpoint of the link have to exist
36589 find mayExist(problem, interpretation, source);
36590 find mayExist(problem, interpretation, target);
36591 // Type consistency
36592 find mayInstanceOfEClass_class(problem,interpretation,source);
36593 find mayInstanceOfEOperation_class(problem,interpretation,target);
36594} or {
36595 find mustInRelationeAllOperations_reference_EClass(problem,interpretation,source,target);
36596}
36597/**
36598 * Matcher for detecting tuples t where []eAllStructuralFeatures reference EClass(source,target)
36599 */
36600private pattern mustInRelationeAllStructuralFeatures_reference_EClass(
36601 problem:LogicProblem, interpretation:PartialInterpretation,
36602 source: DefinedElement, target:DefinedElement)
36603{
36604 find interpretation(problem,interpretation);
36605 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
36606 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllStructuralFeatures reference EClass");
36607 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
36608 BinaryElementRelationLink.param1(link,source);
36609 BinaryElementRelationLink.param2(link,target);
36610}
36611/**
36612 * Matcher for detecting tuples t where <>eAllStructuralFeatures reference EClass(source,target)
36613 */
36614private pattern mayInRelationeAllStructuralFeatures_reference_EClass(
36615 problem:LogicProblem, interpretation:PartialInterpretation,
36616 source: DefinedElement, target:DefinedElement)
36617{
36618 find interpretation(problem,interpretation);
36619 // The two endpoint of the link have to exist
36620 find mayExist(problem, interpretation, source);
36621 find mayExist(problem, interpretation, target);
36622 // Type consistency
36623 find mayInstanceOfEClass_class(problem,interpretation,source);
36624 find mayInstanceOfEStructuralFeature_class(problem,interpretation,target);
36625} or {
36626 find mustInRelationeAllStructuralFeatures_reference_EClass(problem,interpretation,source,target);
36627}
36628/**
36629 * Matcher for detecting tuples t where []eAllSuperTypes reference EClass(source,target)
36630 */
36631private pattern mustInRelationeAllSuperTypes_reference_EClass(
36632 problem:LogicProblem, interpretation:PartialInterpretation,
36633 source: DefinedElement, target:DefinedElement)
36634{
36635 find interpretation(problem,interpretation);
36636 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
36637 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllSuperTypes reference EClass");
36638 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
36639 BinaryElementRelationLink.param1(link,source);
36640 BinaryElementRelationLink.param2(link,target);
36641}
36642/**
36643 * Matcher for detecting tuples t where <>eAllSuperTypes reference EClass(source,target)
36644 */
36645private pattern mayInRelationeAllSuperTypes_reference_EClass(
36646 problem:LogicProblem, interpretation:PartialInterpretation,
36647 source: DefinedElement, target:DefinedElement)
36648{
36649 find interpretation(problem,interpretation);
36650 // The two endpoint of the link have to exist
36651 find mayExist(problem, interpretation, source);
36652 find mayExist(problem, interpretation, target);
36653 // Type consistency
36654 find mayInstanceOfEClass_class(problem,interpretation,source);
36655 find mayInstanceOfEClass_class(problem,interpretation,target);
36656} or {
36657 find mustInRelationeAllSuperTypes_reference_EClass(problem,interpretation,source,target);
36658}
36659/**
36660 * Matcher for detecting tuples t where []eIDAttribute reference EClass(source,target)
36661 */
36662private pattern mustInRelationeIDAttribute_reference_EClass(
36663 problem:LogicProblem, interpretation:PartialInterpretation,
36664 source: DefinedElement, target:DefinedElement)
36665{
36666 find interpretation(problem,interpretation);
36667 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
36668 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eIDAttribute reference EClass");
36669 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
36670 BinaryElementRelationLink.param1(link,source);
36671 BinaryElementRelationLink.param2(link,target);
36672}
36673/**
36674 * Matcher for detecting tuples t where <>eIDAttribute reference EClass(source,target)
36675 */
36676private pattern mayInRelationeIDAttribute_reference_EClass(
36677 problem:LogicProblem, interpretation:PartialInterpretation,
36678 source: DefinedElement, target:DefinedElement)
36679{
36680 find interpretation(problem,interpretation);
36681 // The two endpoint of the link have to exist
36682 find mayExist(problem, interpretation, source);
36683 find mayExist(problem, interpretation, target);
36684 // Type consistency
36685 find mayInstanceOfEClass_class(problem,interpretation,source);
36686 find mayInstanceOfEAttribute_class(problem,interpretation,target);
36687 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
36688 // the upper bound of the multiplicity should be considered.
36689 numberOfExistingReferences == count find mustInRelationeIDAttribute_reference_EClass(problem,interpretation,source,_);
36690 check(numberOfExistingReferences < 1);
36691} or {
36692 find mustInRelationeIDAttribute_reference_EClass(problem,interpretation,source,target);
36693}
36694/**
36695 * Matcher for detecting tuples t where []eStructuralFeatures reference EClass(source,target)
36696 */
36697private pattern mustInRelationeStructuralFeatures_reference_EClass(
36698 problem:LogicProblem, interpretation:PartialInterpretation,
36699 source: DefinedElement, target:DefinedElement)
36700{
36701 find interpretation(problem,interpretation);
36702 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
36703 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eStructuralFeatures reference EClass");
36704 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
36705 BinaryElementRelationLink.param1(link,source);
36706 BinaryElementRelationLink.param2(link,target);
36707}
36708/**
36709 * Matcher for detecting tuples t where <>eStructuralFeatures reference EClass(source,target)
36710 */
36711private pattern mayInRelationeStructuralFeatures_reference_EClass(
36712 problem:LogicProblem, interpretation:PartialInterpretation,
36713 source: DefinedElement, target:DefinedElement)
36714{
36715 find interpretation(problem,interpretation);
36716 // The two endpoint of the link have to exist
36717 find mayExist(problem, interpretation, source);
36718 find mayExist(problem, interpretation, target);
36719 // Type consistency
36720 find mayInstanceOfEClass_class(problem,interpretation,source);
36721 find mayInstanceOfEStructuralFeature_class(problem,interpretation,target);
36722 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
36723 // the upper bound of the opposite reference multiplicity should be considered.
36724 numberOfExistingOppositeReferences == count find mustInRelationeContainingClass_reference_EStructuralFeature(problem,interpretation,target,_);
36725 check(numberOfExistingOppositeReferences < 1);
36726 // The reference is containment, then a new reference cannot be create if:
36727 // 1. Multiple parents
36728 neg find mustContains4(problem,interpretation,_,target);
36729 // 2. Circle in the containment hierarchy
36730 neg find mustTransitiveContains(source,target);
36731} or {
36732 find mustInRelationeStructuralFeatures_reference_EClass(problem,interpretation,source,target);
36733}
36734/**
36735 * Matcher for detecting tuples t where []eGenericSuperTypes reference EClass(source,target)
36736 */
36737private pattern mustInRelationeGenericSuperTypes_reference_EClass(
36738 problem:LogicProblem, interpretation:PartialInterpretation,
36739 source: DefinedElement, target:DefinedElement)
36740{
36741 find interpretation(problem,interpretation);
36742 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
36743 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eGenericSuperTypes reference EClass");
36744 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
36745 BinaryElementRelationLink.param1(link,source);
36746 BinaryElementRelationLink.param2(link,target);
36747}
36748/**
36749 * Matcher for detecting tuples t where <>eGenericSuperTypes reference EClass(source,target)
36750 */
36751private pattern mayInRelationeGenericSuperTypes_reference_EClass(
36752 problem:LogicProblem, interpretation:PartialInterpretation,
36753 source: DefinedElement, target:DefinedElement)
36754{
36755 find interpretation(problem,interpretation);
36756 // The two endpoint of the link have to exist
36757 find mayExist(problem, interpretation, source);
36758 find mayExist(problem, interpretation, target);
36759 // Type consistency
36760 find mayInstanceOfEClass_class(problem,interpretation,source);
36761 find mayInstanceOfEGenericType_class(problem,interpretation,target);
36762 // The reference is containment, then a new reference cannot be create if:
36763 // 1. Multiple parents
36764 neg find mustContains4(problem,interpretation,_,target);
36765 // 2. Circle in the containment hierarchy
36766 neg find mustTransitiveContains(source,target);
36767} or {
36768 find mustInRelationeGenericSuperTypes_reference_EClass(problem,interpretation,source,target);
36769}
36770/**
36771 * Matcher for detecting tuples t where []eAllGenericSuperTypes reference EClass(source,target)
36772 */
36773private pattern mustInRelationeAllGenericSuperTypes_reference_EClass(
36774 problem:LogicProblem, interpretation:PartialInterpretation,
36775 source: DefinedElement, target:DefinedElement)
36776{
36777 find interpretation(problem,interpretation);
36778 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
36779 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllGenericSuperTypes reference EClass");
36780 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
36781 BinaryElementRelationLink.param1(link,source);
36782 BinaryElementRelationLink.param2(link,target);
36783}
36784/**
36785 * Matcher for detecting tuples t where <>eAllGenericSuperTypes reference EClass(source,target)
36786 */
36787private pattern mayInRelationeAllGenericSuperTypes_reference_EClass(
36788 problem:LogicProblem, interpretation:PartialInterpretation,
36789 source: DefinedElement, target:DefinedElement)
36790{
36791 find interpretation(problem,interpretation);
36792 // The two endpoint of the link have to exist
36793 find mayExist(problem, interpretation, source);
36794 find mayExist(problem, interpretation, target);
36795 // Type consistency
36796 find mayInstanceOfEClass_class(problem,interpretation,source);
36797 find mayInstanceOfEGenericType_class(problem,interpretation,target);
36798} or {
36799 find mustInRelationeAllGenericSuperTypes_reference_EClass(problem,interpretation,source,target);
36800}
36801/**
36802 * Matcher for detecting tuples t where []ePackage reference EClassifier(source,target)
36803 */
36804private pattern mustInRelationePackage_reference_EClassifier(
36805 problem:LogicProblem, interpretation:PartialInterpretation,
36806 source: DefinedElement, target:DefinedElement)
36807{
36808 find interpretation(problem,interpretation);
36809 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
36810 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"ePackage reference EClassifier");
36811 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
36812 BinaryElementRelationLink.param1(link,source);
36813 BinaryElementRelationLink.param2(link,target);
36814}
36815/**
36816 * Matcher for detecting tuples t where <>ePackage reference EClassifier(source,target)
36817 */
36818private pattern mayInRelationePackage_reference_EClassifier(
36819 problem:LogicProblem, interpretation:PartialInterpretation,
36820 source: DefinedElement, target:DefinedElement)
36821{
36822 find interpretation(problem,interpretation);
36823 // The two endpoint of the link have to exist
36824 find mayExist(problem, interpretation, source);
36825 find mayExist(problem, interpretation, target);
36826 // Type consistency
36827 find mayInstanceOfEClassifier_class(problem,interpretation,source);
36828 find mayInstanceOfEPackage_class(problem,interpretation,target);
36829 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
36830 // the upper bound of the multiplicity should be considered.
36831 numberOfExistingReferences == count find mustInRelationePackage_reference_EClassifier(problem,interpretation,source,_);
36832 check(numberOfExistingReferences < 1);
36833 // The eOpposite of the reference is containment, then a referene cannot be created if
36834 // 1. Multiple parents
36835 neg find mustContains4(problem,interpretation,source,_);
36836 // 2. Circle in the containment hierarchy
36837 neg find mustTransitiveContains(source,target);
36838} or {
36839 find mustInRelationePackage_reference_EClassifier(problem,interpretation,source,target);
36840}
36841/**
36842 * Matcher for detecting tuples t where []eTypeParameters reference EClassifier(source,target)
36843 */
36844private pattern mustInRelationeTypeParameters_reference_EClassifier(
36845 problem:LogicProblem, interpretation:PartialInterpretation,
36846 source: DefinedElement, target:DefinedElement)
36847{
36848 find interpretation(problem,interpretation);
36849 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
36850 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eTypeParameters reference EClassifier");
36851 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
36852 BinaryElementRelationLink.param1(link,source);
36853 BinaryElementRelationLink.param2(link,target);
36854}
36855/**
36856 * Matcher for detecting tuples t where <>eTypeParameters reference EClassifier(source,target)
36857 */
36858private pattern mayInRelationeTypeParameters_reference_EClassifier(
36859 problem:LogicProblem, interpretation:PartialInterpretation,
36860 source: DefinedElement, target:DefinedElement)
36861{
36862 find interpretation(problem,interpretation);
36863 // The two endpoint of the link have to exist
36864 find mayExist(problem, interpretation, source);
36865 find mayExist(problem, interpretation, target);
36866 // Type consistency
36867 find mayInstanceOfEClassifier_class(problem,interpretation,source);
36868 find mayInstanceOfETypeParameter_class(problem,interpretation,target);
36869 // The reference is containment, then a new reference cannot be create if:
36870 // 1. Multiple parents
36871 neg find mustContains4(problem,interpretation,_,target);
36872 // 2. Circle in the containment hierarchy
36873 neg find mustTransitiveContains(source,target);
36874} or {
36875 find mustInRelationeTypeParameters_reference_EClassifier(problem,interpretation,source,target);
36876}
36877/**
36878 * Matcher for detecting tuples t where []eLiterals reference EEnum(source,target)
36879 */
36880private pattern mustInRelationeLiterals_reference_EEnum(
36881 problem:LogicProblem, interpretation:PartialInterpretation,
36882 source: DefinedElement, target:DefinedElement)
36883{
36884 find interpretation(problem,interpretation);
36885 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
36886 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eLiterals reference EEnum");
36887 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
36888 BinaryElementRelationLink.param1(link,source);
36889 BinaryElementRelationLink.param2(link,target);
36890}
36891/**
36892 * Matcher for detecting tuples t where <>eLiterals reference EEnum(source,target)
36893 */
36894private pattern mayInRelationeLiterals_reference_EEnum(
36895 problem:LogicProblem, interpretation:PartialInterpretation,
36896 source: DefinedElement, target:DefinedElement)
36897{
36898 find interpretation(problem,interpretation);
36899 // The two endpoint of the link have to exist
36900 find mayExist(problem, interpretation, source);
36901 find mayExist(problem, interpretation, target);
36902 // Type consistency
36903 find mayInstanceOfEEnum_class(problem,interpretation,source);
36904 find mayInstanceOfEEnumLiteral_class(problem,interpretation,target);
36905 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
36906 // the upper bound of the opposite reference multiplicity should be considered.
36907 numberOfExistingOppositeReferences == count find mustInRelationeEnum_reference_EEnumLiteral(problem,interpretation,target,_);
36908 check(numberOfExistingOppositeReferences < 1);
36909 // The reference is containment, then a new reference cannot be create if:
36910 // 1. Multiple parents
36911 neg find mustContains4(problem,interpretation,_,target);
36912 // 2. Circle in the containment hierarchy
36913 neg find mustTransitiveContains(source,target);
36914} or {
36915 find mustInRelationeLiterals_reference_EEnum(problem,interpretation,source,target);
36916}
36917/**
36918 * Matcher for detecting tuples t where []eEnum reference EEnumLiteral(source,target)
36919 */
36920private pattern mustInRelationeEnum_reference_EEnumLiteral(
36921 problem:LogicProblem, interpretation:PartialInterpretation,
36922 source: DefinedElement, target:DefinedElement)
36923{
36924 find interpretation(problem,interpretation);
36925 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
36926 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eEnum reference EEnumLiteral");
36927 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
36928 BinaryElementRelationLink.param1(link,source);
36929 BinaryElementRelationLink.param2(link,target);
36930}
36931/**
36932 * Matcher for detecting tuples t where <>eEnum reference EEnumLiteral(source,target)
36933 */
36934private pattern mayInRelationeEnum_reference_EEnumLiteral(
36935 problem:LogicProblem, interpretation:PartialInterpretation,
36936 source: DefinedElement, target:DefinedElement)
36937{
36938 find interpretation(problem,interpretation);
36939 // The two endpoint of the link have to exist
36940 find mayExist(problem, interpretation, source);
36941 find mayExist(problem, interpretation, target);
36942 // Type consistency
36943 find mayInstanceOfEEnumLiteral_class(problem,interpretation,source);
36944 find mayInstanceOfEEnum_class(problem,interpretation,target);
36945 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
36946 // the upper bound of the multiplicity should be considered.
36947 numberOfExistingReferences == count find mustInRelationeEnum_reference_EEnumLiteral(problem,interpretation,source,_);
36948 check(numberOfExistingReferences < 1);
36949 // The eOpposite of the reference is containment, then a referene cannot be created if
36950 // 1. Multiple parents
36951 neg find mustContains4(problem,interpretation,source,_);
36952 // 2. Circle in the containment hierarchy
36953 neg find mustTransitiveContains(source,target);
36954} or {
36955 find mustInRelationeEnum_reference_EEnumLiteral(problem,interpretation,source,target);
36956}
36957/**
36958 * Matcher for detecting tuples t where []eAnnotations reference EModelElement(source,target)
36959 */
36960private pattern mustInRelationeAnnotations_reference_EModelElement(
36961 problem:LogicProblem, interpretation:PartialInterpretation,
36962 source: DefinedElement, target:DefinedElement)
36963{
36964 find interpretation(problem,interpretation);
36965 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
36966 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAnnotations reference EModelElement");
36967 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
36968 BinaryElementRelationLink.param1(link,source);
36969 BinaryElementRelationLink.param2(link,target);
36970}
36971/**
36972 * Matcher for detecting tuples t where <>eAnnotations reference EModelElement(source,target)
36973 */
36974private pattern mayInRelationeAnnotations_reference_EModelElement(
36975 problem:LogicProblem, interpretation:PartialInterpretation,
36976 source: DefinedElement, target:DefinedElement)
36977{
36978 find interpretation(problem,interpretation);
36979 // The two endpoint of the link have to exist
36980 find mayExist(problem, interpretation, source);
36981 find mayExist(problem, interpretation, target);
36982 // Type consistency
36983 find mayInstanceOfEModelElement_class(problem,interpretation,source);
36984 find mayInstanceOfEAnnotation_class(problem,interpretation,target);
36985 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
36986 // the upper bound of the opposite reference multiplicity should be considered.
36987 numberOfExistingOppositeReferences == count find mustInRelationeModelElement_reference_EAnnotation(problem,interpretation,target,_);
36988 check(numberOfExistingOppositeReferences < 1);
36989 // The reference is containment, then a new reference cannot be create if:
36990 // 1. Multiple parents
36991 neg find mustContains4(problem,interpretation,_,target);
36992 // 2. Circle in the containment hierarchy
36993 neg find mustTransitiveContains(source,target);
36994} or {
36995 find mustInRelationeAnnotations_reference_EModelElement(problem,interpretation,source,target);
36996}
36997/**
36998 * Matcher for detecting tuples t where []eContainingClass reference EOperation(source,target)
36999 */
37000private pattern mustInRelationeContainingClass_reference_EOperation(
37001 problem:LogicProblem, interpretation:PartialInterpretation,
37002 source: DefinedElement, target:DefinedElement)
37003{
37004 find interpretation(problem,interpretation);
37005 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
37006 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eContainingClass reference EOperation");
37007 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
37008 BinaryElementRelationLink.param1(link,source);
37009 BinaryElementRelationLink.param2(link,target);
37010}
37011/**
37012 * Matcher for detecting tuples t where <>eContainingClass reference EOperation(source,target)
37013 */
37014private pattern mayInRelationeContainingClass_reference_EOperation(
37015 problem:LogicProblem, interpretation:PartialInterpretation,
37016 source: DefinedElement, target:DefinedElement)
37017{
37018 find interpretation(problem,interpretation);
37019 // The two endpoint of the link have to exist
37020 find mayExist(problem, interpretation, source);
37021 find mayExist(problem, interpretation, target);
37022 // Type consistency
37023 find mayInstanceOfEOperation_class(problem,interpretation,source);
37024 find mayInstanceOfEClass_class(problem,interpretation,target);
37025 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
37026 // the upper bound of the multiplicity should be considered.
37027 numberOfExistingReferences == count find mustInRelationeContainingClass_reference_EOperation(problem,interpretation,source,_);
37028 check(numberOfExistingReferences < 1);
37029 // The eOpposite of the reference is containment, then a referene cannot be created if
37030 // 1. Multiple parents
37031 neg find mustContains4(problem,interpretation,source,_);
37032 // 2. Circle in the containment hierarchy
37033 neg find mustTransitiveContains(source,target);
37034} or {
37035 find mustInRelationeContainingClass_reference_EOperation(problem,interpretation,source,target);
37036}
37037/**
37038 * Matcher for detecting tuples t where []eTypeParameters reference EOperation(source,target)
37039 */
37040private pattern mustInRelationeTypeParameters_reference_EOperation(
37041 problem:LogicProblem, interpretation:PartialInterpretation,
37042 source: DefinedElement, target:DefinedElement)
37043{
37044 find interpretation(problem,interpretation);
37045 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
37046 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eTypeParameters reference EOperation");
37047 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
37048 BinaryElementRelationLink.param1(link,source);
37049 BinaryElementRelationLink.param2(link,target);
37050}
37051/**
37052 * Matcher for detecting tuples t where <>eTypeParameters reference EOperation(source,target)
37053 */
37054private pattern mayInRelationeTypeParameters_reference_EOperation(
37055 problem:LogicProblem, interpretation:PartialInterpretation,
37056 source: DefinedElement, target:DefinedElement)
37057{
37058 find interpretation(problem,interpretation);
37059 // The two endpoint of the link have to exist
37060 find mayExist(problem, interpretation, source);
37061 find mayExist(problem, interpretation, target);
37062 // Type consistency
37063 find mayInstanceOfEOperation_class(problem,interpretation,source);
37064 find mayInstanceOfETypeParameter_class(problem,interpretation,target);
37065 // The reference is containment, then a new reference cannot be create if:
37066 // 1. Multiple parents
37067 neg find mustContains4(problem,interpretation,_,target);
37068 // 2. Circle in the containment hierarchy
37069 neg find mustTransitiveContains(source,target);
37070} or {
37071 find mustInRelationeTypeParameters_reference_EOperation(problem,interpretation,source,target);
37072}
37073/**
37074 * Matcher for detecting tuples t where []eParameters reference EOperation(source,target)
37075 */
37076private pattern mustInRelationeParameters_reference_EOperation(
37077 problem:LogicProblem, interpretation:PartialInterpretation,
37078 source: DefinedElement, target:DefinedElement)
37079{
37080 find interpretation(problem,interpretation);
37081 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
37082 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eParameters reference EOperation");
37083 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
37084 BinaryElementRelationLink.param1(link,source);
37085 BinaryElementRelationLink.param2(link,target);
37086}
37087/**
37088 * Matcher for detecting tuples t where <>eParameters reference EOperation(source,target)
37089 */
37090private pattern mayInRelationeParameters_reference_EOperation(
37091 problem:LogicProblem, interpretation:PartialInterpretation,
37092 source: DefinedElement, target:DefinedElement)
37093{
37094 find interpretation(problem,interpretation);
37095 // The two endpoint of the link have to exist
37096 find mayExist(problem, interpretation, source);
37097 find mayExist(problem, interpretation, target);
37098 // Type consistency
37099 find mayInstanceOfEOperation_class(problem,interpretation,source);
37100 find mayInstanceOfEParameter_class(problem,interpretation,target);
37101 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
37102 // the upper bound of the opposite reference multiplicity should be considered.
37103 numberOfExistingOppositeReferences == count find mustInRelationeOperation_reference_EParameter(problem,interpretation,target,_);
37104 check(numberOfExistingOppositeReferences < 1);
37105 // The reference is containment, then a new reference cannot be create if:
37106 // 1. Multiple parents
37107 neg find mustContains4(problem,interpretation,_,target);
37108 // 2. Circle in the containment hierarchy
37109 neg find mustTransitiveContains(source,target);
37110} or {
37111 find mustInRelationeParameters_reference_EOperation(problem,interpretation,source,target);
37112}
37113/**
37114 * Matcher for detecting tuples t where []eExceptions reference EOperation(source,target)
37115 */
37116private pattern mustInRelationeExceptions_reference_EOperation(
37117 problem:LogicProblem, interpretation:PartialInterpretation,
37118 source: DefinedElement, target:DefinedElement)
37119{
37120 find interpretation(problem,interpretation);
37121 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
37122 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eExceptions reference EOperation");
37123 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
37124 BinaryElementRelationLink.param1(link,source);
37125 BinaryElementRelationLink.param2(link,target);
37126}
37127/**
37128 * Matcher for detecting tuples t where <>eExceptions reference EOperation(source,target)
37129 */
37130private pattern mayInRelationeExceptions_reference_EOperation(
37131 problem:LogicProblem, interpretation:PartialInterpretation,
37132 source: DefinedElement, target:DefinedElement)
37133{
37134 find interpretation(problem,interpretation);
37135 // The two endpoint of the link have to exist
37136 find mayExist(problem, interpretation, source);
37137 find mayExist(problem, interpretation, target);
37138 // Type consistency
37139 find mayInstanceOfEOperation_class(problem,interpretation,source);
37140 find mayInstanceOfEClassifier_class(problem,interpretation,target);
37141} or {
37142 find mustInRelationeExceptions_reference_EOperation(problem,interpretation,source,target);
37143}
37144/**
37145 * Matcher for detecting tuples t where []eGenericExceptions reference EOperation(source,target)
37146 */
37147private pattern mustInRelationeGenericExceptions_reference_EOperation(
37148 problem:LogicProblem, interpretation:PartialInterpretation,
37149 source: DefinedElement, target:DefinedElement)
37150{
37151 find interpretation(problem,interpretation);
37152 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
37153 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eGenericExceptions reference EOperation");
37154 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
37155 BinaryElementRelationLink.param1(link,source);
37156 BinaryElementRelationLink.param2(link,target);
37157}
37158/**
37159 * Matcher for detecting tuples t where <>eGenericExceptions reference EOperation(source,target)
37160 */
37161private pattern mayInRelationeGenericExceptions_reference_EOperation(
37162 problem:LogicProblem, interpretation:PartialInterpretation,
37163 source: DefinedElement, target:DefinedElement)
37164{
37165 find interpretation(problem,interpretation);
37166 // The two endpoint of the link have to exist
37167 find mayExist(problem, interpretation, source);
37168 find mayExist(problem, interpretation, target);
37169 // Type consistency
37170 find mayInstanceOfEOperation_class(problem,interpretation,source);
37171 find mayInstanceOfEGenericType_class(problem,interpretation,target);
37172 // The reference is containment, then a new reference cannot be create if:
37173 // 1. Multiple parents
37174 neg find mustContains4(problem,interpretation,_,target);
37175 // 2. Circle in the containment hierarchy
37176 neg find mustTransitiveContains(source,target);
37177} or {
37178 find mustInRelationeGenericExceptions_reference_EOperation(problem,interpretation,source,target);
37179}
37180/**
37181 * Matcher for detecting tuples t where []eClassifiers reference EPackage(source,target)
37182 */
37183private pattern mustInRelationeClassifiers_reference_EPackage(
37184 problem:LogicProblem, interpretation:PartialInterpretation,
37185 source: DefinedElement, target:DefinedElement)
37186{
37187 find interpretation(problem,interpretation);
37188 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
37189 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eClassifiers reference EPackage");
37190 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
37191 BinaryElementRelationLink.param1(link,source);
37192 BinaryElementRelationLink.param2(link,target);
37193}
37194/**
37195 * Matcher for detecting tuples t where <>eClassifiers reference EPackage(source,target)
37196 */
37197private pattern mayInRelationeClassifiers_reference_EPackage(
37198 problem:LogicProblem, interpretation:PartialInterpretation,
37199 source: DefinedElement, target:DefinedElement)
37200{
37201 find interpretation(problem,interpretation);
37202 // The two endpoint of the link have to exist
37203 find mayExist(problem, interpretation, source);
37204 find mayExist(problem, interpretation, target);
37205 // Type consistency
37206 find mayInstanceOfEPackage_class(problem,interpretation,source);
37207 find mayInstanceOfEClassifier_class(problem,interpretation,target);
37208 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
37209 // the upper bound of the opposite reference multiplicity should be considered.
37210 numberOfExistingOppositeReferences == count find mustInRelationePackage_reference_EClassifier(problem,interpretation,target,_);
37211 check(numberOfExistingOppositeReferences < 1);
37212 // The reference is containment, then a new reference cannot be create if:
37213 // 1. Multiple parents
37214 neg find mustContains4(problem,interpretation,_,target);
37215 // 2. Circle in the containment hierarchy
37216 neg find mustTransitiveContains(source,target);
37217} or {
37218 find mustInRelationeClassifiers_reference_EPackage(problem,interpretation,source,target);
37219}
37220/**
37221 * Matcher for detecting tuples t where []eSubpackages reference EPackage(source,target)
37222 */
37223private pattern mustInRelationeSubpackages_reference_EPackage(
37224 problem:LogicProblem, interpretation:PartialInterpretation,
37225 source: DefinedElement, target:DefinedElement)
37226{
37227 find interpretation(problem,interpretation);
37228 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
37229 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eSubpackages reference EPackage");
37230 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
37231 BinaryElementRelationLink.param1(link,source);
37232 BinaryElementRelationLink.param2(link,target);
37233}
37234/**
37235 * Matcher for detecting tuples t where <>eSubpackages reference EPackage(source,target)
37236 */
37237private pattern mayInRelationeSubpackages_reference_EPackage(
37238 problem:LogicProblem, interpretation:PartialInterpretation,
37239 source: DefinedElement, target:DefinedElement)
37240{
37241 find interpretation(problem,interpretation);
37242 // The two endpoint of the link have to exist
37243 find mayExist(problem, interpretation, source);
37244 find mayExist(problem, interpretation, target);
37245 // Type consistency
37246 find mayInstanceOfEPackage_class(problem,interpretation,source);
37247 find mayInstanceOfEPackage_class(problem,interpretation,target);
37248 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
37249 // the upper bound of the opposite reference multiplicity should be considered.
37250 numberOfExistingOppositeReferences == count find mustInRelationeSuperPackage_reference_EPackage(problem,interpretation,target,_);
37251 check(numberOfExistingOppositeReferences < 1);
37252 // The reference is containment, then a new reference cannot be create if:
37253 // 1. Multiple parents
37254 neg find mustContains4(problem,interpretation,_,target);
37255 // 2. Circle in the containment hierarchy
37256 neg find mustTransitiveContains(source,target);
37257} or {
37258 find mustInRelationeSubpackages_reference_EPackage(problem,interpretation,source,target);
37259}
37260/**
37261 * Matcher for detecting tuples t where []eSuperPackage reference EPackage(source,target)
37262 */
37263private pattern mustInRelationeSuperPackage_reference_EPackage(
37264 problem:LogicProblem, interpretation:PartialInterpretation,
37265 source: DefinedElement, target:DefinedElement)
37266{
37267 find interpretation(problem,interpretation);
37268 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
37269 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eSuperPackage reference EPackage");
37270 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
37271 BinaryElementRelationLink.param1(link,source);
37272 BinaryElementRelationLink.param2(link,target);
37273}
37274/**
37275 * Matcher for detecting tuples t where <>eSuperPackage reference EPackage(source,target)
37276 */
37277private pattern mayInRelationeSuperPackage_reference_EPackage(
37278 problem:LogicProblem, interpretation:PartialInterpretation,
37279 source: DefinedElement, target:DefinedElement)
37280{
37281 find interpretation(problem,interpretation);
37282 // The two endpoint of the link have to exist
37283 find mayExist(problem, interpretation, source);
37284 find mayExist(problem, interpretation, target);
37285 // Type consistency
37286 find mayInstanceOfEPackage_class(problem,interpretation,source);
37287 find mayInstanceOfEPackage_class(problem,interpretation,target);
37288 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
37289 // the upper bound of the multiplicity should be considered.
37290 numberOfExistingReferences == count find mustInRelationeSuperPackage_reference_EPackage(problem,interpretation,source,_);
37291 check(numberOfExistingReferences < 1);
37292 // The eOpposite of the reference is containment, then a referene cannot be created if
37293 // 1. Multiple parents
37294 neg find mustContains4(problem,interpretation,source,_);
37295 // 2. Circle in the containment hierarchy
37296 neg find mustTransitiveContains(source,target);
37297} or {
37298 find mustInRelationeSuperPackage_reference_EPackage(problem,interpretation,source,target);
37299}
37300/**
37301 * Matcher for detecting tuples t where []eOperation reference EParameter(source,target)
37302 */
37303private pattern mustInRelationeOperation_reference_EParameter(
37304 problem:LogicProblem, interpretation:PartialInterpretation,
37305 source: DefinedElement, target:DefinedElement)
37306{
37307 find interpretation(problem,interpretation);
37308 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
37309 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eOperation reference EParameter");
37310 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
37311 BinaryElementRelationLink.param1(link,source);
37312 BinaryElementRelationLink.param2(link,target);
37313}
37314/**
37315 * Matcher for detecting tuples t where <>eOperation reference EParameter(source,target)
37316 */
37317private pattern mayInRelationeOperation_reference_EParameter(
37318 problem:LogicProblem, interpretation:PartialInterpretation,
37319 source: DefinedElement, target:DefinedElement)
37320{
37321 find interpretation(problem,interpretation);
37322 // The two endpoint of the link have to exist
37323 find mayExist(problem, interpretation, source);
37324 find mayExist(problem, interpretation, target);
37325 // Type consistency
37326 find mayInstanceOfEParameter_class(problem,interpretation,source);
37327 find mayInstanceOfEOperation_class(problem,interpretation,target);
37328 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
37329 // the upper bound of the multiplicity should be considered.
37330 numberOfExistingReferences == count find mustInRelationeOperation_reference_EParameter(problem,interpretation,source,_);
37331 check(numberOfExistingReferences < 1);
37332 // The eOpposite of the reference is containment, then a referene cannot be created if
37333 // 1. Multiple parents
37334 neg find mustContains4(problem,interpretation,source,_);
37335 // 2. Circle in the containment hierarchy
37336 neg find mustTransitiveContains(source,target);
37337} or {
37338 find mustInRelationeOperation_reference_EParameter(problem,interpretation,source,target);
37339}
37340/**
37341 * Matcher for detecting tuples t where []eOpposite reference EReference(source,target)
37342 */
37343private pattern mustInRelationeOpposite_reference_EReference(
37344 problem:LogicProblem, interpretation:PartialInterpretation,
37345 source: DefinedElement, target:DefinedElement)
37346{
37347 find interpretation(problem,interpretation);
37348 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
37349 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eOpposite reference EReference");
37350 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
37351 BinaryElementRelationLink.param1(link,source);
37352 BinaryElementRelationLink.param2(link,target);
37353}
37354/**
37355 * Matcher for detecting tuples t where <>eOpposite reference EReference(source,target)
37356 */
37357private pattern mayInRelationeOpposite_reference_EReference(
37358 problem:LogicProblem, interpretation:PartialInterpretation,
37359 source: DefinedElement, target:DefinedElement)
37360{
37361 find interpretation(problem,interpretation);
37362 // The two endpoint of the link have to exist
37363 find mayExist(problem, interpretation, source);
37364 find mayExist(problem, interpretation, target);
37365 // Type consistency
37366 find mayInstanceOfEReference_class(problem,interpretation,source);
37367 find mayInstanceOfEReference_class(problem,interpretation,target);
37368 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
37369 // the upper bound of the multiplicity should be considered.
37370 numberOfExistingReferences == count find mustInRelationeOpposite_reference_EReference(problem,interpretation,source,_);
37371 check(numberOfExistingReferences < 1);
37372} or {
37373 find mustInRelationeOpposite_reference_EReference(problem,interpretation,source,target);
37374}
37375/**
37376 * Matcher for detecting tuples t where []eReferenceType reference EReference(source,target)
37377 */
37378private pattern mustInRelationeReferenceType_reference_EReference(
37379 problem:LogicProblem, interpretation:PartialInterpretation,
37380 source: DefinedElement, target:DefinedElement)
37381{
37382 find interpretation(problem,interpretation);
37383 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
37384 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eReferenceType reference EReference");
37385 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
37386 BinaryElementRelationLink.param1(link,source);
37387 BinaryElementRelationLink.param2(link,target);
37388}
37389/**
37390 * Matcher for detecting tuples t where <>eReferenceType reference EReference(source,target)
37391 */
37392private pattern mayInRelationeReferenceType_reference_EReference(
37393 problem:LogicProblem, interpretation:PartialInterpretation,
37394 source: DefinedElement, target:DefinedElement)
37395{
37396 find interpretation(problem,interpretation);
37397 // The two endpoint of the link have to exist
37398 find mayExist(problem, interpretation, source);
37399 find mayExist(problem, interpretation, target);
37400 // Type consistency
37401 find mayInstanceOfEReference_class(problem,interpretation,source);
37402 find mayInstanceOfEClass_class(problem,interpretation,target);
37403 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
37404 // the upper bound of the multiplicity should be considered.
37405 numberOfExistingReferences == count find mustInRelationeReferenceType_reference_EReference(problem,interpretation,source,_);
37406 check(numberOfExistingReferences < 1);
37407} or {
37408 find mustInRelationeReferenceType_reference_EReference(problem,interpretation,source,target);
37409}
37410/**
37411 * Matcher for detecting tuples t where []eKeys reference EReference(source,target)
37412 */
37413private pattern mustInRelationeKeys_reference_EReference(
37414 problem:LogicProblem, interpretation:PartialInterpretation,
37415 source: DefinedElement, target:DefinedElement)
37416{
37417 find interpretation(problem,interpretation);
37418 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
37419 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eKeys reference EReference");
37420 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
37421 BinaryElementRelationLink.param1(link,source);
37422 BinaryElementRelationLink.param2(link,target);
37423}
37424/**
37425 * Matcher for detecting tuples t where <>eKeys reference EReference(source,target)
37426 */
37427private pattern mayInRelationeKeys_reference_EReference(
37428 problem:LogicProblem, interpretation:PartialInterpretation,
37429 source: DefinedElement, target:DefinedElement)
37430{
37431 find interpretation(problem,interpretation);
37432 // The two endpoint of the link have to exist
37433 find mayExist(problem, interpretation, source);
37434 find mayExist(problem, interpretation, target);
37435 // Type consistency
37436 find mayInstanceOfEReference_class(problem,interpretation,source);
37437 find mayInstanceOfEAttribute_class(problem,interpretation,target);
37438} or {
37439 find mustInRelationeKeys_reference_EReference(problem,interpretation,source,target);
37440}
37441/**
37442 * Matcher for detecting tuples t where []eContainingClass reference EStructuralFeature(source,target)
37443 */
37444private pattern mustInRelationeContainingClass_reference_EStructuralFeature(
37445 problem:LogicProblem, interpretation:PartialInterpretation,
37446 source: DefinedElement, target:DefinedElement)
37447{
37448 find interpretation(problem,interpretation);
37449 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
37450 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eContainingClass reference EStructuralFeature");
37451 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
37452 BinaryElementRelationLink.param1(link,source);
37453 BinaryElementRelationLink.param2(link,target);
37454}
37455/**
37456 * Matcher for detecting tuples t where <>eContainingClass reference EStructuralFeature(source,target)
37457 */
37458private pattern mayInRelationeContainingClass_reference_EStructuralFeature(
37459 problem:LogicProblem, interpretation:PartialInterpretation,
37460 source: DefinedElement, target:DefinedElement)
37461{
37462 find interpretation(problem,interpretation);
37463 // The two endpoint of the link have to exist
37464 find mayExist(problem, interpretation, source);
37465 find mayExist(problem, interpretation, target);
37466 // Type consistency
37467 find mayInstanceOfEStructuralFeature_class(problem,interpretation,source);
37468 find mayInstanceOfEClass_class(problem,interpretation,target);
37469 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
37470 // the upper bound of the multiplicity should be considered.
37471 numberOfExistingReferences == count find mustInRelationeContainingClass_reference_EStructuralFeature(problem,interpretation,source,_);
37472 check(numberOfExistingReferences < 1);
37473 // The eOpposite of the reference is containment, then a referene cannot be created if
37474 // 1. Multiple parents
37475 neg find mustContains4(problem,interpretation,source,_);
37476 // 2. Circle in the containment hierarchy
37477 neg find mustTransitiveContains(source,target);
37478} or {
37479 find mustInRelationeContainingClass_reference_EStructuralFeature(problem,interpretation,source,target);
37480}
37481/**
37482 * Matcher for detecting tuples t where []eType reference ETypedElement(source,target)
37483 */
37484private pattern mustInRelationeType_reference_ETypedElement(
37485 problem:LogicProblem, interpretation:PartialInterpretation,
37486 source: DefinedElement, target:DefinedElement)
37487{
37488 find interpretation(problem,interpretation);
37489 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
37490 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eType reference ETypedElement");
37491 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
37492 BinaryElementRelationLink.param1(link,source);
37493 BinaryElementRelationLink.param2(link,target);
37494}
37495/**
37496 * Matcher for detecting tuples t where <>eType reference ETypedElement(source,target)
37497 */
37498private pattern mayInRelationeType_reference_ETypedElement(
37499 problem:LogicProblem, interpretation:PartialInterpretation,
37500 source: DefinedElement, target:DefinedElement)
37501{
37502 find interpretation(problem,interpretation);
37503 // The two endpoint of the link have to exist
37504 find mayExist(problem, interpretation, source);
37505 find mayExist(problem, interpretation, target);
37506 // Type consistency
37507 find mayInstanceOfETypedElement_class(problem,interpretation,source);
37508 find mayInstanceOfEClassifier_class(problem,interpretation,target);
37509 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
37510 // the upper bound of the multiplicity should be considered.
37511 numberOfExistingReferences == count find mustInRelationeType_reference_ETypedElement(problem,interpretation,source,_);
37512 check(numberOfExistingReferences < 1);
37513} or {
37514 find mustInRelationeType_reference_ETypedElement(problem,interpretation,source,target);
37515}
37516/**
37517 * Matcher for detecting tuples t where []eGenericType reference ETypedElement(source,target)
37518 */
37519private pattern mustInRelationeGenericType_reference_ETypedElement(
37520 problem:LogicProblem, interpretation:PartialInterpretation,
37521 source: DefinedElement, target:DefinedElement)
37522{
37523 find interpretation(problem,interpretation);
37524 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
37525 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eGenericType reference ETypedElement");
37526 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
37527 BinaryElementRelationLink.param1(link,source);
37528 BinaryElementRelationLink.param2(link,target);
37529}
37530/**
37531 * Matcher for detecting tuples t where <>eGenericType reference ETypedElement(source,target)
37532 */
37533private pattern mayInRelationeGenericType_reference_ETypedElement(
37534 problem:LogicProblem, interpretation:PartialInterpretation,
37535 source: DefinedElement, target:DefinedElement)
37536{
37537 find interpretation(problem,interpretation);
37538 // The two endpoint of the link have to exist
37539 find mayExist(problem, interpretation, source);
37540 find mayExist(problem, interpretation, target);
37541 // Type consistency
37542 find mayInstanceOfETypedElement_class(problem,interpretation,source);
37543 find mayInstanceOfEGenericType_class(problem,interpretation,target);
37544 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
37545 // the upper bound of the multiplicity should be considered.
37546 numberOfExistingReferences == count find mustInRelationeGenericType_reference_ETypedElement(problem,interpretation,source,_);
37547 check(numberOfExistingReferences < 1);
37548 // The reference is containment, then a new reference cannot be create if:
37549 // 1. Multiple parents
37550 neg find mustContains4(problem,interpretation,_,target);
37551 // 2. Circle in the containment hierarchy
37552 neg find mustTransitiveContains(source,target);
37553} or {
37554 find mustInRelationeGenericType_reference_ETypedElement(problem,interpretation,source,target);
37555}
37556/**
37557 * Matcher for detecting tuples t where []eUpperBound reference EGenericType(source,target)
37558 */
37559private pattern mustInRelationeUpperBound_reference_EGenericType(
37560 problem:LogicProblem, interpretation:PartialInterpretation,
37561 source: DefinedElement, target:DefinedElement)
37562{
37563 find interpretation(problem,interpretation);
37564 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
37565 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eUpperBound reference EGenericType");
37566 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
37567 BinaryElementRelationLink.param1(link,source);
37568 BinaryElementRelationLink.param2(link,target);
37569}
37570/**
37571 * Matcher for detecting tuples t where <>eUpperBound reference EGenericType(source,target)
37572 */
37573private pattern mayInRelationeUpperBound_reference_EGenericType(
37574 problem:LogicProblem, interpretation:PartialInterpretation,
37575 source: DefinedElement, target:DefinedElement)
37576{
37577 find interpretation(problem,interpretation);
37578 // The two endpoint of the link have to exist
37579 find mayExist(problem, interpretation, source);
37580 find mayExist(problem, interpretation, target);
37581 // Type consistency
37582 find mayInstanceOfEGenericType_class(problem,interpretation,source);
37583 find mayInstanceOfEGenericType_class(problem,interpretation,target);
37584 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
37585 // the upper bound of the multiplicity should be considered.
37586 numberOfExistingReferences == count find mustInRelationeUpperBound_reference_EGenericType(problem,interpretation,source,_);
37587 check(numberOfExistingReferences < 1);
37588 // The reference is containment, then a new reference cannot be create if:
37589 // 1. Multiple parents
37590 neg find mustContains4(problem,interpretation,_,target);
37591 // 2. Circle in the containment hierarchy
37592 neg find mustTransitiveContains(source,target);
37593} or {
37594 find mustInRelationeUpperBound_reference_EGenericType(problem,interpretation,source,target);
37595}
37596/**
37597 * Matcher for detecting tuples t where []eTypeArguments reference EGenericType(source,target)
37598 */
37599private pattern mustInRelationeTypeArguments_reference_EGenericType(
37600 problem:LogicProblem, interpretation:PartialInterpretation,
37601 source: DefinedElement, target:DefinedElement)
37602{
37603 find interpretation(problem,interpretation);
37604 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
37605 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eTypeArguments reference EGenericType");
37606 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
37607 BinaryElementRelationLink.param1(link,source);
37608 BinaryElementRelationLink.param2(link,target);
37609}
37610/**
37611 * Matcher for detecting tuples t where <>eTypeArguments reference EGenericType(source,target)
37612 */
37613private pattern mayInRelationeTypeArguments_reference_EGenericType(
37614 problem:LogicProblem, interpretation:PartialInterpretation,
37615 source: DefinedElement, target:DefinedElement)
37616{
37617 find interpretation(problem,interpretation);
37618 // The two endpoint of the link have to exist
37619 find mayExist(problem, interpretation, source);
37620 find mayExist(problem, interpretation, target);
37621 // Type consistency
37622 find mayInstanceOfEGenericType_class(problem,interpretation,source);
37623 find mayInstanceOfEGenericType_class(problem,interpretation,target);
37624 // The reference is containment, then a new reference cannot be create if:
37625 // 1. Multiple parents
37626 neg find mustContains4(problem,interpretation,_,target);
37627 // 2. Circle in the containment hierarchy
37628 neg find mustTransitiveContains(source,target);
37629} or {
37630 find mustInRelationeTypeArguments_reference_EGenericType(problem,interpretation,source,target);
37631}
37632/**
37633 * Matcher for detecting tuples t where []eRawType reference EGenericType(source,target)
37634 */
37635private pattern mustInRelationeRawType_reference_EGenericType(
37636 problem:LogicProblem, interpretation:PartialInterpretation,
37637 source: DefinedElement, target:DefinedElement)
37638{
37639 find interpretation(problem,interpretation);
37640 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
37641 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eRawType reference EGenericType");
37642 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
37643 BinaryElementRelationLink.param1(link,source);
37644 BinaryElementRelationLink.param2(link,target);
37645}
37646/**
37647 * Matcher for detecting tuples t where <>eRawType reference EGenericType(source,target)
37648 */
37649private pattern mayInRelationeRawType_reference_EGenericType(
37650 problem:LogicProblem, interpretation:PartialInterpretation,
37651 source: DefinedElement, target:DefinedElement)
37652{
37653 find interpretation(problem,interpretation);
37654 // The two endpoint of the link have to exist
37655 find mayExist(problem, interpretation, source);
37656 find mayExist(problem, interpretation, target);
37657 // Type consistency
37658 find mayInstanceOfEGenericType_class(problem,interpretation,source);
37659 find mayInstanceOfEClassifier_class(problem,interpretation,target);
37660 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
37661 // the upper bound of the multiplicity should be considered.
37662 numberOfExistingReferences == count find mustInRelationeRawType_reference_EGenericType(problem,interpretation,source,_);
37663 check(numberOfExistingReferences < 1);
37664} or {
37665 find mustInRelationeRawType_reference_EGenericType(problem,interpretation,source,target);
37666}
37667/**
37668 * Matcher for detecting tuples t where []eLowerBound reference EGenericType(source,target)
37669 */
37670private pattern mustInRelationeLowerBound_reference_EGenericType(
37671 problem:LogicProblem, interpretation:PartialInterpretation,
37672 source: DefinedElement, target:DefinedElement)
37673{
37674 find interpretation(problem,interpretation);
37675 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
37676 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eLowerBound reference EGenericType");
37677 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
37678 BinaryElementRelationLink.param1(link,source);
37679 BinaryElementRelationLink.param2(link,target);
37680}
37681/**
37682 * Matcher for detecting tuples t where <>eLowerBound reference EGenericType(source,target)
37683 */
37684private pattern mayInRelationeLowerBound_reference_EGenericType(
37685 problem:LogicProblem, interpretation:PartialInterpretation,
37686 source: DefinedElement, target:DefinedElement)
37687{
37688 find interpretation(problem,interpretation);
37689 // The two endpoint of the link have to exist
37690 find mayExist(problem, interpretation, source);
37691 find mayExist(problem, interpretation, target);
37692 // Type consistency
37693 find mayInstanceOfEGenericType_class(problem,interpretation,source);
37694 find mayInstanceOfEGenericType_class(problem,interpretation,target);
37695 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
37696 // the upper bound of the multiplicity should be considered.
37697 numberOfExistingReferences == count find mustInRelationeLowerBound_reference_EGenericType(problem,interpretation,source,_);
37698 check(numberOfExistingReferences < 1);
37699 // The reference is containment, then a new reference cannot be create if:
37700 // 1. Multiple parents
37701 neg find mustContains4(problem,interpretation,_,target);
37702 // 2. Circle in the containment hierarchy
37703 neg find mustTransitiveContains(source,target);
37704} or {
37705 find mustInRelationeLowerBound_reference_EGenericType(problem,interpretation,source,target);
37706}
37707/**
37708 * Matcher for detecting tuples t where []eTypeParameter reference EGenericType(source,target)
37709 */
37710private pattern mustInRelationeTypeParameter_reference_EGenericType(
37711 problem:LogicProblem, interpretation:PartialInterpretation,
37712 source: DefinedElement, target:DefinedElement)
37713{
37714 find interpretation(problem,interpretation);
37715 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
37716 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eTypeParameter reference EGenericType");
37717 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
37718 BinaryElementRelationLink.param1(link,source);
37719 BinaryElementRelationLink.param2(link,target);
37720}
37721/**
37722 * Matcher for detecting tuples t where <>eTypeParameter reference EGenericType(source,target)
37723 */
37724private pattern mayInRelationeTypeParameter_reference_EGenericType(
37725 problem:LogicProblem, interpretation:PartialInterpretation,
37726 source: DefinedElement, target:DefinedElement)
37727{
37728 find interpretation(problem,interpretation);
37729 // The two endpoint of the link have to exist
37730 find mayExist(problem, interpretation, source);
37731 find mayExist(problem, interpretation, target);
37732 // Type consistency
37733 find mayInstanceOfEGenericType_class(problem,interpretation,source);
37734 find mayInstanceOfETypeParameter_class(problem,interpretation,target);
37735 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
37736 // the upper bound of the multiplicity should be considered.
37737 numberOfExistingReferences == count find mustInRelationeTypeParameter_reference_EGenericType(problem,interpretation,source,_);
37738 check(numberOfExistingReferences < 1);
37739} or {
37740 find mustInRelationeTypeParameter_reference_EGenericType(problem,interpretation,source,target);
37741}
37742/**
37743 * Matcher for detecting tuples t where []eClassifier reference EGenericType(source,target)
37744 */
37745private pattern mustInRelationeClassifier_reference_EGenericType(
37746 problem:LogicProblem, interpretation:PartialInterpretation,
37747 source: DefinedElement, target:DefinedElement)
37748{
37749 find interpretation(problem,interpretation);
37750 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
37751 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eClassifier reference EGenericType");
37752 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
37753 BinaryElementRelationLink.param1(link,source);
37754 BinaryElementRelationLink.param2(link,target);
37755}
37756/**
37757 * Matcher for detecting tuples t where <>eClassifier reference EGenericType(source,target)
37758 */
37759private pattern mayInRelationeClassifier_reference_EGenericType(
37760 problem:LogicProblem, interpretation:PartialInterpretation,
37761 source: DefinedElement, target:DefinedElement)
37762{
37763 find interpretation(problem,interpretation);
37764 // The two endpoint of the link have to exist
37765 find mayExist(problem, interpretation, source);
37766 find mayExist(problem, interpretation, target);
37767 // Type consistency
37768 find mayInstanceOfEGenericType_class(problem,interpretation,source);
37769 find mayInstanceOfEClassifier_class(problem,interpretation,target);
37770 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
37771 // the upper bound of the multiplicity should be considered.
37772 numberOfExistingReferences == count find mustInRelationeClassifier_reference_EGenericType(problem,interpretation,source,_);
37773 check(numberOfExistingReferences < 1);
37774} or {
37775 find mustInRelationeClassifier_reference_EGenericType(problem,interpretation,source,target);
37776}
37777/**
37778 * Matcher for detecting tuples t where []eBounds reference ETypeParameter(source,target)
37779 */
37780private pattern mustInRelationeBounds_reference_ETypeParameter(
37781 problem:LogicProblem, interpretation:PartialInterpretation,
37782 source: DefinedElement, target:DefinedElement)
37783{
37784 find interpretation(problem,interpretation);
37785 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
37786 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eBounds reference ETypeParameter");
37787 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
37788 BinaryElementRelationLink.param1(link,source);
37789 BinaryElementRelationLink.param2(link,target);
37790}
37791/**
37792 * Matcher for detecting tuples t where <>eBounds reference ETypeParameter(source,target)
37793 */
37794private pattern mayInRelationeBounds_reference_ETypeParameter(
37795 problem:LogicProblem, interpretation:PartialInterpretation,
37796 source: DefinedElement, target:DefinedElement)
37797{
37798 find interpretation(problem,interpretation);
37799 // The two endpoint of the link have to exist
37800 find mayExist(problem, interpretation, source);
37801 find mayExist(problem, interpretation, target);
37802 // Type consistency
37803 find mayInstanceOfETypeParameter_class(problem,interpretation,source);
37804 find mayInstanceOfEGenericType_class(problem,interpretation,target);
37805 // The reference is containment, then a new reference cannot be create if:
37806 // 1. Multiple parents
37807 neg find mustContains4(problem,interpretation,_,target);
37808 // 2. Circle in the containment hierarchy
37809 neg find mustTransitiveContains(source,target);
37810} or {
37811 find mustInRelationeBounds_reference_ETypeParameter(problem,interpretation,source,target);
37812}
37813/**
37814 * Matcher for detecting tuples t where []iD attribute EAttribute(source,target)
37815 */
37816private pattern mustInRelationiD_attribute_EAttribute(
37817 problem:LogicProblem, interpretation:PartialInterpretation,
37818 source: DefinedElement, target:DefinedElement)
37819{
37820 find interpretation(problem,interpretation);
37821 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
37822 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"iD attribute EAttribute");
37823 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
37824 BinaryElementRelationLink.param1(link,source);
37825 BinaryElementRelationLink.param2(link,target);
37826}
37827/**
37828 * Matcher for detecting tuples t where <>iD attribute EAttribute(source,target)
37829 */
37830private pattern mayInRelationiD_attribute_EAttribute(
37831 problem:LogicProblem, interpretation:PartialInterpretation,
37832 source: DefinedElement, target:DefinedElement)
37833{
37834 find interpretation(problem,interpretation);
37835 // The two endpoint of the link have to exist
37836 find mayExist(problem, interpretation, source);
37837 find mayExist(problem, interpretation, target);
37838 // Type consistency
37839 find mayInstanceOfEAttribute_class(problem,interpretation,source);
37840 BooleanElement(target);
37841 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
37842 // the upper bound of the multiplicity should be considered.
37843 numberOfExistingReferences == count find mustInRelationiD_attribute_EAttribute(problem,interpretation,source,_);
37844 check(numberOfExistingReferences < 1);
37845} or {
37846 find mustInRelationiD_attribute_EAttribute(problem,interpretation,source,target);
37847}
37848/**
37849 * Matcher for detecting tuples t where []source attribute EAnnotation(source,target)
37850 */
37851private pattern mustInRelationsource_attribute_EAnnotation(
37852 problem:LogicProblem, interpretation:PartialInterpretation,
37853 source: DefinedElement, target:DefinedElement)
37854{
37855 find interpretation(problem,interpretation);
37856 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
37857 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"source attribute EAnnotation");
37858 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
37859 BinaryElementRelationLink.param1(link,source);
37860 BinaryElementRelationLink.param2(link,target);
37861}
37862/**
37863 * Matcher for detecting tuples t where <>source attribute EAnnotation(source,target)
37864 */
37865private pattern mayInRelationsource_attribute_EAnnotation(
37866 problem:LogicProblem, interpretation:PartialInterpretation,
37867 source: DefinedElement, target:DefinedElement)
37868{
37869 find interpretation(problem,interpretation);
37870 // The two endpoint of the link have to exist
37871 find mayExist(problem, interpretation, source);
37872 find mayExist(problem, interpretation, target);
37873 // Type consistency
37874 find mayInstanceOfEAnnotation_class(problem,interpretation,source);
37875 StringElement(target);
37876 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
37877 // the upper bound of the multiplicity should be considered.
37878 numberOfExistingReferences == count find mustInRelationsource_attribute_EAnnotation(problem,interpretation,source,_);
37879 check(numberOfExistingReferences < 1);
37880} or {
37881 find mustInRelationsource_attribute_EAnnotation(problem,interpretation,source,target);
37882}
37883/**
37884 * Matcher for detecting tuples t where []abstract attribute EClass(source,target)
37885 */
37886private pattern mustInRelationabstract_attribute_EClass(
37887 problem:LogicProblem, interpretation:PartialInterpretation,
37888 source: DefinedElement, target:DefinedElement)
37889{
37890 find interpretation(problem,interpretation);
37891 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
37892 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"abstract attribute EClass");
37893 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
37894 BinaryElementRelationLink.param1(link,source);
37895 BinaryElementRelationLink.param2(link,target);
37896}
37897/**
37898 * Matcher for detecting tuples t where <>abstract attribute EClass(source,target)
37899 */
37900private pattern mayInRelationabstract_attribute_EClass(
37901 problem:LogicProblem, interpretation:PartialInterpretation,
37902 source: DefinedElement, target:DefinedElement)
37903{
37904 find interpretation(problem,interpretation);
37905 // The two endpoint of the link have to exist
37906 find mayExist(problem, interpretation, source);
37907 find mayExist(problem, interpretation, target);
37908 // Type consistency
37909 find mayInstanceOfEClass_class(problem,interpretation,source);
37910 BooleanElement(target);
37911 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
37912 // the upper bound of the multiplicity should be considered.
37913 numberOfExistingReferences == count find mustInRelationabstract_attribute_EClass(problem,interpretation,source,_);
37914 check(numberOfExistingReferences < 1);
37915} or {
37916 find mustInRelationabstract_attribute_EClass(problem,interpretation,source,target);
37917}
37918/**
37919 * Matcher for detecting tuples t where []interface attribute EClass(source,target)
37920 */
37921private pattern mustInRelationinterface_attribute_EClass(
37922 problem:LogicProblem, interpretation:PartialInterpretation,
37923 source: DefinedElement, target:DefinedElement)
37924{
37925 find interpretation(problem,interpretation);
37926 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
37927 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface attribute EClass");
37928 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
37929 BinaryElementRelationLink.param1(link,source);
37930 BinaryElementRelationLink.param2(link,target);
37931}
37932/**
37933 * Matcher for detecting tuples t where <>interface attribute EClass(source,target)
37934 */
37935private pattern mayInRelationinterface_attribute_EClass(
37936 problem:LogicProblem, interpretation:PartialInterpretation,
37937 source: DefinedElement, target:DefinedElement)
37938{
37939 find interpretation(problem,interpretation);
37940 // The two endpoint of the link have to exist
37941 find mayExist(problem, interpretation, source);
37942 find mayExist(problem, interpretation, target);
37943 // Type consistency
37944 find mayInstanceOfEClass_class(problem,interpretation,source);
37945 BooleanElement(target);
37946 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
37947 // the upper bound of the multiplicity should be considered.
37948 numberOfExistingReferences == count find mustInRelationinterface_attribute_EClass(problem,interpretation,source,_);
37949 check(numberOfExistingReferences < 1);
37950} or {
37951 find mustInRelationinterface_attribute_EClass(problem,interpretation,source,target);
37952}
37953/**
37954 * Matcher for detecting tuples t where []instanceClassName attribute EClassifier(source,target)
37955 */
37956private pattern mustInRelationinstanceClassName_attribute_EClassifier(
37957 problem:LogicProblem, interpretation:PartialInterpretation,
37958 source: DefinedElement, target:DefinedElement)
37959{
37960 find interpretation(problem,interpretation);
37961 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
37962 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"instanceClassName attribute EClassifier");
37963 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
37964 BinaryElementRelationLink.param1(link,source);
37965 BinaryElementRelationLink.param2(link,target);
37966}
37967/**
37968 * Matcher for detecting tuples t where <>instanceClassName attribute EClassifier(source,target)
37969 */
37970private pattern mayInRelationinstanceClassName_attribute_EClassifier(
37971 problem:LogicProblem, interpretation:PartialInterpretation,
37972 source: DefinedElement, target:DefinedElement)
37973{
37974 find interpretation(problem,interpretation);
37975 // The two endpoint of the link have to exist
37976 find mayExist(problem, interpretation, source);
37977 find mayExist(problem, interpretation, target);
37978 // Type consistency
37979 find mayInstanceOfEClassifier_class(problem,interpretation,source);
37980 StringElement(target);
37981 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
37982 // the upper bound of the multiplicity should be considered.
37983 numberOfExistingReferences == count find mustInRelationinstanceClassName_attribute_EClassifier(problem,interpretation,source,_);
37984 check(numberOfExistingReferences < 1);
37985} or {
37986 find mustInRelationinstanceClassName_attribute_EClassifier(problem,interpretation,source,target);
37987}
37988/**
37989 * Matcher for detecting tuples t where []instanceTypeName attribute EClassifier(source,target)
37990 */
37991private pattern mustInRelationinstanceTypeName_attribute_EClassifier(
37992 problem:LogicProblem, interpretation:PartialInterpretation,
37993 source: DefinedElement, target:DefinedElement)
37994{
37995 find interpretation(problem,interpretation);
37996 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
37997 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"instanceTypeName attribute EClassifier");
37998 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
37999 BinaryElementRelationLink.param1(link,source);
38000 BinaryElementRelationLink.param2(link,target);
38001}
38002/**
38003 * Matcher for detecting tuples t where <>instanceTypeName attribute EClassifier(source,target)
38004 */
38005private pattern mayInRelationinstanceTypeName_attribute_EClassifier(
38006 problem:LogicProblem, interpretation:PartialInterpretation,
38007 source: DefinedElement, target:DefinedElement)
38008{
38009 find interpretation(problem,interpretation);
38010 // The two endpoint of the link have to exist
38011 find mayExist(problem, interpretation, source);
38012 find mayExist(problem, interpretation, target);
38013 // Type consistency
38014 find mayInstanceOfEClassifier_class(problem,interpretation,source);
38015 StringElement(target);
38016 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
38017 // the upper bound of the multiplicity should be considered.
38018 numberOfExistingReferences == count find mustInRelationinstanceTypeName_attribute_EClassifier(problem,interpretation,source,_);
38019 check(numberOfExistingReferences < 1);
38020} or {
38021 find mustInRelationinstanceTypeName_attribute_EClassifier(problem,interpretation,source,target);
38022}
38023/**
38024 * Matcher for detecting tuples t where []serializable attribute EDataType(source,target)
38025 */
38026private pattern mustInRelationserializable_attribute_EDataType(
38027 problem:LogicProblem, interpretation:PartialInterpretation,
38028 source: DefinedElement, target:DefinedElement)
38029{
38030 find interpretation(problem,interpretation);
38031 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
38032 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"serializable attribute EDataType");
38033 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
38034 BinaryElementRelationLink.param1(link,source);
38035 BinaryElementRelationLink.param2(link,target);
38036}
38037/**
38038 * Matcher for detecting tuples t where <>serializable attribute EDataType(source,target)
38039 */
38040private pattern mayInRelationserializable_attribute_EDataType(
38041 problem:LogicProblem, interpretation:PartialInterpretation,
38042 source: DefinedElement, target:DefinedElement)
38043{
38044 find interpretation(problem,interpretation);
38045 // The two endpoint of the link have to exist
38046 find mayExist(problem, interpretation, source);
38047 find mayExist(problem, interpretation, target);
38048 // Type consistency
38049 find mayInstanceOfEDataType_class(problem,interpretation,source);
38050 BooleanElement(target);
38051 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
38052 // the upper bound of the multiplicity should be considered.
38053 numberOfExistingReferences == count find mustInRelationserializable_attribute_EDataType(problem,interpretation,source,_);
38054 check(numberOfExistingReferences < 1);
38055} or {
38056 find mustInRelationserializable_attribute_EDataType(problem,interpretation,source,target);
38057}
38058/**
38059 * Matcher for detecting tuples t where []value attribute EEnumLiteral(source,target)
38060 */
38061private pattern mustInRelationvalue_attribute_EEnumLiteral(
38062 problem:LogicProblem, interpretation:PartialInterpretation,
38063 source: DefinedElement, target:DefinedElement)
38064{
38065 find interpretation(problem,interpretation);
38066 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
38067 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"value attribute EEnumLiteral");
38068 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
38069 BinaryElementRelationLink.param1(link,source);
38070 BinaryElementRelationLink.param2(link,target);
38071}
38072/**
38073 * Matcher for detecting tuples t where <>value attribute EEnumLiteral(source,target)
38074 */
38075private pattern mayInRelationvalue_attribute_EEnumLiteral(
38076 problem:LogicProblem, interpretation:PartialInterpretation,
38077 source: DefinedElement, target:DefinedElement)
38078{
38079 find interpretation(problem,interpretation);
38080 // The two endpoint of the link have to exist
38081 find mayExist(problem, interpretation, source);
38082 find mayExist(problem, interpretation, target);
38083 // Type consistency
38084 find mayInstanceOfEEnumLiteral_class(problem,interpretation,source);
38085 IntegerElement(target);
38086 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
38087 // the upper bound of the multiplicity should be considered.
38088 numberOfExistingReferences == count find mustInRelationvalue_attribute_EEnumLiteral(problem,interpretation,source,_);
38089 check(numberOfExistingReferences < 1);
38090} or {
38091 find mustInRelationvalue_attribute_EEnumLiteral(problem,interpretation,source,target);
38092}
38093/**
38094 * Matcher for detecting tuples t where []literal attribute EEnumLiteral(source,target)
38095 */
38096private pattern mustInRelationliteral_attribute_EEnumLiteral(
38097 problem:LogicProblem, interpretation:PartialInterpretation,
38098 source: DefinedElement, target:DefinedElement)
38099{
38100 find interpretation(problem,interpretation);
38101 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
38102 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"literal attribute EEnumLiteral");
38103 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
38104 BinaryElementRelationLink.param1(link,source);
38105 BinaryElementRelationLink.param2(link,target);
38106}
38107/**
38108 * Matcher for detecting tuples t where <>literal attribute EEnumLiteral(source,target)
38109 */
38110private pattern mayInRelationliteral_attribute_EEnumLiteral(
38111 problem:LogicProblem, interpretation:PartialInterpretation,
38112 source: DefinedElement, target:DefinedElement)
38113{
38114 find interpretation(problem,interpretation);
38115 // The two endpoint of the link have to exist
38116 find mayExist(problem, interpretation, source);
38117 find mayExist(problem, interpretation, target);
38118 // Type consistency
38119 find mayInstanceOfEEnumLiteral_class(problem,interpretation,source);
38120 StringElement(target);
38121 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
38122 // the upper bound of the multiplicity should be considered.
38123 numberOfExistingReferences == count find mustInRelationliteral_attribute_EEnumLiteral(problem,interpretation,source,_);
38124 check(numberOfExistingReferences < 1);
38125} or {
38126 find mustInRelationliteral_attribute_EEnumLiteral(problem,interpretation,source,target);
38127}
38128/**
38129 * Matcher for detecting tuples t where []name attribute ENamedElement(source,target)
38130 */
38131private pattern mustInRelationname_attribute_ENamedElement(
38132 problem:LogicProblem, interpretation:PartialInterpretation,
38133 source: DefinedElement, target:DefinedElement)
38134{
38135 find interpretation(problem,interpretation);
38136 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
38137 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"name attribute ENamedElement");
38138 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
38139 BinaryElementRelationLink.param1(link,source);
38140 BinaryElementRelationLink.param2(link,target);
38141}
38142/**
38143 * Matcher for detecting tuples t where <>name attribute ENamedElement(source,target)
38144 */
38145private pattern mayInRelationname_attribute_ENamedElement(
38146 problem:LogicProblem, interpretation:PartialInterpretation,
38147 source: DefinedElement, target:DefinedElement)
38148{
38149 find interpretation(problem,interpretation);
38150 // The two endpoint of the link have to exist
38151 find mayExist(problem, interpretation, source);
38152 find mayExist(problem, interpretation, target);
38153 // Type consistency
38154 find mayInstanceOfENamedElement_class(problem,interpretation,source);
38155 StringElement(target);
38156 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
38157 // the upper bound of the multiplicity should be considered.
38158 numberOfExistingReferences == count find mustInRelationname_attribute_ENamedElement(problem,interpretation,source,_);
38159 check(numberOfExistingReferences < 1);
38160} or {
38161 find mustInRelationname_attribute_ENamedElement(problem,interpretation,source,target);
38162}
38163/**
38164 * Matcher for detecting tuples t where []nsURI attribute EPackage(source,target)
38165 */
38166private pattern mustInRelationnsURI_attribute_EPackage(
38167 problem:LogicProblem, interpretation:PartialInterpretation,
38168 source: DefinedElement, target:DefinedElement)
38169{
38170 find interpretation(problem,interpretation);
38171 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
38172 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"nsURI attribute EPackage");
38173 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
38174 BinaryElementRelationLink.param1(link,source);
38175 BinaryElementRelationLink.param2(link,target);
38176}
38177/**
38178 * Matcher for detecting tuples t where <>nsURI attribute EPackage(source,target)
38179 */
38180private pattern mayInRelationnsURI_attribute_EPackage(
38181 problem:LogicProblem, interpretation:PartialInterpretation,
38182 source: DefinedElement, target:DefinedElement)
38183{
38184 find interpretation(problem,interpretation);
38185 // The two endpoint of the link have to exist
38186 find mayExist(problem, interpretation, source);
38187 find mayExist(problem, interpretation, target);
38188 // Type consistency
38189 find mayInstanceOfEPackage_class(problem,interpretation,source);
38190 StringElement(target);
38191 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
38192 // the upper bound of the multiplicity should be considered.
38193 numberOfExistingReferences == count find mustInRelationnsURI_attribute_EPackage(problem,interpretation,source,_);
38194 check(numberOfExistingReferences < 1);
38195} or {
38196 find mustInRelationnsURI_attribute_EPackage(problem,interpretation,source,target);
38197}
38198/**
38199 * Matcher for detecting tuples t where []nsPrefix attribute EPackage(source,target)
38200 */
38201private pattern mustInRelationnsPrefix_attribute_EPackage(
38202 problem:LogicProblem, interpretation:PartialInterpretation,
38203 source: DefinedElement, target:DefinedElement)
38204{
38205 find interpretation(problem,interpretation);
38206 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
38207 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"nsPrefix attribute EPackage");
38208 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
38209 BinaryElementRelationLink.param1(link,source);
38210 BinaryElementRelationLink.param2(link,target);
38211}
38212/**
38213 * Matcher for detecting tuples t where <>nsPrefix attribute EPackage(source,target)
38214 */
38215private pattern mayInRelationnsPrefix_attribute_EPackage(
38216 problem:LogicProblem, interpretation:PartialInterpretation,
38217 source: DefinedElement, target:DefinedElement)
38218{
38219 find interpretation(problem,interpretation);
38220 // The two endpoint of the link have to exist
38221 find mayExist(problem, interpretation, source);
38222 find mayExist(problem, interpretation, target);
38223 // Type consistency
38224 find mayInstanceOfEPackage_class(problem,interpretation,source);
38225 StringElement(target);
38226 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
38227 // the upper bound of the multiplicity should be considered.
38228 numberOfExistingReferences == count find mustInRelationnsPrefix_attribute_EPackage(problem,interpretation,source,_);
38229 check(numberOfExistingReferences < 1);
38230} or {
38231 find mustInRelationnsPrefix_attribute_EPackage(problem,interpretation,source,target);
38232}
38233/**
38234 * Matcher for detecting tuples t where []containment attribute EReference(source,target)
38235 */
38236private pattern mustInRelationcontainment_attribute_EReference(
38237 problem:LogicProblem, interpretation:PartialInterpretation,
38238 source: DefinedElement, target:DefinedElement)
38239{
38240 find interpretation(problem,interpretation);
38241 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
38242 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"containment attribute EReference");
38243 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
38244 BinaryElementRelationLink.param1(link,source);
38245 BinaryElementRelationLink.param2(link,target);
38246}
38247/**
38248 * Matcher for detecting tuples t where <>containment attribute EReference(source,target)
38249 */
38250private pattern mayInRelationcontainment_attribute_EReference(
38251 problem:LogicProblem, interpretation:PartialInterpretation,
38252 source: DefinedElement, target:DefinedElement)
38253{
38254 find interpretation(problem,interpretation);
38255 // The two endpoint of the link have to exist
38256 find mayExist(problem, interpretation, source);
38257 find mayExist(problem, interpretation, target);
38258 // Type consistency
38259 find mayInstanceOfEReference_class(problem,interpretation,source);
38260 BooleanElement(target);
38261 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
38262 // the upper bound of the multiplicity should be considered.
38263 numberOfExistingReferences == count find mustInRelationcontainment_attribute_EReference(problem,interpretation,source,_);
38264 check(numberOfExistingReferences < 1);
38265} or {
38266 find mustInRelationcontainment_attribute_EReference(problem,interpretation,source,target);
38267}
38268/**
38269 * Matcher for detecting tuples t where []container attribute EReference(source,target)
38270 */
38271private pattern mustInRelationcontainer_attribute_EReference(
38272 problem:LogicProblem, interpretation:PartialInterpretation,
38273 source: DefinedElement, target:DefinedElement)
38274{
38275 find interpretation(problem,interpretation);
38276 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
38277 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"container attribute EReference");
38278 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
38279 BinaryElementRelationLink.param1(link,source);
38280 BinaryElementRelationLink.param2(link,target);
38281}
38282/**
38283 * Matcher for detecting tuples t where <>container attribute EReference(source,target)
38284 */
38285private pattern mayInRelationcontainer_attribute_EReference(
38286 problem:LogicProblem, interpretation:PartialInterpretation,
38287 source: DefinedElement, target:DefinedElement)
38288{
38289 find interpretation(problem,interpretation);
38290 // The two endpoint of the link have to exist
38291 find mayExist(problem, interpretation, source);
38292 find mayExist(problem, interpretation, target);
38293 // Type consistency
38294 find mayInstanceOfEReference_class(problem,interpretation,source);
38295 BooleanElement(target);
38296 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
38297 // the upper bound of the multiplicity should be considered.
38298 numberOfExistingReferences == count find mustInRelationcontainer_attribute_EReference(problem,interpretation,source,_);
38299 check(numberOfExistingReferences < 1);
38300} or {
38301 find mustInRelationcontainer_attribute_EReference(problem,interpretation,source,target);
38302}
38303/**
38304 * Matcher for detecting tuples t where []resolveProxies attribute EReference(source,target)
38305 */
38306private pattern mustInRelationresolveProxies_attribute_EReference(
38307 problem:LogicProblem, interpretation:PartialInterpretation,
38308 source: DefinedElement, target:DefinedElement)
38309{
38310 find interpretation(problem,interpretation);
38311 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
38312 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"resolveProxies attribute EReference");
38313 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
38314 BinaryElementRelationLink.param1(link,source);
38315 BinaryElementRelationLink.param2(link,target);
38316}
38317/**
38318 * Matcher for detecting tuples t where <>resolveProxies attribute EReference(source,target)
38319 */
38320private pattern mayInRelationresolveProxies_attribute_EReference(
38321 problem:LogicProblem, interpretation:PartialInterpretation,
38322 source: DefinedElement, target:DefinedElement)
38323{
38324 find interpretation(problem,interpretation);
38325 // The two endpoint of the link have to exist
38326 find mayExist(problem, interpretation, source);
38327 find mayExist(problem, interpretation, target);
38328 // Type consistency
38329 find mayInstanceOfEReference_class(problem,interpretation,source);
38330 BooleanElement(target);
38331 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
38332 // the upper bound of the multiplicity should be considered.
38333 numberOfExistingReferences == count find mustInRelationresolveProxies_attribute_EReference(problem,interpretation,source,_);
38334 check(numberOfExistingReferences < 1);
38335} or {
38336 find mustInRelationresolveProxies_attribute_EReference(problem,interpretation,source,target);
38337}
38338/**
38339 * Matcher for detecting tuples t where []changeable attribute EStructuralFeature(source,target)
38340 */
38341private pattern mustInRelationchangeable_attribute_EStructuralFeature(
38342 problem:LogicProblem, interpretation:PartialInterpretation,
38343 source: DefinedElement, target:DefinedElement)
38344{
38345 find interpretation(problem,interpretation);
38346 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
38347 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"changeable attribute EStructuralFeature");
38348 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
38349 BinaryElementRelationLink.param1(link,source);
38350 BinaryElementRelationLink.param2(link,target);
38351}
38352/**
38353 * Matcher for detecting tuples t where <>changeable attribute EStructuralFeature(source,target)
38354 */
38355private pattern mayInRelationchangeable_attribute_EStructuralFeature(
38356 problem:LogicProblem, interpretation:PartialInterpretation,
38357 source: DefinedElement, target:DefinedElement)
38358{
38359 find interpretation(problem,interpretation);
38360 // The two endpoint of the link have to exist
38361 find mayExist(problem, interpretation, source);
38362 find mayExist(problem, interpretation, target);
38363 // Type consistency
38364 find mayInstanceOfEStructuralFeature_class(problem,interpretation,source);
38365 BooleanElement(target);
38366 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
38367 // the upper bound of the multiplicity should be considered.
38368 numberOfExistingReferences == count find mustInRelationchangeable_attribute_EStructuralFeature(problem,interpretation,source,_);
38369 check(numberOfExistingReferences < 1);
38370} or {
38371 find mustInRelationchangeable_attribute_EStructuralFeature(problem,interpretation,source,target);
38372}
38373/**
38374 * Matcher for detecting tuples t where []volatile attribute EStructuralFeature(source,target)
38375 */
38376private pattern mustInRelationvolatile_attribute_EStructuralFeature(
38377 problem:LogicProblem, interpretation:PartialInterpretation,
38378 source: DefinedElement, target:DefinedElement)
38379{
38380 find interpretation(problem,interpretation);
38381 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
38382 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"volatile attribute EStructuralFeature");
38383 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
38384 BinaryElementRelationLink.param1(link,source);
38385 BinaryElementRelationLink.param2(link,target);
38386}
38387/**
38388 * Matcher for detecting tuples t where <>volatile attribute EStructuralFeature(source,target)
38389 */
38390private pattern mayInRelationvolatile_attribute_EStructuralFeature(
38391 problem:LogicProblem, interpretation:PartialInterpretation,
38392 source: DefinedElement, target:DefinedElement)
38393{
38394 find interpretation(problem,interpretation);
38395 // The two endpoint of the link have to exist
38396 find mayExist(problem, interpretation, source);
38397 find mayExist(problem, interpretation, target);
38398 // Type consistency
38399 find mayInstanceOfEStructuralFeature_class(problem,interpretation,source);
38400 BooleanElement(target);
38401 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
38402 // the upper bound of the multiplicity should be considered.
38403 numberOfExistingReferences == count find mustInRelationvolatile_attribute_EStructuralFeature(problem,interpretation,source,_);
38404 check(numberOfExistingReferences < 1);
38405} or {
38406 find mustInRelationvolatile_attribute_EStructuralFeature(problem,interpretation,source,target);
38407}
38408/**
38409 * Matcher for detecting tuples t where []transient attribute EStructuralFeature(source,target)
38410 */
38411private pattern mustInRelationtransient_attribute_EStructuralFeature(
38412 problem:LogicProblem, interpretation:PartialInterpretation,
38413 source: DefinedElement, target:DefinedElement)
38414{
38415 find interpretation(problem,interpretation);
38416 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
38417 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"transient attribute EStructuralFeature");
38418 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
38419 BinaryElementRelationLink.param1(link,source);
38420 BinaryElementRelationLink.param2(link,target);
38421}
38422/**
38423 * Matcher for detecting tuples t where <>transient attribute EStructuralFeature(source,target)
38424 */
38425private pattern mayInRelationtransient_attribute_EStructuralFeature(
38426 problem:LogicProblem, interpretation:PartialInterpretation,
38427 source: DefinedElement, target:DefinedElement)
38428{
38429 find interpretation(problem,interpretation);
38430 // The two endpoint of the link have to exist
38431 find mayExist(problem, interpretation, source);
38432 find mayExist(problem, interpretation, target);
38433 // Type consistency
38434 find mayInstanceOfEStructuralFeature_class(problem,interpretation,source);
38435 BooleanElement(target);
38436 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
38437 // the upper bound of the multiplicity should be considered.
38438 numberOfExistingReferences == count find mustInRelationtransient_attribute_EStructuralFeature(problem,interpretation,source,_);
38439 check(numberOfExistingReferences < 1);
38440} or {
38441 find mustInRelationtransient_attribute_EStructuralFeature(problem,interpretation,source,target);
38442}
38443/**
38444 * Matcher for detecting tuples t where []defaultValueLiteral attribute EStructuralFeature(source,target)
38445 */
38446private pattern mustInRelationdefaultValueLiteral_attribute_EStructuralFeature(
38447 problem:LogicProblem, interpretation:PartialInterpretation,
38448 source: DefinedElement, target:DefinedElement)
38449{
38450 find interpretation(problem,interpretation);
38451 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
38452 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"defaultValueLiteral attribute EStructuralFeature");
38453 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
38454 BinaryElementRelationLink.param1(link,source);
38455 BinaryElementRelationLink.param2(link,target);
38456}
38457/**
38458 * Matcher for detecting tuples t where <>defaultValueLiteral attribute EStructuralFeature(source,target)
38459 */
38460private pattern mayInRelationdefaultValueLiteral_attribute_EStructuralFeature(
38461 problem:LogicProblem, interpretation:PartialInterpretation,
38462 source: DefinedElement, target:DefinedElement)
38463{
38464 find interpretation(problem,interpretation);
38465 // The two endpoint of the link have to exist
38466 find mayExist(problem, interpretation, source);
38467 find mayExist(problem, interpretation, target);
38468 // Type consistency
38469 find mayInstanceOfEStructuralFeature_class(problem,interpretation,source);
38470 StringElement(target);
38471 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
38472 // the upper bound of the multiplicity should be considered.
38473 numberOfExistingReferences == count find mustInRelationdefaultValueLiteral_attribute_EStructuralFeature(problem,interpretation,source,_);
38474 check(numberOfExistingReferences < 1);
38475} or {
38476 find mustInRelationdefaultValueLiteral_attribute_EStructuralFeature(problem,interpretation,source,target);
38477}
38478/**
38479 * Matcher for detecting tuples t where []unsettable attribute EStructuralFeature(source,target)
38480 */
38481private pattern mustInRelationunsettable_attribute_EStructuralFeature(
38482 problem:LogicProblem, interpretation:PartialInterpretation,
38483 source: DefinedElement, target:DefinedElement)
38484{
38485 find interpretation(problem,interpretation);
38486 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
38487 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"unsettable attribute EStructuralFeature");
38488 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
38489 BinaryElementRelationLink.param1(link,source);
38490 BinaryElementRelationLink.param2(link,target);
38491}
38492/**
38493 * Matcher for detecting tuples t where <>unsettable attribute EStructuralFeature(source,target)
38494 */
38495private pattern mayInRelationunsettable_attribute_EStructuralFeature(
38496 problem:LogicProblem, interpretation:PartialInterpretation,
38497 source: DefinedElement, target:DefinedElement)
38498{
38499 find interpretation(problem,interpretation);
38500 // The two endpoint of the link have to exist
38501 find mayExist(problem, interpretation, source);
38502 find mayExist(problem, interpretation, target);
38503 // Type consistency
38504 find mayInstanceOfEStructuralFeature_class(problem,interpretation,source);
38505 BooleanElement(target);
38506 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
38507 // the upper bound of the multiplicity should be considered.
38508 numberOfExistingReferences == count find mustInRelationunsettable_attribute_EStructuralFeature(problem,interpretation,source,_);
38509 check(numberOfExistingReferences < 1);
38510} or {
38511 find mustInRelationunsettable_attribute_EStructuralFeature(problem,interpretation,source,target);
38512}
38513/**
38514 * Matcher for detecting tuples t where []derived attribute EStructuralFeature(source,target)
38515 */
38516private pattern mustInRelationderived_attribute_EStructuralFeature(
38517 problem:LogicProblem, interpretation:PartialInterpretation,
38518 source: DefinedElement, target:DefinedElement)
38519{
38520 find interpretation(problem,interpretation);
38521 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
38522 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"derived attribute EStructuralFeature");
38523 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
38524 BinaryElementRelationLink.param1(link,source);
38525 BinaryElementRelationLink.param2(link,target);
38526}
38527/**
38528 * Matcher for detecting tuples t where <>derived attribute EStructuralFeature(source,target)
38529 */
38530private pattern mayInRelationderived_attribute_EStructuralFeature(
38531 problem:LogicProblem, interpretation:PartialInterpretation,
38532 source: DefinedElement, target:DefinedElement)
38533{
38534 find interpretation(problem,interpretation);
38535 // The two endpoint of the link have to exist
38536 find mayExist(problem, interpretation, source);
38537 find mayExist(problem, interpretation, target);
38538 // Type consistency
38539 find mayInstanceOfEStructuralFeature_class(problem,interpretation,source);
38540 BooleanElement(target);
38541 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
38542 // the upper bound of the multiplicity should be considered.
38543 numberOfExistingReferences == count find mustInRelationderived_attribute_EStructuralFeature(problem,interpretation,source,_);
38544 check(numberOfExistingReferences < 1);
38545} or {
38546 find mustInRelationderived_attribute_EStructuralFeature(problem,interpretation,source,target);
38547}
38548/**
38549 * Matcher for detecting tuples t where []ordered attribute ETypedElement(source,target)
38550 */
38551private pattern mustInRelationordered_attribute_ETypedElement(
38552 problem:LogicProblem, interpretation:PartialInterpretation,
38553 source: DefinedElement, target:DefinedElement)
38554{
38555 find interpretation(problem,interpretation);
38556 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
38557 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"ordered attribute ETypedElement");
38558 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
38559 BinaryElementRelationLink.param1(link,source);
38560 BinaryElementRelationLink.param2(link,target);
38561}
38562/**
38563 * Matcher for detecting tuples t where <>ordered attribute ETypedElement(source,target)
38564 */
38565private pattern mayInRelationordered_attribute_ETypedElement(
38566 problem:LogicProblem, interpretation:PartialInterpretation,
38567 source: DefinedElement, target:DefinedElement)
38568{
38569 find interpretation(problem,interpretation);
38570 // The two endpoint of the link have to exist
38571 find mayExist(problem, interpretation, source);
38572 find mayExist(problem, interpretation, target);
38573 // Type consistency
38574 find mayInstanceOfETypedElement_class(problem,interpretation,source);
38575 BooleanElement(target);
38576 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
38577 // the upper bound of the multiplicity should be considered.
38578 numberOfExistingReferences == count find mustInRelationordered_attribute_ETypedElement(problem,interpretation,source,_);
38579 check(numberOfExistingReferences < 1);
38580} or {
38581 find mustInRelationordered_attribute_ETypedElement(problem,interpretation,source,target);
38582}
38583/**
38584 * Matcher for detecting tuples t where []unique attribute ETypedElement(source,target)
38585 */
38586private pattern mustInRelationunique_attribute_ETypedElement(
38587 problem:LogicProblem, interpretation:PartialInterpretation,
38588 source: DefinedElement, target:DefinedElement)
38589{
38590 find interpretation(problem,interpretation);
38591 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
38592 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"unique attribute ETypedElement");
38593 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
38594 BinaryElementRelationLink.param1(link,source);
38595 BinaryElementRelationLink.param2(link,target);
38596}
38597/**
38598 * Matcher for detecting tuples t where <>unique attribute ETypedElement(source,target)
38599 */
38600private pattern mayInRelationunique_attribute_ETypedElement(
38601 problem:LogicProblem, interpretation:PartialInterpretation,
38602 source: DefinedElement, target:DefinedElement)
38603{
38604 find interpretation(problem,interpretation);
38605 // The two endpoint of the link have to exist
38606 find mayExist(problem, interpretation, source);
38607 find mayExist(problem, interpretation, target);
38608 // Type consistency
38609 find mayInstanceOfETypedElement_class(problem,interpretation,source);
38610 BooleanElement(target);
38611 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
38612 // the upper bound of the multiplicity should be considered.
38613 numberOfExistingReferences == count find mustInRelationunique_attribute_ETypedElement(problem,interpretation,source,_);
38614 check(numberOfExistingReferences < 1);
38615} or {
38616 find mustInRelationunique_attribute_ETypedElement(problem,interpretation,source,target);
38617}
38618/**
38619 * Matcher for detecting tuples t where []lowerBound attribute ETypedElement(source,target)
38620 */
38621private pattern mustInRelationlowerBound_attribute_ETypedElement(
38622 problem:LogicProblem, interpretation:PartialInterpretation,
38623 source: DefinedElement, target:DefinedElement)
38624{
38625 find interpretation(problem,interpretation);
38626 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
38627 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"lowerBound attribute ETypedElement");
38628 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
38629 BinaryElementRelationLink.param1(link,source);
38630 BinaryElementRelationLink.param2(link,target);
38631}
38632/**
38633 * Matcher for detecting tuples t where <>lowerBound attribute ETypedElement(source,target)
38634 */
38635private pattern mayInRelationlowerBound_attribute_ETypedElement(
38636 problem:LogicProblem, interpretation:PartialInterpretation,
38637 source: DefinedElement, target:DefinedElement)
38638{
38639 find interpretation(problem,interpretation);
38640 // The two endpoint of the link have to exist
38641 find mayExist(problem, interpretation, source);
38642 find mayExist(problem, interpretation, target);
38643 // Type consistency
38644 find mayInstanceOfETypedElement_class(problem,interpretation,source);
38645 IntegerElement(target);
38646 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
38647 // the upper bound of the multiplicity should be considered.
38648 numberOfExistingReferences == count find mustInRelationlowerBound_attribute_ETypedElement(problem,interpretation,source,_);
38649 check(numberOfExistingReferences < 1);
38650} or {
38651 find mustInRelationlowerBound_attribute_ETypedElement(problem,interpretation,source,target);
38652}
38653/**
38654 * Matcher for detecting tuples t where []upperBound attribute ETypedElement(source,target)
38655 */
38656private pattern mustInRelationupperBound_attribute_ETypedElement(
38657 problem:LogicProblem, interpretation:PartialInterpretation,
38658 source: DefinedElement, target:DefinedElement)
38659{
38660 find interpretation(problem,interpretation);
38661 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
38662 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"upperBound attribute ETypedElement");
38663 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
38664 BinaryElementRelationLink.param1(link,source);
38665 BinaryElementRelationLink.param2(link,target);
38666}
38667/**
38668 * Matcher for detecting tuples t where <>upperBound attribute ETypedElement(source,target)
38669 */
38670private pattern mayInRelationupperBound_attribute_ETypedElement(
38671 problem:LogicProblem, interpretation:PartialInterpretation,
38672 source: DefinedElement, target:DefinedElement)
38673{
38674 find interpretation(problem,interpretation);
38675 // The two endpoint of the link have to exist
38676 find mayExist(problem, interpretation, source);
38677 find mayExist(problem, interpretation, target);
38678 // Type consistency
38679 find mayInstanceOfETypedElement_class(problem,interpretation,source);
38680 IntegerElement(target);
38681 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
38682 // the upper bound of the multiplicity should be considered.
38683 numberOfExistingReferences == count find mustInRelationupperBound_attribute_ETypedElement(problem,interpretation,source,_);
38684 check(numberOfExistingReferences < 1);
38685} or {
38686 find mustInRelationupperBound_attribute_ETypedElement(problem,interpretation,source,target);
38687}
38688/**
38689 * Matcher for detecting tuples t where []many attribute ETypedElement(source,target)
38690 */
38691private pattern mustInRelationmany_attribute_ETypedElement(
38692 problem:LogicProblem, interpretation:PartialInterpretation,
38693 source: DefinedElement, target:DefinedElement)
38694{
38695 find interpretation(problem,interpretation);
38696 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
38697 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"many attribute ETypedElement");
38698 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
38699 BinaryElementRelationLink.param1(link,source);
38700 BinaryElementRelationLink.param2(link,target);
38701}
38702/**
38703 * Matcher for detecting tuples t where <>many attribute ETypedElement(source,target)
38704 */
38705private pattern mayInRelationmany_attribute_ETypedElement(
38706 problem:LogicProblem, interpretation:PartialInterpretation,
38707 source: DefinedElement, target:DefinedElement)
38708{
38709 find interpretation(problem,interpretation);
38710 // The two endpoint of the link have to exist
38711 find mayExist(problem, interpretation, source);
38712 find mayExist(problem, interpretation, target);
38713 // Type consistency
38714 find mayInstanceOfETypedElement_class(problem,interpretation,source);
38715 BooleanElement(target);
38716 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
38717 // the upper bound of the multiplicity should be considered.
38718 numberOfExistingReferences == count find mustInRelationmany_attribute_ETypedElement(problem,interpretation,source,_);
38719 check(numberOfExistingReferences < 1);
38720} or {
38721 find mustInRelationmany_attribute_ETypedElement(problem,interpretation,source,target);
38722}
38723/**
38724 * Matcher for detecting tuples t where []required attribute ETypedElement(source,target)
38725 */
38726private pattern mustInRelationrequired_attribute_ETypedElement(
38727 problem:LogicProblem, interpretation:PartialInterpretation,
38728 source: DefinedElement, target:DefinedElement)
38729{
38730 find interpretation(problem,interpretation);
38731 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
38732 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"required attribute ETypedElement");
38733 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
38734 BinaryElementRelationLink.param1(link,source);
38735 BinaryElementRelationLink.param2(link,target);
38736}
38737/**
38738 * Matcher for detecting tuples t where <>required attribute ETypedElement(source,target)
38739 */
38740private pattern mayInRelationrequired_attribute_ETypedElement(
38741 problem:LogicProblem, interpretation:PartialInterpretation,
38742 source: DefinedElement, target:DefinedElement)
38743{
38744 find interpretation(problem,interpretation);
38745 // The two endpoint of the link have to exist
38746 find mayExist(problem, interpretation, source);
38747 find mayExist(problem, interpretation, target);
38748 // Type consistency
38749 find mayInstanceOfETypedElement_class(problem,interpretation,source);
38750 BooleanElement(target);
38751 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
38752 // the upper bound of the multiplicity should be considered.
38753 numberOfExistingReferences == count find mustInRelationrequired_attribute_ETypedElement(problem,interpretation,source,_);
38754 check(numberOfExistingReferences < 1);
38755} or {
38756 find mustInRelationrequired_attribute_ETypedElement(problem,interpretation,source,target);
38757}
38758/**
38759 * Matcher for detecting tuples t where []key attribute EStringToStringMapEntry(source,target)
38760 */
38761private pattern mustInRelationkey_attribute_EStringToStringMapEntry(
38762 problem:LogicProblem, interpretation:PartialInterpretation,
38763 source: DefinedElement, target:DefinedElement)
38764{
38765 find interpretation(problem,interpretation);
38766 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
38767 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"key attribute EStringToStringMapEntry");
38768 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
38769 BinaryElementRelationLink.param1(link,source);
38770 BinaryElementRelationLink.param2(link,target);
38771}
38772/**
38773 * Matcher for detecting tuples t where <>key attribute EStringToStringMapEntry(source,target)
38774 */
38775private pattern mayInRelationkey_attribute_EStringToStringMapEntry(
38776 problem:LogicProblem, interpretation:PartialInterpretation,
38777 source: DefinedElement, target:DefinedElement)
38778{
38779 find interpretation(problem,interpretation);
38780 // The two endpoint of the link have to exist
38781 find mayExist(problem, interpretation, source);
38782 find mayExist(problem, interpretation, target);
38783 // Type consistency
38784 find mayInstanceOfEStringToStringMapEntry_class(problem,interpretation,source);
38785 StringElement(target);
38786 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
38787 // the upper bound of the multiplicity should be considered.
38788 numberOfExistingReferences == count find mustInRelationkey_attribute_EStringToStringMapEntry(problem,interpretation,source,_);
38789 check(numberOfExistingReferences < 1);
38790} or {
38791 find mustInRelationkey_attribute_EStringToStringMapEntry(problem,interpretation,source,target);
38792}
38793/**
38794 * Matcher for detecting tuples t where []value attribute EStringToStringMapEntry(source,target)
38795 */
38796private pattern mustInRelationvalue_attribute_EStringToStringMapEntry(
38797 problem:LogicProblem, interpretation:PartialInterpretation,
38798 source: DefinedElement, target:DefinedElement)
38799{
38800 find interpretation(problem,interpretation);
38801 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
38802 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"value attribute EStringToStringMapEntry");
38803 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
38804 BinaryElementRelationLink.param1(link,source);
38805 BinaryElementRelationLink.param2(link,target);
38806}
38807/**
38808 * Matcher for detecting tuples t where <>value attribute EStringToStringMapEntry(source,target)
38809 */
38810private pattern mayInRelationvalue_attribute_EStringToStringMapEntry(
38811 problem:LogicProblem, interpretation:PartialInterpretation,
38812 source: DefinedElement, target:DefinedElement)
38813{
38814 find interpretation(problem,interpretation);
38815 // The two endpoint of the link have to exist
38816 find mayExist(problem, interpretation, source);
38817 find mayExist(problem, interpretation, target);
38818 // Type consistency
38819 find mayInstanceOfEStringToStringMapEntry_class(problem,interpretation,source);
38820 StringElement(target);
38821 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
38822 // the upper bound of the multiplicity should be considered.
38823 numberOfExistingReferences == count find mustInRelationvalue_attribute_EStringToStringMapEntry(problem,interpretation,source,_);
38824 check(numberOfExistingReferences < 1);
38825} or {
38826 find mustInRelationvalue_attribute_EStringToStringMapEntry(problem,interpretation,source,target);
38827}
38828
38829//////////
38830// 1.3 Relation Definition Indexers
38831//////////
38832
38833//////////
38834// 1.4 Containment Indexer
38835//////////
38836private pattern mustContains2(source: DefinedElement, target: DefinedElement) {
38837 find mustContains4(_,_,source,target);
38838}
38839
38840private pattern mustContains4(problem:LogicProblem, interpretation:PartialInterpretation,
38841 source: DefinedElement, target: DefinedElement)
38842 { find mustInRelationdetails_reference_EAnnotation(problem,interpretation,source,target); }or
38843
38844 { find mustInRelationcontents_reference_EAnnotation(problem,interpretation,source,target); }or
38845
38846 { find mustInRelationeOperations_reference_EClass(problem,interpretation,source,target); }or
38847
38848 { find mustInRelationeStructuralFeatures_reference_EClass(problem,interpretation,source,target); }or
38849
38850 { find mustInRelationeGenericSuperTypes_reference_EClass(problem,interpretation,source,target); }or
38851
38852 { find mustInRelationeTypeParameters_reference_EClassifier(problem,interpretation,source,target); }or
38853
38854 { find mustInRelationeLiterals_reference_EEnum(problem,interpretation,source,target); }or
38855
38856 { find mustInRelationeAnnotations_reference_EModelElement(problem,interpretation,source,target); }or
38857
38858 { find mustInRelationeTypeParameters_reference_EOperation(problem,interpretation,source,target); }or
38859
38860 { find mustInRelationeParameters_reference_EOperation(problem,interpretation,source,target); }or
38861
38862 { find mustInRelationeGenericExceptions_reference_EOperation(problem,interpretation,source,target); }or
38863
38864 { find mustInRelationeClassifiers_reference_EPackage(problem,interpretation,source,target); }or
38865
38866 { find mustInRelationeSubpackages_reference_EPackage(problem,interpretation,source,target); }or
38867
38868 { find mustInRelationeGenericType_reference_ETypedElement(problem,interpretation,source,target); }or
38869
38870 { find mustInRelationeUpperBound_reference_EGenericType(problem,interpretation,source,target); }or
38871
38872 { find mustInRelationeTypeArguments_reference_EGenericType(problem,interpretation,source,target); }or
38873
38874 { find mustInRelationeLowerBound_reference_EGenericType(problem,interpretation,source,target); }or
38875
38876 { find mustInRelationeBounds_reference_ETypeParameter(problem,interpretation,source,target); }
38877
38878private pattern mustTransitiveContains(source,target) {
38879 find mustContains2+(source,target);
38880}
38881
38882//////////
38883// 2. Invalidation Indexers
38884//////////
38885// 2.1 Invalidated by WF Queries
38886//////////
38887
38888//////////
38889// 3. Unfinishedness Indexers
38890//////////
38891// 3.1 Unfinishedness Measured by Multiplicity
38892//////////
38893pattern unfinishedLowerMultiplicity_eAttributeType_reference_EAttribute(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) {
38894 find interpretation(problem,interpretation);
38895 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
38896 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAttributeType reference EAttribute");
38897 find mustInstanceOfEAttribute_class(problem,interpretation,object);
38898 numberOfExistingReferences == count find mustInRelationeAttributeType_reference_EAttribute(problem,interpretation,object,_);
38899 check(numberOfExistingReferences < 1);
38900 missingMultiplicity == eval(1-numberOfExistingReferences);
38901}
38902pattern unfinishedLowerMultiplicity_eReferenceType_reference_EReference(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) {
38903 find interpretation(problem,interpretation);
38904 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
38905 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eReferenceType reference EReference");
38906 find mustInstanceOfEReference_class(problem,interpretation,object);
38907 numberOfExistingReferences == count find mustInRelationeReferenceType_reference_EReference(problem,interpretation,object,_);
38908 check(numberOfExistingReferences < 1);
38909 missingMultiplicity == eval(1-numberOfExistingReferences);
38910}
38911pattern unfinishedLowerMultiplicity_eRawType_reference_EGenericType(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) {
38912 find interpretation(problem,interpretation);
38913 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
38914 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eRawType reference EGenericType");
38915 find mustInstanceOfEGenericType_class(problem,interpretation,object);
38916 numberOfExistingReferences == count find mustInRelationeRawType_reference_EGenericType(problem,interpretation,object,_);
38917 check(numberOfExistingReferences < 1);
38918 missingMultiplicity == eval(1-numberOfExistingReferences);
38919}
38920
38921//////////
38922// 3.2 Unfinishedness Measured by WF Queries
38923//////////
38924
38925//////////
38926// 4. Refinement Indexers
38927//////////
38928// 4.1 Object constructors
38929//////////
38930private pattern hasElementInContainment(problem:LogicProblem, interpretation:PartialInterpretation)
38931{
38932 find interpretation(problem,interpretation);
38933 find mustInstanceOfETypeParameter_class(problem,interpretation,root);
38934 find mustExist(problem, interpretation, root);
38935}or{
38936 find interpretation(problem,interpretation);
38937 find mustInstanceOfETypedElement_class(problem,interpretation,root);
38938 find mustExist(problem, interpretation, root);
38939}or{
38940 find interpretation(problem,interpretation);
38941 find mustInstanceOfEClass_class(problem,interpretation,root);
38942 find mustExist(problem, interpretation, root);
38943}or{
38944 find interpretation(problem,interpretation);
38945 find mustInstanceOfEStructuralFeature_class(problem,interpretation,root);
38946 find mustExist(problem, interpretation, root);
38947}or{
38948 find interpretation(problem,interpretation);
38949 find mustInstanceOfEAnnotation_class(problem,interpretation,root);
38950 find mustExist(problem, interpretation, root);
38951}or{
38952 find interpretation(problem,interpretation);
38953 find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,root);
38954 find mustExist(problem, interpretation, root);
38955}or{
38956 find interpretation(problem,interpretation);
38957 find mustInstanceOfEAttribute_class(problem,interpretation,root);
38958 find mustExist(problem, interpretation, root);
38959}or{
38960 find interpretation(problem,interpretation);
38961 find mustInstanceOfEObject_class(problem,interpretation,root);
38962 find mustExist(problem, interpretation, root);
38963}or{
38964 find interpretation(problem,interpretation);
38965 find mustInstanceOfEClassifier_class(problem,interpretation,root);
38966 find mustExist(problem, interpretation, root);
38967}or{
38968 find interpretation(problem,interpretation);
38969 find mustInstanceOfEGenericType_class(problem,interpretation,root);
38970 find mustExist(problem, interpretation, root);
38971}or{
38972 find interpretation(problem,interpretation);
38973 find mustInstanceOfEEnumLiteral_class(problem,interpretation,root);
38974 find mustExist(problem, interpretation, root);
38975}or{
38976 find interpretation(problem,interpretation);
38977 find mustInstanceOfEDataType_class(problem,interpretation,root);
38978 find mustExist(problem, interpretation, root);
38979}or{
38980 find interpretation(problem,interpretation);
38981 find mustInstanceOfEOperation_class(problem,interpretation,root);
38982 find mustExist(problem, interpretation, root);
38983}or{
38984 find interpretation(problem,interpretation);
38985 find mustInstanceOfEPackage_class(problem,interpretation,root);
38986 find mustExist(problem, interpretation, root);
38987}or{
38988 find interpretation(problem,interpretation);
38989 find mustInstanceOfEParameter_class(problem,interpretation,root);
38990 find mustExist(problem, interpretation, root);
38991}or{
38992 find interpretation(problem,interpretation);
38993 find mustInstanceOfEModelElement_class(problem,interpretation,root);
38994 find mustExist(problem, interpretation, root);
38995}or{
38996 find interpretation(problem,interpretation);
38997 find mustInstanceOfEReference_class(problem,interpretation,root);
38998 find mustExist(problem, interpretation, root);
38999}or{
39000 find interpretation(problem,interpretation);
39001 find mustInstanceOfEEnum_class(problem,interpretation,root);
39002 find mustExist(problem, interpretation, root);
39003}or{
39004 find interpretation(problem,interpretation);
39005 find mustInstanceOfENamedElement_class(problem,interpretation,root);
39006 find mustExist(problem, interpretation, root);
39007}or{
39008 find interpretation(problem,interpretation);
39009 find mustInstanceOfEModelElement_class_DefinedPart(problem,interpretation,root);
39010 find mustExist(problem, interpretation, root);
39011}or{
39012 find interpretation(problem,interpretation);
39013 find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,root);
39014 find mustExist(problem, interpretation, root);
39015}or{
39016 find interpretation(problem,interpretation);
39017 find mustInstanceOfENamedElement_class_DefinedPart(problem,interpretation,root);
39018 find mustExist(problem, interpretation, root);
39019}or{
39020 find interpretation(problem,interpretation);
39021 find mustInstanceOfENamedElement_class_UndefinedPart(problem,interpretation,root);
39022 find mustExist(problem, interpretation, root);
39023}or{
39024 find interpretation(problem,interpretation);
39025 find mustInstanceOfEPackage_class_DefinedPart(problem,interpretation,root);
39026 find mustExist(problem, interpretation, root);
39027}or{
39028 find interpretation(problem,interpretation);
39029 find mustInstanceOfEPackage_class_UndefinedPart(problem,interpretation,root);
39030 find mustExist(problem, interpretation, root);
39031}
39032pattern createObject_EAnnotation_class_by_eAnnotations_reference_EModelElement_with_eModelElement_reference_EAnnotation(
39033 problem:LogicProblem, interpretation:PartialInterpretation,
39034 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
39035 container:DefinedElement)
39036{
39037 find interpretation(problem,interpretation);
39038 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
39039 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EAnnotation class");
39040 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
39041 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eAnnotations reference EModelElement");
39042 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
39043 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"eModelElement reference EAnnotation");
39044 find mustInstanceOfEModelElement_class(problem,interpretation,container);
39045 find mayInstanceOfEAnnotation_class(problem,interpretation,newObject);
39046 find mayInRelationeAnnotations_reference_EModelElement(problem,interpretation,container,newObject);
39047 find mustExist(problem, interpretation, container);
39048 neg find mustExist(problem, interpretation, newObject);
39049}
39050pattern createObject_EAnnotation_class(
39051 problem:LogicProblem, interpretation:PartialInterpretation,
39052 typeInterpretation:PartialComplexTypeInterpretation)
39053{
39054 find interpretation(problem,interpretation);
39055 neg find hasElementInContainment(problem,interpretation);
39056 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
39057 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EAnnotation class");
39058 find mayInstanceOfEAnnotation_class(problem,interpretation,newObject);
39059 find mayExist(problem, interpretation, newObject);
39060 neg find mustExist(problem, interpretation, newObject);
39061}
39062pattern createObject_EClass_class_by_eClassifiers_reference_EPackage_with_ePackage_reference_EClassifier(
39063 problem:LogicProblem, interpretation:PartialInterpretation,
39064 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
39065 container:DefinedElement)
39066{
39067 find interpretation(problem,interpretation);
39068 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
39069 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EClass class");
39070 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
39071 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eClassifiers reference EPackage");
39072 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
39073 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"ePackage reference EClassifier");
39074 find mustInstanceOfEPackage_class(problem,interpretation,container);
39075 find mayInstanceOfEClass_class(problem,interpretation,newObject);
39076 find mayInRelationeClassifiers_reference_EPackage(problem,interpretation,container,newObject);
39077 find mustExist(problem, interpretation, container);
39078 neg find mustExist(problem, interpretation, newObject);
39079}
39080pattern createObject_EClass_class(
39081 problem:LogicProblem, interpretation:PartialInterpretation,
39082 typeInterpretation:PartialComplexTypeInterpretation)
39083{
39084 find interpretation(problem,interpretation);
39085 neg find hasElementInContainment(problem,interpretation);
39086 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
39087 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EClass class");
39088 find mayInstanceOfEClass_class(problem,interpretation,newObject);
39089 find mayExist(problem, interpretation, newObject);
39090 neg find mustExist(problem, interpretation, newObject);
39091}
39092pattern createObject_EEnum_class_by_eClassifiers_reference_EPackage_with_ePackage_reference_EClassifier(
39093 problem:LogicProblem, interpretation:PartialInterpretation,
39094 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
39095 container:DefinedElement)
39096{
39097 find interpretation(problem,interpretation);
39098 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
39099 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EEnum class");
39100 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
39101 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eClassifiers reference EPackage");
39102 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
39103 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"ePackage reference EClassifier");
39104 find mustInstanceOfEPackage_class(problem,interpretation,container);
39105 find mayInstanceOfEEnum_class(problem,interpretation,newObject);
39106 find mayInRelationeClassifiers_reference_EPackage(problem,interpretation,container,newObject);
39107 find mustExist(problem, interpretation, container);
39108 neg find mustExist(problem, interpretation, newObject);
39109}
39110pattern createObject_EEnum_class(
39111 problem:LogicProblem, interpretation:PartialInterpretation,
39112 typeInterpretation:PartialComplexTypeInterpretation)
39113{
39114 find interpretation(problem,interpretation);
39115 neg find hasElementInContainment(problem,interpretation);
39116 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
39117 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EEnum class");
39118 find mayInstanceOfEEnum_class(problem,interpretation,newObject);
39119 find mayExist(problem, interpretation, newObject);
39120 neg find mustExist(problem, interpretation, newObject);
39121}
39122pattern createObject_EReference_class_by_eStructuralFeatures_reference_EClass_with_eContainingClass_reference_EStructuralFeature(
39123 problem:LogicProblem, interpretation:PartialInterpretation,
39124 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
39125 container:DefinedElement)
39126{
39127 find interpretation(problem,interpretation);
39128 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
39129 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EReference class");
39130 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
39131 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eStructuralFeatures reference EClass");
39132 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
39133 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"eContainingClass reference EStructuralFeature");
39134 find mustInstanceOfEClass_class(problem,interpretation,container);
39135 find mayInstanceOfEReference_class(problem,interpretation,newObject);
39136 find mayInRelationeStructuralFeatures_reference_EClass(problem,interpretation,container,newObject);
39137 find mustExist(problem, interpretation, container);
39138 neg find mustExist(problem, interpretation, newObject);
39139}
39140pattern createObject_EReference_class(
39141 problem:LogicProblem, interpretation:PartialInterpretation,
39142 typeInterpretation:PartialComplexTypeInterpretation)
39143{
39144 find interpretation(problem,interpretation);
39145 neg find hasElementInContainment(problem,interpretation);
39146 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
39147 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EReference class");
39148 find mayInstanceOfEReference_class(problem,interpretation,newObject);
39149 find mayExist(problem, interpretation, newObject);
39150 neg find mustExist(problem, interpretation, newObject);
39151}
39152pattern createObject_EOperation_class_by_eOperations_reference_EClass_with_eContainingClass_reference_EOperation(
39153 problem:LogicProblem, interpretation:PartialInterpretation,
39154 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
39155 container:DefinedElement)
39156{
39157 find interpretation(problem,interpretation);
39158 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
39159 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EOperation class");
39160 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
39161 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eOperations reference EClass");
39162 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
39163 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"eContainingClass reference EOperation");
39164 find mustInstanceOfEClass_class(problem,interpretation,container);
39165 find mayInstanceOfEOperation_class(problem,interpretation,newObject);
39166 find mayInRelationeOperations_reference_EClass(problem,interpretation,container,newObject);
39167 find mustExist(problem, interpretation, container);
39168 neg find mustExist(problem, interpretation, newObject);
39169}
39170pattern createObject_EOperation_class(
39171 problem:LogicProblem, interpretation:PartialInterpretation,
39172 typeInterpretation:PartialComplexTypeInterpretation)
39173{
39174 find interpretation(problem,interpretation);
39175 neg find hasElementInContainment(problem,interpretation);
39176 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
39177 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EOperation class");
39178 find mayInstanceOfEOperation_class(problem,interpretation,newObject);
39179 find mayExist(problem, interpretation, newObject);
39180 neg find mustExist(problem, interpretation, newObject);
39181}
39182pattern createObject_ETypeParameter_class_by_eTypeParameters_reference_EClassifier(
39183 problem:LogicProblem, interpretation:PartialInterpretation,
39184 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
39185 container:DefinedElement)
39186{
39187 find interpretation(problem,interpretation);
39188 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
39189 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"ETypeParameter class");
39190 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
39191 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eTypeParameters reference EClassifier");
39192 find mustInstanceOfEClassifier_class(problem,interpretation,container);
39193 find mayInstanceOfETypeParameter_class(problem,interpretation,newObject);
39194 find mayInRelationeTypeParameters_reference_EClassifier(problem,interpretation,container,newObject);
39195 find mustExist(problem, interpretation, container);
39196 neg find mustExist(problem, interpretation, newObject);
39197}
39198pattern createObject_ETypeParameter_class_by_eTypeParameters_reference_EOperation(
39199 problem:LogicProblem, interpretation:PartialInterpretation,
39200 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
39201 container:DefinedElement)
39202{
39203 find interpretation(problem,interpretation);
39204 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
39205 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"ETypeParameter class");
39206 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
39207 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eTypeParameters reference EOperation");
39208 find mustInstanceOfEOperation_class(problem,interpretation,container);
39209 find mayInstanceOfETypeParameter_class(problem,interpretation,newObject);
39210 find mayInRelationeTypeParameters_reference_EOperation(problem,interpretation,container,newObject);
39211 find mustExist(problem, interpretation, container);
39212 neg find mustExist(problem, interpretation, newObject);
39213}
39214pattern createObject_ETypeParameter_class(
39215 problem:LogicProblem, interpretation:PartialInterpretation,
39216 typeInterpretation:PartialComplexTypeInterpretation)
39217{
39218 find interpretation(problem,interpretation);
39219 neg find hasElementInContainment(problem,interpretation);
39220 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
39221 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"ETypeParameter class");
39222 find mayInstanceOfETypeParameter_class(problem,interpretation,newObject);
39223 find mayExist(problem, interpretation, newObject);
39224 neg find mustExist(problem, interpretation, newObject);
39225}
39226pattern createObject_EPackage_class_UndefinedPart_by_eSubpackages_reference_EPackage_with_eSuperPackage_reference_EPackage(
39227 problem:LogicProblem, interpretation:PartialInterpretation,
39228 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
39229 container:DefinedElement)
39230{
39231 find interpretation(problem,interpretation);
39232 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
39233 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EPackage class UndefinedPart");
39234 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
39235 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eSubpackages reference EPackage");
39236 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
39237 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"eSuperPackage reference EPackage");
39238 find mustInstanceOfEPackage_class(problem,interpretation,container);
39239 find mayInstanceOfEPackage_class_UndefinedPart(problem,interpretation,newObject);
39240 find mayInRelationeSubpackages_reference_EPackage(problem,interpretation,container,newObject);
39241 find mustExist(problem, interpretation, container);
39242 neg find mustExist(problem, interpretation, newObject);
39243}
39244pattern createObject_EPackage_class_UndefinedPart(
39245 problem:LogicProblem, interpretation:PartialInterpretation,
39246 typeInterpretation:PartialComplexTypeInterpretation)
39247{
39248 find interpretation(problem,interpretation);
39249 neg find hasElementInContainment(problem,interpretation);
39250 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
39251 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EPackage class UndefinedPart");
39252 find mayInstanceOfEPackage_class_UndefinedPart(problem,interpretation,newObject);
39253 find mayExist(problem, interpretation, newObject);
39254 neg find mustExist(problem, interpretation, newObject);
39255}
39256pattern createObject_EStringToStringMapEntry_class_by_details_reference_EAnnotation(
39257 problem:LogicProblem, interpretation:PartialInterpretation,
39258 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
39259 container:DefinedElement)
39260{
39261 find interpretation(problem,interpretation);
39262 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
39263 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EStringToStringMapEntry class");
39264 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
39265 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"details reference EAnnotation");
39266 find mustInstanceOfEAnnotation_class(problem,interpretation,container);
39267 find mayInstanceOfEStringToStringMapEntry_class(problem,interpretation,newObject);
39268 find mayInRelationdetails_reference_EAnnotation(problem,interpretation,container,newObject);
39269 find mustExist(problem, interpretation, container);
39270 neg find mustExist(problem, interpretation, newObject);
39271}
39272pattern createObject_EStringToStringMapEntry_class(
39273 problem:LogicProblem, interpretation:PartialInterpretation,
39274 typeInterpretation:PartialComplexTypeInterpretation)
39275{
39276 find interpretation(problem,interpretation);
39277 neg find hasElementInContainment(problem,interpretation);
39278 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
39279 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EStringToStringMapEntry class");
39280 find mayInstanceOfEStringToStringMapEntry_class(problem,interpretation,newObject);
39281 find mayExist(problem, interpretation, newObject);
39282 neg find mustExist(problem, interpretation, newObject);
39283}
39284pattern createObject_EObject_class_by_contents_reference_EAnnotation(
39285 problem:LogicProblem, interpretation:PartialInterpretation,
39286 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
39287 container:DefinedElement)
39288{
39289 find interpretation(problem,interpretation);
39290 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
39291 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EObject class");
39292 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
39293 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"contents reference EAnnotation");
39294 find mustInstanceOfEAnnotation_class(problem,interpretation,container);
39295 find mayInstanceOfEObject_class(problem,interpretation,newObject);
39296 find mayInRelationcontents_reference_EAnnotation(problem,interpretation,container,newObject);
39297 find mustExist(problem, interpretation, container);
39298 neg find mustExist(problem, interpretation, newObject);
39299}
39300pattern createObject_EObject_class(
39301 problem:LogicProblem, interpretation:PartialInterpretation,
39302 typeInterpretation:PartialComplexTypeInterpretation)
39303{
39304 find interpretation(problem,interpretation);
39305 neg find hasElementInContainment(problem,interpretation);
39306 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
39307 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EObject class");
39308 find mayInstanceOfEObject_class(problem,interpretation,newObject);
39309 find mayExist(problem, interpretation, newObject);
39310 neg find mustExist(problem, interpretation, newObject);
39311}
39312pattern createObject_EGenericType_class_by_eGenericSuperTypes_reference_EClass(
39313 problem:LogicProblem, interpretation:PartialInterpretation,
39314 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
39315 container:DefinedElement)
39316{
39317 find interpretation(problem,interpretation);
39318 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
39319 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class");
39320 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
39321 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eGenericSuperTypes reference EClass");
39322 find mustInstanceOfEClass_class(problem,interpretation,container);
39323 find mayInstanceOfEGenericType_class(problem,interpretation,newObject);
39324 find mayInRelationeGenericSuperTypes_reference_EClass(problem,interpretation,container,newObject);
39325 find mustExist(problem, interpretation, container);
39326 neg find mustExist(problem, interpretation, newObject);
39327}
39328pattern createObject_EGenericType_class_by_eGenericExceptions_reference_EOperation(
39329 problem:LogicProblem, interpretation:PartialInterpretation,
39330 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
39331 container:DefinedElement)
39332{
39333 find interpretation(problem,interpretation);
39334 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
39335 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class");
39336 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
39337 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eGenericExceptions reference EOperation");
39338 find mustInstanceOfEOperation_class(problem,interpretation,container);
39339 find mayInstanceOfEGenericType_class(problem,interpretation,newObject);
39340 find mayInRelationeGenericExceptions_reference_EOperation(problem,interpretation,container,newObject);
39341 find mustExist(problem, interpretation, container);
39342 neg find mustExist(problem, interpretation, newObject);
39343}
39344pattern createObject_EGenericType_class_by_eGenericType_reference_ETypedElement(
39345 problem:LogicProblem, interpretation:PartialInterpretation,
39346 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
39347 container:DefinedElement)
39348{
39349 find interpretation(problem,interpretation);
39350 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
39351 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class");
39352 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
39353 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eGenericType reference ETypedElement");
39354 find mustInstanceOfETypedElement_class(problem,interpretation,container);
39355 find mayInstanceOfEGenericType_class(problem,interpretation,newObject);
39356 find mayInRelationeGenericType_reference_ETypedElement(problem,interpretation,container,newObject);
39357 find mustExist(problem, interpretation, container);
39358 neg find mustExist(problem, interpretation, newObject);
39359}
39360pattern createObject_EGenericType_class_by_eUpperBound_reference_EGenericType(
39361 problem:LogicProblem, interpretation:PartialInterpretation,
39362 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
39363 container:DefinedElement)
39364{
39365 find interpretation(problem,interpretation);
39366 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
39367 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class");
39368 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
39369 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eUpperBound reference EGenericType");
39370 find mustInstanceOfEGenericType_class(problem,interpretation,container);
39371 find mayInstanceOfEGenericType_class(problem,interpretation,newObject);
39372 find mayInRelationeUpperBound_reference_EGenericType(problem,interpretation,container,newObject);
39373 find mustExist(problem, interpretation, container);
39374 neg find mustExist(problem, interpretation, newObject);
39375}
39376pattern createObject_EGenericType_class_by_eTypeArguments_reference_EGenericType(
39377 problem:LogicProblem, interpretation:PartialInterpretation,
39378 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
39379 container:DefinedElement)
39380{
39381 find interpretation(problem,interpretation);
39382 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
39383 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class");
39384 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
39385 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eTypeArguments reference EGenericType");
39386 find mustInstanceOfEGenericType_class(problem,interpretation,container);
39387 find mayInstanceOfEGenericType_class(problem,interpretation,newObject);
39388 find mayInRelationeTypeArguments_reference_EGenericType(problem,interpretation,container,newObject);
39389 find mustExist(problem, interpretation, container);
39390 neg find mustExist(problem, interpretation, newObject);
39391}
39392pattern createObject_EGenericType_class_by_eLowerBound_reference_EGenericType(
39393 problem:LogicProblem, interpretation:PartialInterpretation,
39394 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
39395 container:DefinedElement)
39396{
39397 find interpretation(problem,interpretation);
39398 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
39399 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class");
39400 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
39401 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eLowerBound reference EGenericType");
39402 find mustInstanceOfEGenericType_class(problem,interpretation,container);
39403 find mayInstanceOfEGenericType_class(problem,interpretation,newObject);
39404 find mayInRelationeLowerBound_reference_EGenericType(problem,interpretation,container,newObject);
39405 find mustExist(problem, interpretation, container);
39406 neg find mustExist(problem, interpretation, newObject);
39407}
39408pattern createObject_EGenericType_class_by_eBounds_reference_ETypeParameter(
39409 problem:LogicProblem, interpretation:PartialInterpretation,
39410 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
39411 container:DefinedElement)
39412{
39413 find interpretation(problem,interpretation);
39414 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
39415 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class");
39416 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
39417 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eBounds reference ETypeParameter");
39418 find mustInstanceOfETypeParameter_class(problem,interpretation,container);
39419 find mayInstanceOfEGenericType_class(problem,interpretation,newObject);
39420 find mayInRelationeBounds_reference_ETypeParameter(problem,interpretation,container,newObject);
39421 find mustExist(problem, interpretation, container);
39422 neg find mustExist(problem, interpretation, newObject);
39423}
39424pattern createObject_EGenericType_class(
39425 problem:LogicProblem, interpretation:PartialInterpretation,
39426 typeInterpretation:PartialComplexTypeInterpretation)
39427{
39428 find interpretation(problem,interpretation);
39429 neg find hasElementInContainment(problem,interpretation);
39430 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
39431 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class");
39432 find mayInstanceOfEGenericType_class(problem,interpretation,newObject);
39433 find mayExist(problem, interpretation, newObject);
39434 neg find mustExist(problem, interpretation, newObject);
39435}
39436pattern createObject_EParameter_class_by_eParameters_reference_EOperation_with_eOperation_reference_EParameter(
39437 problem:LogicProblem, interpretation:PartialInterpretation,
39438 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
39439 container:DefinedElement)
39440{
39441 find interpretation(problem,interpretation);
39442 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
39443 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EParameter class");
39444 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
39445 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eParameters reference EOperation");
39446 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
39447 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"eOperation reference EParameter");
39448 find mustInstanceOfEOperation_class(problem,interpretation,container);
39449 find mayInstanceOfEParameter_class(problem,interpretation,newObject);
39450 find mayInRelationeParameters_reference_EOperation(problem,interpretation,container,newObject);
39451 find mustExist(problem, interpretation, container);
39452 neg find mustExist(problem, interpretation, newObject);
39453}
39454pattern createObject_EParameter_class(
39455 problem:LogicProblem, interpretation:PartialInterpretation,
39456 typeInterpretation:PartialComplexTypeInterpretation)
39457{
39458 find interpretation(problem,interpretation);
39459 neg find hasElementInContainment(problem,interpretation);
39460 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
39461 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EParameter class");
39462 find mayInstanceOfEParameter_class(problem,interpretation,newObject);
39463 find mayExist(problem, interpretation, newObject);
39464 neg find mustExist(problem, interpretation, newObject);
39465}
39466pattern createObject_EAttribute_class_by_eStructuralFeatures_reference_EClass_with_eContainingClass_reference_EStructuralFeature(
39467 problem:LogicProblem, interpretation:PartialInterpretation,
39468 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
39469 container:DefinedElement)
39470{
39471 find interpretation(problem,interpretation);
39472 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
39473 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EAttribute class");
39474 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
39475 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eStructuralFeatures reference EClass");
39476 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
39477 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"eContainingClass reference EStructuralFeature");
39478 find mustInstanceOfEClass_class(problem,interpretation,container);
39479 find mayInstanceOfEAttribute_class(problem,interpretation,newObject);
39480 find mayInRelationeStructuralFeatures_reference_EClass(problem,interpretation,container,newObject);
39481 find mustExist(problem, interpretation, container);
39482 neg find mustExist(problem, interpretation, newObject);
39483}
39484pattern createObject_EAttribute_class(
39485 problem:LogicProblem, interpretation:PartialInterpretation,
39486 typeInterpretation:PartialComplexTypeInterpretation)
39487{
39488 find interpretation(problem,interpretation);
39489 neg find hasElementInContainment(problem,interpretation);
39490 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
39491 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EAttribute class");
39492 find mayInstanceOfEAttribute_class(problem,interpretation,newObject);
39493 find mayExist(problem, interpretation, newObject);
39494 neg find mustExist(problem, interpretation, newObject);
39495}
39496pattern createObject_EEnumLiteral_class_by_eLiterals_reference_EEnum_with_eEnum_reference_EEnumLiteral(
39497 problem:LogicProblem, interpretation:PartialInterpretation,
39498 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
39499 container:DefinedElement)
39500{
39501 find interpretation(problem,interpretation);
39502 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
39503 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EEnumLiteral class");
39504 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
39505 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eLiterals reference EEnum");
39506 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
39507 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"eEnum reference EEnumLiteral");
39508 find mustInstanceOfEEnum_class(problem,interpretation,container);
39509 find mayInstanceOfEEnumLiteral_class(problem,interpretation,newObject);
39510 find mayInRelationeLiterals_reference_EEnum(problem,interpretation,container,newObject);
39511 find mustExist(problem, interpretation, container);
39512 neg find mustExist(problem, interpretation, newObject);
39513}
39514pattern createObject_EEnumLiteral_class(
39515 problem:LogicProblem, interpretation:PartialInterpretation,
39516 typeInterpretation:PartialComplexTypeInterpretation)
39517{
39518 find interpretation(problem,interpretation);
39519 neg find hasElementInContainment(problem,interpretation);
39520 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
39521 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EEnumLiteral class");
39522 find mayInstanceOfEEnumLiteral_class(problem,interpretation,newObject);
39523 find mayExist(problem, interpretation, newObject);
39524 neg find mustExist(problem, interpretation, newObject);
39525}
39526pattern createObject_EDataType_class_by_eClassifiers_reference_EPackage_with_ePackage_reference_EClassifier(
39527 problem:LogicProblem, interpretation:PartialInterpretation,
39528 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
39529 container:DefinedElement)
39530{
39531 find interpretation(problem,interpretation);
39532 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
39533 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EDataType class");
39534 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
39535 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eClassifiers reference EPackage");
39536 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
39537 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"ePackage reference EClassifier");
39538 find mustInstanceOfEPackage_class(problem,interpretation,container);
39539 find mayInstanceOfEDataType_class(problem,interpretation,newObject);
39540 find mayInRelationeClassifiers_reference_EPackage(problem,interpretation,container,newObject);
39541 find mustExist(problem, interpretation, container);
39542 neg find mustExist(problem, interpretation, newObject);
39543}
39544pattern createObject_EDataType_class(
39545 problem:LogicProblem, interpretation:PartialInterpretation,
39546 typeInterpretation:PartialComplexTypeInterpretation)
39547{
39548 find interpretation(problem,interpretation);
39549 neg find hasElementInContainment(problem,interpretation);
39550 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
39551 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EDataType class");
39552 find mayInstanceOfEDataType_class(problem,interpretation,newObject);
39553 find mayExist(problem, interpretation, newObject);
39554 neg find mustExist(problem, interpretation, newObject);
39555}
39556
39557//////////
39558// 4.2 Type refinement
39559//////////
39560pattern refineTypeTo_EAnnotation_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
39561 find interpretation(problem,interpretation);
39562 PartialInterpretation.newElements(interpretation,element);
39563 find mayInstanceOfEAnnotation_class(problem,interpretation,element);
39564 neg find mustInstanceOfEObject_class(problem,interpretation,element);
39565 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
39566 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
39567 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
39568 neg find mustInstanceOfENamedElement_class(problem,interpretation,element);
39569}
39570pattern refineTypeTo_EClass_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
39571 find interpretation(problem,interpretation);
39572 PartialInterpretation.newElements(interpretation,element);
39573 find mayInstanceOfEClass_class(problem,interpretation,element);
39574 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
39575 neg find mustInstanceOfEObject_class(problem,interpretation,element);
39576 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
39577 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
39578 neg find mustInstanceOfEClass_class(problem,interpretation,element);
39579 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
39580 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
39581 neg find mustInstanceOfEDataType_class(problem,interpretation,element);
39582 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
39583 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
39584}
39585pattern refineTypeTo_EEnum_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
39586 find interpretation(problem,interpretation);
39587 PartialInterpretation.newElements(interpretation,element);
39588 find mayInstanceOfEEnum_class(problem,interpretation,element);
39589 neg find mustInstanceOfEObject_class(problem,interpretation,element);
39590 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
39591 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
39592 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
39593 neg find mustInstanceOfEClass_class(problem,interpretation,element);
39594 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
39595 neg find mustInstanceOfEEnum_class(problem,interpretation,element);
39596 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
39597 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
39598 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
39599}
39600pattern refineTypeTo_EReference_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
39601 find interpretation(problem,interpretation);
39602 PartialInterpretation.newElements(interpretation,element);
39603 find mayInstanceOfEReference_class(problem,interpretation,element);
39604 neg find mustInstanceOfEObject_class(problem,interpretation,element);
39605 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
39606 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
39607 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
39608 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
39609 neg find mustInstanceOfEAttribute_class(problem,interpretation,element);
39610 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
39611 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
39612 neg find mustInstanceOfEReference_class(problem,interpretation,element);
39613 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
39614 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
39615 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
39616}
39617pattern refineTypeTo_EOperation_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
39618 find interpretation(problem,interpretation);
39619 PartialInterpretation.newElements(interpretation,element);
39620 find mayInstanceOfEOperation_class(problem,interpretation,element);
39621 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
39622 neg find mustInstanceOfEObject_class(problem,interpretation,element);
39623 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
39624 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
39625 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
39626 neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element);
39627 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
39628 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
39629 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
39630 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
39631 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
39632}
39633pattern refineTypeTo_ETypeParameter_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
39634 find interpretation(problem,interpretation);
39635 PartialInterpretation.newElements(interpretation,element);
39636 find mayInstanceOfETypeParameter_class(problem,interpretation,element);
39637 neg find mustInstanceOfEObject_class(problem,interpretation,element);
39638 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
39639 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
39640 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
39641 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
39642 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
39643 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
39644 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
39645 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
39646}
39647pattern refineTypeTo_EPackage_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
39648 find interpretation(problem,interpretation);
39649 PartialInterpretation.newElements(interpretation,element);
39650 find mayInstanceOfEPackage_class_UndefinedPart(problem,interpretation,element);
39651 neg find mustInstanceOfEPackage_class_UndefinedPart(problem,interpretation,element);
39652 neg find mustInstanceOfEObject_class(problem,interpretation,element);
39653 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
39654 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
39655 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
39656 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
39657 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
39658 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
39659 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
39660}
39661pattern refineTypeTo_EStringToStringMapEntry_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
39662 find interpretation(problem,interpretation);
39663 PartialInterpretation.newElements(interpretation,element);
39664 find mayInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
39665 neg find mustInstanceOfEObject_class(problem,interpretation,element);
39666 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
39667 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
39668 neg find mustInstanceOfEModelElement_class(problem,interpretation,element);
39669}
39670pattern refineTypeTo_EObject_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
39671 find interpretation(problem,interpretation);
39672 PartialInterpretation.newElements(interpretation,element);
39673 find mayInstanceOfEObject_class(problem,interpretation,element);
39674 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
39675 neg find mustInstanceOfEObject_class(problem,interpretation,element);
39676 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
39677 neg find mustInstanceOfEModelElement_class(problem,interpretation,element);
39678}
39679pattern refineTypeTo_EGenericType_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
39680 find interpretation(problem,interpretation);
39681 PartialInterpretation.newElements(interpretation,element);
39682 find mayInstanceOfEGenericType_class(problem,interpretation,element);
39683 neg find mustInstanceOfEObject_class(problem,interpretation,element);
39684 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
39685 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
39686 neg find mustInstanceOfEModelElement_class(problem,interpretation,element);
39687}
39688pattern refineTypeTo_EParameter_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
39689 find interpretation(problem,interpretation);
39690 PartialInterpretation.newElements(interpretation,element);
39691 find mayInstanceOfEParameter_class(problem,interpretation,element);
39692 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
39693 neg find mustInstanceOfEObject_class(problem,interpretation,element);
39694 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
39695 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
39696 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
39697 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
39698 neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element);
39699 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
39700 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
39701 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
39702 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
39703}
39704pattern refineTypeTo_EAttribute_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
39705 find interpretation(problem,interpretation);
39706 PartialInterpretation.newElements(interpretation,element);
39707 find mayInstanceOfEAttribute_class(problem,interpretation,element);
39708 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
39709 neg find mustInstanceOfEObject_class(problem,interpretation,element);
39710 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
39711 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
39712 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
39713 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
39714 neg find mustInstanceOfEAttribute_class(problem,interpretation,element);
39715 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
39716 neg find mustInstanceOfEReference_class(problem,interpretation,element);
39717 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
39718 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
39719 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
39720}
39721pattern refineTypeTo_EEnumLiteral_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
39722 find interpretation(problem,interpretation);
39723 PartialInterpretation.newElements(interpretation,element);
39724 find mayInstanceOfEEnumLiteral_class(problem,interpretation,element);
39725 neg find mustInstanceOfEObject_class(problem,interpretation,element);
39726 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
39727 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
39728 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
39729 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
39730 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
39731 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
39732 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
39733 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
39734}
39735pattern refineTypeTo_EDataType_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
39736 find interpretation(problem,interpretation);
39737 PartialInterpretation.newElements(interpretation,element);
39738 find mayInstanceOfEDataType_class(problem,interpretation,element);
39739 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
39740 neg find mustInstanceOfEObject_class(problem,interpretation,element);
39741 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
39742 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
39743 neg find mustInstanceOfEClass_class(problem,interpretation,element);
39744 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
39745 neg find mustInstanceOfEEnum_class(problem,interpretation,element);
39746 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
39747 neg find mustInstanceOfEDataType_class(problem,interpretation,element);
39748 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
39749 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
39750}
39751
39752//////////
39753// 4.3 Relation refinement
39754//////////
39755pattern refineRelation_eAttributeType_reference_EAttribute(
39756 problem:LogicProblem, interpretation:PartialInterpretation,
39757 relationIterpretation:PartialRelationInterpretation,
39758 from: DefinedElement, to: DefinedElement)
39759{
39760 find interpretation(problem,interpretation);
39761 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
39762 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAttributeType reference EAttribute");
39763 find mustExist(problem, interpretation, from);
39764 find mustExist(problem, interpretation, to);
39765 find mustInstanceOfEAttribute_class(problem,interpretation,from);
39766 find mustInstanceOfEDataType_class(problem,interpretation,to);
39767 find mayInRelationeAttributeType_reference_EAttribute(problem,interpretation,from,to);
39768 neg find mustInRelationeAttributeType_reference_EAttribute(problem,interpretation,from,to);
39769}
39770pattern refineRelation_references_reference_EAnnotation(
39771 problem:LogicProblem, interpretation:PartialInterpretation,
39772 relationIterpretation:PartialRelationInterpretation,
39773 from: DefinedElement, to: DefinedElement)
39774{
39775 find interpretation(problem,interpretation);
39776 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
39777 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"references reference EAnnotation");
39778 find mustExist(problem, interpretation, from);
39779 find mustExist(problem, interpretation, to);
39780 find mustInstanceOfEAnnotation_class(problem,interpretation,from);
39781 find mustInstanceOfEObject_class(problem,interpretation,to);
39782 find mayInRelationreferences_reference_EAnnotation(problem,interpretation,from,to);
39783 neg find mustInRelationreferences_reference_EAnnotation(problem,interpretation,from,to);
39784}
39785pattern refineRelation_eSuperTypes_reference_EClass(
39786 problem:LogicProblem, interpretation:PartialInterpretation,
39787 relationIterpretation:PartialRelationInterpretation,
39788 from: DefinedElement, to: DefinedElement)
39789{
39790 find interpretation(problem,interpretation);
39791 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
39792 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eSuperTypes reference EClass");
39793 find mustExist(problem, interpretation, from);
39794 find mustExist(problem, interpretation, to);
39795 find mustInstanceOfEClass_class(problem,interpretation,from);
39796 find mustInstanceOfEClass_class(problem,interpretation,to);
39797 find mayInRelationeSuperTypes_reference_EClass(problem,interpretation,from,to);
39798 neg find mustInRelationeSuperTypes_reference_EClass(problem,interpretation,from,to);
39799}
39800pattern refineRelation_eAllAttributes_reference_EClass(
39801 problem:LogicProblem, interpretation:PartialInterpretation,
39802 relationIterpretation:PartialRelationInterpretation,
39803 from: DefinedElement, to: DefinedElement)
39804{
39805 find interpretation(problem,interpretation);
39806 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
39807 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllAttributes reference EClass");
39808 find mustExist(problem, interpretation, from);
39809 find mustExist(problem, interpretation, to);
39810 find mustInstanceOfEClass_class(problem,interpretation,from);
39811 find mustInstanceOfEAttribute_class(problem,interpretation,to);
39812 find mayInRelationeAllAttributes_reference_EClass(problem,interpretation,from,to);
39813 neg find mustInRelationeAllAttributes_reference_EClass(problem,interpretation,from,to);
39814}
39815pattern refineRelation_eAllReferences_reference_EClass(
39816 problem:LogicProblem, interpretation:PartialInterpretation,
39817 relationIterpretation:PartialRelationInterpretation,
39818 from: DefinedElement, to: DefinedElement)
39819{
39820 find interpretation(problem,interpretation);
39821 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
39822 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllReferences reference EClass");
39823 find mustExist(problem, interpretation, from);
39824 find mustExist(problem, interpretation, to);
39825 find mustInstanceOfEClass_class(problem,interpretation,from);
39826 find mustInstanceOfEReference_class(problem,interpretation,to);
39827 find mayInRelationeAllReferences_reference_EClass(problem,interpretation,from,to);
39828 neg find mustInRelationeAllReferences_reference_EClass(problem,interpretation,from,to);
39829}
39830pattern refineRelation_eReferences_reference_EClass(
39831 problem:LogicProblem, interpretation:PartialInterpretation,
39832 relationIterpretation:PartialRelationInterpretation,
39833 from: DefinedElement, to: DefinedElement)
39834{
39835 find interpretation(problem,interpretation);
39836 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
39837 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eReferences reference EClass");
39838 find mustExist(problem, interpretation, from);
39839 find mustExist(problem, interpretation, to);
39840 find mustInstanceOfEClass_class(problem,interpretation,from);
39841 find mustInstanceOfEReference_class(problem,interpretation,to);
39842 find mayInRelationeReferences_reference_EClass(problem,interpretation,from,to);
39843 neg find mustInRelationeReferences_reference_EClass(problem,interpretation,from,to);
39844}
39845pattern refineRelation_eAttributes_reference_EClass(
39846 problem:LogicProblem, interpretation:PartialInterpretation,
39847 relationIterpretation:PartialRelationInterpretation,
39848 from: DefinedElement, to: DefinedElement)
39849{
39850 find interpretation(problem,interpretation);
39851 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
39852 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAttributes reference EClass");
39853 find mustExist(problem, interpretation, from);
39854 find mustExist(problem, interpretation, to);
39855 find mustInstanceOfEClass_class(problem,interpretation,from);
39856 find mustInstanceOfEAttribute_class(problem,interpretation,to);
39857 find mayInRelationeAttributes_reference_EClass(problem,interpretation,from,to);
39858 neg find mustInRelationeAttributes_reference_EClass(problem,interpretation,from,to);
39859}
39860pattern refineRelation_eAllContainments_reference_EClass(
39861 problem:LogicProblem, interpretation:PartialInterpretation,
39862 relationIterpretation:PartialRelationInterpretation,
39863 from: DefinedElement, to: DefinedElement)
39864{
39865 find interpretation(problem,interpretation);
39866 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
39867 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllContainments reference EClass");
39868 find mustExist(problem, interpretation, from);
39869 find mustExist(problem, interpretation, to);
39870 find mustInstanceOfEClass_class(problem,interpretation,from);
39871 find mustInstanceOfEReference_class(problem,interpretation,to);
39872 find mayInRelationeAllContainments_reference_EClass(problem,interpretation,from,to);
39873 neg find mustInRelationeAllContainments_reference_EClass(problem,interpretation,from,to);
39874}
39875pattern refineRelation_eAllOperations_reference_EClass(
39876 problem:LogicProblem, interpretation:PartialInterpretation,
39877 relationIterpretation:PartialRelationInterpretation,
39878 from: DefinedElement, to: DefinedElement)
39879{
39880 find interpretation(problem,interpretation);
39881 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
39882 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllOperations reference EClass");
39883 find mustExist(problem, interpretation, from);
39884 find mustExist(problem, interpretation, to);
39885 find mustInstanceOfEClass_class(problem,interpretation,from);
39886 find mustInstanceOfEOperation_class(problem,interpretation,to);
39887 find mayInRelationeAllOperations_reference_EClass(problem,interpretation,from,to);
39888 neg find mustInRelationeAllOperations_reference_EClass(problem,interpretation,from,to);
39889}
39890pattern refineRelation_eAllStructuralFeatures_reference_EClass(
39891 problem:LogicProblem, interpretation:PartialInterpretation,
39892 relationIterpretation:PartialRelationInterpretation,
39893 from: DefinedElement, to: DefinedElement)
39894{
39895 find interpretation(problem,interpretation);
39896 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
39897 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllStructuralFeatures reference EClass");
39898 find mustExist(problem, interpretation, from);
39899 find mustExist(problem, interpretation, to);
39900 find mustInstanceOfEClass_class(problem,interpretation,from);
39901 find mustInstanceOfEStructuralFeature_class(problem,interpretation,to);
39902 find mayInRelationeAllStructuralFeatures_reference_EClass(problem,interpretation,from,to);
39903 neg find mustInRelationeAllStructuralFeatures_reference_EClass(problem,interpretation,from,to);
39904}
39905pattern refineRelation_eAllSuperTypes_reference_EClass(
39906 problem:LogicProblem, interpretation:PartialInterpretation,
39907 relationIterpretation:PartialRelationInterpretation,
39908 from: DefinedElement, to: DefinedElement)
39909{
39910 find interpretation(problem,interpretation);
39911 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
39912 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllSuperTypes reference EClass");
39913 find mustExist(problem, interpretation, from);
39914 find mustExist(problem, interpretation, to);
39915 find mustInstanceOfEClass_class(problem,interpretation,from);
39916 find mustInstanceOfEClass_class(problem,interpretation,to);
39917 find mayInRelationeAllSuperTypes_reference_EClass(problem,interpretation,from,to);
39918 neg find mustInRelationeAllSuperTypes_reference_EClass(problem,interpretation,from,to);
39919}
39920pattern refineRelation_eIDAttribute_reference_EClass(
39921 problem:LogicProblem, interpretation:PartialInterpretation,
39922 relationIterpretation:PartialRelationInterpretation,
39923 from: DefinedElement, to: DefinedElement)
39924{
39925 find interpretation(problem,interpretation);
39926 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
39927 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eIDAttribute reference EClass");
39928 find mustExist(problem, interpretation, from);
39929 find mustExist(problem, interpretation, to);
39930 find mustInstanceOfEClass_class(problem,interpretation,from);
39931 find mustInstanceOfEAttribute_class(problem,interpretation,to);
39932 find mayInRelationeIDAttribute_reference_EClass(problem,interpretation,from,to);
39933 neg find mustInRelationeIDAttribute_reference_EClass(problem,interpretation,from,to);
39934}
39935pattern refineRelation_eAllGenericSuperTypes_reference_EClass(
39936 problem:LogicProblem, interpretation:PartialInterpretation,
39937 relationIterpretation:PartialRelationInterpretation,
39938 from: DefinedElement, to: DefinedElement)
39939{
39940 find interpretation(problem,interpretation);
39941 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
39942 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllGenericSuperTypes reference EClass");
39943 find mustExist(problem, interpretation, from);
39944 find mustExist(problem, interpretation, to);
39945 find mustInstanceOfEClass_class(problem,interpretation,from);
39946 find mustInstanceOfEGenericType_class(problem,interpretation,to);
39947 find mayInRelationeAllGenericSuperTypes_reference_EClass(problem,interpretation,from,to);
39948 neg find mustInRelationeAllGenericSuperTypes_reference_EClass(problem,interpretation,from,to);
39949}
39950pattern refineRelation_eExceptions_reference_EOperation(
39951 problem:LogicProblem, interpretation:PartialInterpretation,
39952 relationIterpretation:PartialRelationInterpretation,
39953 from: DefinedElement, to: DefinedElement)
39954{
39955 find interpretation(problem,interpretation);
39956 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
39957 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eExceptions reference EOperation");
39958 find mustExist(problem, interpretation, from);
39959 find mustExist(problem, interpretation, to);
39960 find mustInstanceOfEOperation_class(problem,interpretation,from);
39961 find mustInstanceOfEClassifier_class(problem,interpretation,to);
39962 find mayInRelationeExceptions_reference_EOperation(problem,interpretation,from,to);
39963 neg find mustInRelationeExceptions_reference_EOperation(problem,interpretation,from,to);
39964}
39965pattern refineRelation_eOpposite_reference_EReference(
39966 problem:LogicProblem, interpretation:PartialInterpretation,
39967 relationIterpretation:PartialRelationInterpretation,
39968 from: DefinedElement, to: DefinedElement)
39969{
39970 find interpretation(problem,interpretation);
39971 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
39972 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eOpposite reference EReference");
39973 find mustExist(problem, interpretation, from);
39974 find mustExist(problem, interpretation, to);
39975 find mustInstanceOfEReference_class(problem,interpretation,from);
39976 find mustInstanceOfEReference_class(problem,interpretation,to);
39977 find mayInRelationeOpposite_reference_EReference(problem,interpretation,from,to);
39978 neg find mustInRelationeOpposite_reference_EReference(problem,interpretation,from,to);
39979}
39980pattern refineRelation_eReferenceType_reference_EReference(
39981 problem:LogicProblem, interpretation:PartialInterpretation,
39982 relationIterpretation:PartialRelationInterpretation,
39983 from: DefinedElement, to: DefinedElement)
39984{
39985 find interpretation(problem,interpretation);
39986 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
39987 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eReferenceType reference EReference");
39988 find mustExist(problem, interpretation, from);
39989 find mustExist(problem, interpretation, to);
39990 find mustInstanceOfEReference_class(problem,interpretation,from);
39991 find mustInstanceOfEClass_class(problem,interpretation,to);
39992 find mayInRelationeReferenceType_reference_EReference(problem,interpretation,from,to);
39993 neg find mustInRelationeReferenceType_reference_EReference(problem,interpretation,from,to);
39994}
39995pattern refineRelation_eKeys_reference_EReference(
39996 problem:LogicProblem, interpretation:PartialInterpretation,
39997 relationIterpretation:PartialRelationInterpretation,
39998 from: DefinedElement, to: DefinedElement)
39999{
40000 find interpretation(problem,interpretation);
40001 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
40002 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eKeys reference EReference");
40003 find mustExist(problem, interpretation, from);
40004 find mustExist(problem, interpretation, to);
40005 find mustInstanceOfEReference_class(problem,interpretation,from);
40006 find mustInstanceOfEAttribute_class(problem,interpretation,to);
40007 find mayInRelationeKeys_reference_EReference(problem,interpretation,from,to);
40008 neg find mustInRelationeKeys_reference_EReference(problem,interpretation,from,to);
40009}
40010pattern refineRelation_eType_reference_ETypedElement(
40011 problem:LogicProblem, interpretation:PartialInterpretation,
40012 relationIterpretation:PartialRelationInterpretation,
40013 from: DefinedElement, to: DefinedElement)
40014{
40015 find interpretation(problem,interpretation);
40016 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
40017 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eType reference ETypedElement");
40018 find mustExist(problem, interpretation, from);
40019 find mustExist(problem, interpretation, to);
40020 find mustInstanceOfETypedElement_class(problem,interpretation,from);
40021 find mustInstanceOfEClassifier_class(problem,interpretation,to);
40022 find mayInRelationeType_reference_ETypedElement(problem,interpretation,from,to);
40023 neg find mustInRelationeType_reference_ETypedElement(problem,interpretation,from,to);
40024}
40025pattern refineRelation_eRawType_reference_EGenericType(
40026 problem:LogicProblem, interpretation:PartialInterpretation,
40027 relationIterpretation:PartialRelationInterpretation,
40028 from: DefinedElement, to: DefinedElement)
40029{
40030 find interpretation(problem,interpretation);
40031 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
40032 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eRawType reference EGenericType");
40033 find mustExist(problem, interpretation, from);
40034 find mustExist(problem, interpretation, to);
40035 find mustInstanceOfEGenericType_class(problem,interpretation,from);
40036 find mustInstanceOfEClassifier_class(problem,interpretation,to);
40037 find mayInRelationeRawType_reference_EGenericType(problem,interpretation,from,to);
40038 neg find mustInRelationeRawType_reference_EGenericType(problem,interpretation,from,to);
40039}
40040pattern refineRelation_eTypeParameter_reference_EGenericType(
40041 problem:LogicProblem, interpretation:PartialInterpretation,
40042 relationIterpretation:PartialRelationInterpretation,
40043 from: DefinedElement, to: DefinedElement)
40044{
40045 find interpretation(problem,interpretation);
40046 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
40047 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eTypeParameter reference EGenericType");
40048 find mustExist(problem, interpretation, from);
40049 find mustExist(problem, interpretation, to);
40050 find mustInstanceOfEGenericType_class(problem,interpretation,from);
40051 find mustInstanceOfETypeParameter_class(problem,interpretation,to);
40052 find mayInRelationeTypeParameter_reference_EGenericType(problem,interpretation,from,to);
40053 neg find mustInRelationeTypeParameter_reference_EGenericType(problem,interpretation,from,to);
40054}
40055pattern refineRelation_eClassifier_reference_EGenericType(
40056 problem:LogicProblem, interpretation:PartialInterpretation,
40057 relationIterpretation:PartialRelationInterpretation,
40058 from: DefinedElement, to: DefinedElement)
40059{
40060 find interpretation(problem,interpretation);
40061 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
40062 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eClassifier reference EGenericType");
40063 find mustExist(problem, interpretation, from);
40064 find mustExist(problem, interpretation, to);
40065 find mustInstanceOfEGenericType_class(problem,interpretation,from);
40066 find mustInstanceOfEClassifier_class(problem,interpretation,to);
40067 find mayInRelationeClassifier_reference_EGenericType(problem,interpretation,from,to);
40068 neg find mustInRelationeClassifier_reference_EGenericType(problem,interpretation,from,to);
40069}
40070pattern refineRelation_iD_attribute_EAttribute(
40071 problem:LogicProblem, interpretation:PartialInterpretation,
40072 relationIterpretation:PartialRelationInterpretation,
40073 from: DefinedElement, to: DefinedElement)
40074{
40075 find interpretation(problem,interpretation);
40076 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
40077 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"iD attribute EAttribute");
40078 find mustExist(problem, interpretation, from);
40079 find mustExist(problem, interpretation, to);
40080 find mustInstanceOfEAttribute_class(problem,interpretation,from);
40081 BooleanElement(to);
40082 find mayInRelationiD_attribute_EAttribute(problem,interpretation,from,to);
40083 neg find mustInRelationiD_attribute_EAttribute(problem,interpretation,from,to);
40084}
40085pattern refineRelation_source_attribute_EAnnotation(
40086 problem:LogicProblem, interpretation:PartialInterpretation,
40087 relationIterpretation:PartialRelationInterpretation,
40088 from: DefinedElement, to: DefinedElement)
40089{
40090 find interpretation(problem,interpretation);
40091 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
40092 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"source attribute EAnnotation");
40093 find mustExist(problem, interpretation, from);
40094 find mustExist(problem, interpretation, to);
40095 find mustInstanceOfEAnnotation_class(problem,interpretation,from);
40096 StringElement(to);
40097 find mayInRelationsource_attribute_EAnnotation(problem,interpretation,from,to);
40098 neg find mustInRelationsource_attribute_EAnnotation(problem,interpretation,from,to);
40099}
40100pattern refineRelation_abstract_attribute_EClass(
40101 problem:LogicProblem, interpretation:PartialInterpretation,
40102 relationIterpretation:PartialRelationInterpretation,
40103 from: DefinedElement, to: DefinedElement)
40104{
40105 find interpretation(problem,interpretation);
40106 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
40107 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"abstract attribute EClass");
40108 find mustExist(problem, interpretation, from);
40109 find mustExist(problem, interpretation, to);
40110 find mustInstanceOfEClass_class(problem,interpretation,from);
40111 BooleanElement(to);
40112 find mayInRelationabstract_attribute_EClass(problem,interpretation,from,to);
40113 neg find mustInRelationabstract_attribute_EClass(problem,interpretation,from,to);
40114}
40115pattern refineRelation_interface_attribute_EClass(
40116 problem:LogicProblem, interpretation:PartialInterpretation,
40117 relationIterpretation:PartialRelationInterpretation,
40118 from: DefinedElement, to: DefinedElement)
40119{
40120 find interpretation(problem,interpretation);
40121 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
40122 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface attribute EClass");
40123 find mustExist(problem, interpretation, from);
40124 find mustExist(problem, interpretation, to);
40125 find mustInstanceOfEClass_class(problem,interpretation,from);
40126 BooleanElement(to);
40127 find mayInRelationinterface_attribute_EClass(problem,interpretation,from,to);
40128 neg find mustInRelationinterface_attribute_EClass(problem,interpretation,from,to);
40129}
40130pattern refineRelation_instanceClassName_attribute_EClassifier(
40131 problem:LogicProblem, interpretation:PartialInterpretation,
40132 relationIterpretation:PartialRelationInterpretation,
40133 from: DefinedElement, to: DefinedElement)
40134{
40135 find interpretation(problem,interpretation);
40136 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
40137 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"instanceClassName attribute EClassifier");
40138 find mustExist(problem, interpretation, from);
40139 find mustExist(problem, interpretation, to);
40140 find mustInstanceOfEClassifier_class(problem,interpretation,from);
40141 StringElement(to);
40142 find mayInRelationinstanceClassName_attribute_EClassifier(problem,interpretation,from,to);
40143 neg find mustInRelationinstanceClassName_attribute_EClassifier(problem,interpretation,from,to);
40144}
40145pattern refineRelation_instanceTypeName_attribute_EClassifier(
40146 problem:LogicProblem, interpretation:PartialInterpretation,
40147 relationIterpretation:PartialRelationInterpretation,
40148 from: DefinedElement, to: DefinedElement)
40149{
40150 find interpretation(problem,interpretation);
40151 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
40152 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"instanceTypeName attribute EClassifier");
40153 find mustExist(problem, interpretation, from);
40154 find mustExist(problem, interpretation, to);
40155 find mustInstanceOfEClassifier_class(problem,interpretation,from);
40156 StringElement(to);
40157 find mayInRelationinstanceTypeName_attribute_EClassifier(problem,interpretation,from,to);
40158 neg find mustInRelationinstanceTypeName_attribute_EClassifier(problem,interpretation,from,to);
40159}
40160pattern refineRelation_serializable_attribute_EDataType(
40161 problem:LogicProblem, interpretation:PartialInterpretation,
40162 relationIterpretation:PartialRelationInterpretation,
40163 from: DefinedElement, to: DefinedElement)
40164{
40165 find interpretation(problem,interpretation);
40166 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
40167 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"serializable attribute EDataType");
40168 find mustExist(problem, interpretation, from);
40169 find mustExist(problem, interpretation, to);
40170 find mustInstanceOfEDataType_class(problem,interpretation,from);
40171 BooleanElement(to);
40172 find mayInRelationserializable_attribute_EDataType(problem,interpretation,from,to);
40173 neg find mustInRelationserializable_attribute_EDataType(problem,interpretation,from,to);
40174}
40175pattern refineRelation_value_attribute_EEnumLiteral(
40176 problem:LogicProblem, interpretation:PartialInterpretation,
40177 relationIterpretation:PartialRelationInterpretation,
40178 from: DefinedElement, to: DefinedElement)
40179{
40180 find interpretation(problem,interpretation);
40181 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
40182 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"value attribute EEnumLiteral");
40183 find mustExist(problem, interpretation, from);
40184 find mustExist(problem, interpretation, to);
40185 find mustInstanceOfEEnumLiteral_class(problem,interpretation,from);
40186 IntegerElement(to);
40187 find mayInRelationvalue_attribute_EEnumLiteral(problem,interpretation,from,to);
40188 neg find mustInRelationvalue_attribute_EEnumLiteral(problem,interpretation,from,to);
40189}
40190pattern refineRelation_literal_attribute_EEnumLiteral(
40191 problem:LogicProblem, interpretation:PartialInterpretation,
40192 relationIterpretation:PartialRelationInterpretation,
40193 from: DefinedElement, to: DefinedElement)
40194{
40195 find interpretation(problem,interpretation);
40196 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
40197 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"literal attribute EEnumLiteral");
40198 find mustExist(problem, interpretation, from);
40199 find mustExist(problem, interpretation, to);
40200 find mustInstanceOfEEnumLiteral_class(problem,interpretation,from);
40201 StringElement(to);
40202 find mayInRelationliteral_attribute_EEnumLiteral(problem,interpretation,from,to);
40203 neg find mustInRelationliteral_attribute_EEnumLiteral(problem,interpretation,from,to);
40204}
40205pattern refineRelation_name_attribute_ENamedElement(
40206 problem:LogicProblem, interpretation:PartialInterpretation,
40207 relationIterpretation:PartialRelationInterpretation,
40208 from: DefinedElement, to: DefinedElement)
40209{
40210 find interpretation(problem,interpretation);
40211 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
40212 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"name attribute ENamedElement");
40213 find mustExist(problem, interpretation, from);
40214 find mustExist(problem, interpretation, to);
40215 find mustInstanceOfENamedElement_class(problem,interpretation,from);
40216 StringElement(to);
40217 find mayInRelationname_attribute_ENamedElement(problem,interpretation,from,to);
40218 neg find mustInRelationname_attribute_ENamedElement(problem,interpretation,from,to);
40219}
40220pattern refineRelation_nsURI_attribute_EPackage(
40221 problem:LogicProblem, interpretation:PartialInterpretation,
40222 relationIterpretation:PartialRelationInterpretation,
40223 from: DefinedElement, to: DefinedElement)
40224{
40225 find interpretation(problem,interpretation);
40226 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
40227 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"nsURI attribute EPackage");
40228 find mustExist(problem, interpretation, from);
40229 find mustExist(problem, interpretation, to);
40230 find mustInstanceOfEPackage_class(problem,interpretation,from);
40231 StringElement(to);
40232 find mayInRelationnsURI_attribute_EPackage(problem,interpretation,from,to);
40233 neg find mustInRelationnsURI_attribute_EPackage(problem,interpretation,from,to);
40234}
40235pattern refineRelation_nsPrefix_attribute_EPackage(
40236 problem:LogicProblem, interpretation:PartialInterpretation,
40237 relationIterpretation:PartialRelationInterpretation,
40238 from: DefinedElement, to: DefinedElement)
40239{
40240 find interpretation(problem,interpretation);
40241 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
40242 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"nsPrefix attribute EPackage");
40243 find mustExist(problem, interpretation, from);
40244 find mustExist(problem, interpretation, to);
40245 find mustInstanceOfEPackage_class(problem,interpretation,from);
40246 StringElement(to);
40247 find mayInRelationnsPrefix_attribute_EPackage(problem,interpretation,from,to);
40248 neg find mustInRelationnsPrefix_attribute_EPackage(problem,interpretation,from,to);
40249}
40250pattern refineRelation_containment_attribute_EReference(
40251 problem:LogicProblem, interpretation:PartialInterpretation,
40252 relationIterpretation:PartialRelationInterpretation,
40253 from: DefinedElement, to: DefinedElement)
40254{
40255 find interpretation(problem,interpretation);
40256 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
40257 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"containment attribute EReference");
40258 find mustExist(problem, interpretation, from);
40259 find mustExist(problem, interpretation, to);
40260 find mustInstanceOfEReference_class(problem,interpretation,from);
40261 BooleanElement(to);
40262 find mayInRelationcontainment_attribute_EReference(problem,interpretation,from,to);
40263 neg find mustInRelationcontainment_attribute_EReference(problem,interpretation,from,to);
40264}
40265pattern refineRelation_container_attribute_EReference(
40266 problem:LogicProblem, interpretation:PartialInterpretation,
40267 relationIterpretation:PartialRelationInterpretation,
40268 from: DefinedElement, to: DefinedElement)
40269{
40270 find interpretation(problem,interpretation);
40271 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
40272 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"container attribute EReference");
40273 find mustExist(problem, interpretation, from);
40274 find mustExist(problem, interpretation, to);
40275 find mustInstanceOfEReference_class(problem,interpretation,from);
40276 BooleanElement(to);
40277 find mayInRelationcontainer_attribute_EReference(problem,interpretation,from,to);
40278 neg find mustInRelationcontainer_attribute_EReference(problem,interpretation,from,to);
40279}
40280pattern refineRelation_resolveProxies_attribute_EReference(
40281 problem:LogicProblem, interpretation:PartialInterpretation,
40282 relationIterpretation:PartialRelationInterpretation,
40283 from: DefinedElement, to: DefinedElement)
40284{
40285 find interpretation(problem,interpretation);
40286 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
40287 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"resolveProxies attribute EReference");
40288 find mustExist(problem, interpretation, from);
40289 find mustExist(problem, interpretation, to);
40290 find mustInstanceOfEReference_class(problem,interpretation,from);
40291 BooleanElement(to);
40292 find mayInRelationresolveProxies_attribute_EReference(problem,interpretation,from,to);
40293 neg find mustInRelationresolveProxies_attribute_EReference(problem,interpretation,from,to);
40294}
40295pattern refineRelation_changeable_attribute_EStructuralFeature(
40296 problem:LogicProblem, interpretation:PartialInterpretation,
40297 relationIterpretation:PartialRelationInterpretation,
40298 from: DefinedElement, to: DefinedElement)
40299{
40300 find interpretation(problem,interpretation);
40301 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
40302 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"changeable attribute EStructuralFeature");
40303 find mustExist(problem, interpretation, from);
40304 find mustExist(problem, interpretation, to);
40305 find mustInstanceOfEStructuralFeature_class(problem,interpretation,from);
40306 BooleanElement(to);
40307 find mayInRelationchangeable_attribute_EStructuralFeature(problem,interpretation,from,to);
40308 neg find mustInRelationchangeable_attribute_EStructuralFeature(problem,interpretation,from,to);
40309}
40310pattern refineRelation_volatile_attribute_EStructuralFeature(
40311 problem:LogicProblem, interpretation:PartialInterpretation,
40312 relationIterpretation:PartialRelationInterpretation,
40313 from: DefinedElement, to: DefinedElement)
40314{
40315 find interpretation(problem,interpretation);
40316 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
40317 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"volatile attribute EStructuralFeature");
40318 find mustExist(problem, interpretation, from);
40319 find mustExist(problem, interpretation, to);
40320 find mustInstanceOfEStructuralFeature_class(problem,interpretation,from);
40321 BooleanElement(to);
40322 find mayInRelationvolatile_attribute_EStructuralFeature(problem,interpretation,from,to);
40323 neg find mustInRelationvolatile_attribute_EStructuralFeature(problem,interpretation,from,to);
40324}
40325pattern refineRelation_transient_attribute_EStructuralFeature(
40326 problem:LogicProblem, interpretation:PartialInterpretation,
40327 relationIterpretation:PartialRelationInterpretation,
40328 from: DefinedElement, to: DefinedElement)
40329{
40330 find interpretation(problem,interpretation);
40331 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
40332 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"transient attribute EStructuralFeature");
40333 find mustExist(problem, interpretation, from);
40334 find mustExist(problem, interpretation, to);
40335 find mustInstanceOfEStructuralFeature_class(problem,interpretation,from);
40336 BooleanElement(to);
40337 find mayInRelationtransient_attribute_EStructuralFeature(problem,interpretation,from,to);
40338 neg find mustInRelationtransient_attribute_EStructuralFeature(problem,interpretation,from,to);
40339}
40340pattern refineRelation_defaultValueLiteral_attribute_EStructuralFeature(
40341 problem:LogicProblem, interpretation:PartialInterpretation,
40342 relationIterpretation:PartialRelationInterpretation,
40343 from: DefinedElement, to: DefinedElement)
40344{
40345 find interpretation(problem,interpretation);
40346 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
40347 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"defaultValueLiteral attribute EStructuralFeature");
40348 find mustExist(problem, interpretation, from);
40349 find mustExist(problem, interpretation, to);
40350 find mustInstanceOfEStructuralFeature_class(problem,interpretation,from);
40351 StringElement(to);
40352 find mayInRelationdefaultValueLiteral_attribute_EStructuralFeature(problem,interpretation,from,to);
40353 neg find mustInRelationdefaultValueLiteral_attribute_EStructuralFeature(problem,interpretation,from,to);
40354}
40355pattern refineRelation_unsettable_attribute_EStructuralFeature(
40356 problem:LogicProblem, interpretation:PartialInterpretation,
40357 relationIterpretation:PartialRelationInterpretation,
40358 from: DefinedElement, to: DefinedElement)
40359{
40360 find interpretation(problem,interpretation);
40361 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
40362 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"unsettable attribute EStructuralFeature");
40363 find mustExist(problem, interpretation, from);
40364 find mustExist(problem, interpretation, to);
40365 find mustInstanceOfEStructuralFeature_class(problem,interpretation,from);
40366 BooleanElement(to);
40367 find mayInRelationunsettable_attribute_EStructuralFeature(problem,interpretation,from,to);
40368 neg find mustInRelationunsettable_attribute_EStructuralFeature(problem,interpretation,from,to);
40369}
40370pattern refineRelation_derived_attribute_EStructuralFeature(
40371 problem:LogicProblem, interpretation:PartialInterpretation,
40372 relationIterpretation:PartialRelationInterpretation,
40373 from: DefinedElement, to: DefinedElement)
40374{
40375 find interpretation(problem,interpretation);
40376 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
40377 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"derived attribute EStructuralFeature");
40378 find mustExist(problem, interpretation, from);
40379 find mustExist(problem, interpretation, to);
40380 find mustInstanceOfEStructuralFeature_class(problem,interpretation,from);
40381 BooleanElement(to);
40382 find mayInRelationderived_attribute_EStructuralFeature(problem,interpretation,from,to);
40383 neg find mustInRelationderived_attribute_EStructuralFeature(problem,interpretation,from,to);
40384}
40385pattern refineRelation_ordered_attribute_ETypedElement(
40386 problem:LogicProblem, interpretation:PartialInterpretation,
40387 relationIterpretation:PartialRelationInterpretation,
40388 from: DefinedElement, to: DefinedElement)
40389{
40390 find interpretation(problem,interpretation);
40391 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
40392 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"ordered attribute ETypedElement");
40393 find mustExist(problem, interpretation, from);
40394 find mustExist(problem, interpretation, to);
40395 find mustInstanceOfETypedElement_class(problem,interpretation,from);
40396 BooleanElement(to);
40397 find mayInRelationordered_attribute_ETypedElement(problem,interpretation,from,to);
40398 neg find mustInRelationordered_attribute_ETypedElement(problem,interpretation,from,to);
40399}
40400pattern refineRelation_unique_attribute_ETypedElement(
40401 problem:LogicProblem, interpretation:PartialInterpretation,
40402 relationIterpretation:PartialRelationInterpretation,
40403 from: DefinedElement, to: DefinedElement)
40404{
40405 find interpretation(problem,interpretation);
40406 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
40407 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"unique attribute ETypedElement");
40408 find mustExist(problem, interpretation, from);
40409 find mustExist(problem, interpretation, to);
40410 find mustInstanceOfETypedElement_class(problem,interpretation,from);
40411 BooleanElement(to);
40412 find mayInRelationunique_attribute_ETypedElement(problem,interpretation,from,to);
40413 neg find mustInRelationunique_attribute_ETypedElement(problem,interpretation,from,to);
40414}
40415pattern refineRelation_lowerBound_attribute_ETypedElement(
40416 problem:LogicProblem, interpretation:PartialInterpretation,
40417 relationIterpretation:PartialRelationInterpretation,
40418 from: DefinedElement, to: DefinedElement)
40419{
40420 find interpretation(problem,interpretation);
40421 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
40422 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"lowerBound attribute ETypedElement");
40423 find mustExist(problem, interpretation, from);
40424 find mustExist(problem, interpretation, to);
40425 find mustInstanceOfETypedElement_class(problem,interpretation,from);
40426 IntegerElement(to);
40427 find mayInRelationlowerBound_attribute_ETypedElement(problem,interpretation,from,to);
40428 neg find mustInRelationlowerBound_attribute_ETypedElement(problem,interpretation,from,to);
40429}
40430pattern refineRelation_upperBound_attribute_ETypedElement(
40431 problem:LogicProblem, interpretation:PartialInterpretation,
40432 relationIterpretation:PartialRelationInterpretation,
40433 from: DefinedElement, to: DefinedElement)
40434{
40435 find interpretation(problem,interpretation);
40436 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
40437 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"upperBound attribute ETypedElement");
40438 find mustExist(problem, interpretation, from);
40439 find mustExist(problem, interpretation, to);
40440 find mustInstanceOfETypedElement_class(problem,interpretation,from);
40441 IntegerElement(to);
40442 find mayInRelationupperBound_attribute_ETypedElement(problem,interpretation,from,to);
40443 neg find mustInRelationupperBound_attribute_ETypedElement(problem,interpretation,from,to);
40444}
40445pattern refineRelation_many_attribute_ETypedElement(
40446 problem:LogicProblem, interpretation:PartialInterpretation,
40447 relationIterpretation:PartialRelationInterpretation,
40448 from: DefinedElement, to: DefinedElement)
40449{
40450 find interpretation(problem,interpretation);
40451 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
40452 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"many attribute ETypedElement");
40453 find mustExist(problem, interpretation, from);
40454 find mustExist(problem, interpretation, to);
40455 find mustInstanceOfETypedElement_class(problem,interpretation,from);
40456 BooleanElement(to);
40457 find mayInRelationmany_attribute_ETypedElement(problem,interpretation,from,to);
40458 neg find mustInRelationmany_attribute_ETypedElement(problem,interpretation,from,to);
40459}
40460pattern refineRelation_required_attribute_ETypedElement(
40461 problem:LogicProblem, interpretation:PartialInterpretation,
40462 relationIterpretation:PartialRelationInterpretation,
40463 from: DefinedElement, to: DefinedElement)
40464{
40465 find interpretation(problem,interpretation);
40466 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
40467 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"required attribute ETypedElement");
40468 find mustExist(problem, interpretation, from);
40469 find mustExist(problem, interpretation, to);
40470 find mustInstanceOfETypedElement_class(problem,interpretation,from);
40471 BooleanElement(to);
40472 find mayInRelationrequired_attribute_ETypedElement(problem,interpretation,from,to);
40473 neg find mustInRelationrequired_attribute_ETypedElement(problem,interpretation,from,to);
40474}
40475pattern refineRelation_key_attribute_EStringToStringMapEntry(
40476 problem:LogicProblem, interpretation:PartialInterpretation,
40477 relationIterpretation:PartialRelationInterpretation,
40478 from: DefinedElement, to: DefinedElement)
40479{
40480 find interpretation(problem,interpretation);
40481 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
40482 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"key attribute EStringToStringMapEntry");
40483 find mustExist(problem, interpretation, from);
40484 find mustExist(problem, interpretation, to);
40485 find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,from);
40486 StringElement(to);
40487 find mayInRelationkey_attribute_EStringToStringMapEntry(problem,interpretation,from,to);
40488 neg find mustInRelationkey_attribute_EStringToStringMapEntry(problem,interpretation,from,to);
40489}
40490pattern refineRelation_value_attribute_EStringToStringMapEntry(
40491 problem:LogicProblem, interpretation:PartialInterpretation,
40492 relationIterpretation:PartialRelationInterpretation,
40493 from: DefinedElement, to: DefinedElement)
40494{
40495 find interpretation(problem,interpretation);
40496 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
40497 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"value attribute EStringToStringMapEntry");
40498 find mustExist(problem, interpretation, from);
40499 find mustExist(problem, interpretation, to);
40500 find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,from);
40501 StringElement(to);
40502 find mayInRelationvalue_attribute_EStringToStringMapEntry(problem,interpretation,from,to);
40503 neg find mustInRelationvalue_attribute_EStringToStringMapEntry(problem,interpretation,from,to);
40504}
40505import epackage "http://www.bme.hu/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage"
40506import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/problem"
40507import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/language"
40508
40509//////////
40510// 0. Util
40511//////////
40512private pattern interpretation(problem:LogicProblem, interpretation:PartialInterpretation) {
40513 PartialInterpretation.problem(interpretation,problem);
40514}
40515
40516/////////////////////////
40517// 0.1 Existence
40518/////////////////////////
40519private pattern mustExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
40520 find interpretation(problem,interpretation);
40521 LogicProblem.elements(problem,element);
40522} or {
40523 find interpretation(problem,interpretation);
40524 PartialInterpretation.newElements(interpretation,element);
40525}
40526
40527private pattern mayExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
40528 find mustExist(problem,interpretation,element);
40529} or {
40530 find interpretation(problem,interpretation);
40531 neg find elementCloseWorld(element);
40532 PartialInterpretation.openWorldElements(interpretation,element);
40533}
40534
40535private pattern elementCloseWorld(element:DefinedElement) {
40536 PartialInterpretation.openWorldElements(i,element);
40537 PartialInterpretation.maxNewElements(i,0);
40538} or {
40539 Scope.targetTypeInterpretation(scope,interpretation);
40540 PartialTypeInterpratation.elements(interpretation,element);
40541 Scope.maxNewElements(scope,0);
40542}
40543
40544////////////////////////
40545// 0.2 Equivalence
40546////////////////////////
40547pattern mayEquivalent(problem:LogicProblem, interpretation:PartialInterpretation, a: DefinedElement, b: DefinedElement) {
40548 find mayExist(problem,interpretation,a);
40549 find mayExist(problem,interpretation,b);
40550 a == b;
40551}
40552
40553////////////////////////
40554// 0.3 Required Patterns by TypeIndexer
40555////////////////////////
40556private pattern typeInterpretation(problem:LogicProblem, interpretation:PartialInterpretation, type:TypeDeclaration, typeInterpretation:PartialComplexTypeInterpretation) {
40557 find interpretation(problem,interpretation);
40558 LogicProblem.types(problem,type);
40559 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
40560 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
40561}
40562
40563private pattern directInstanceOf(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement, type:Type) {
40564 find interpretation(problem,interpretation);
40565 LogicProblem.types(problem,type);
40566 TypeDefinition.elements(type,element);
40567} or {
40568 find interpretation(problem,interpretation);
40569 find typeInterpretation(problem,interpretation,type,typeInterpretation);
40570 PartialComplexTypeInterpretation.elements(typeInterpretation,element);
40571}
40572
40573private pattern isPrimitive(element: PrimitiveElement) {
40574 PrimitiveElement(element);
40575}
40576
40577//////////
40578// 1. Problem-Specific Base Indexers
40579//////////
40580// 1.1 Type Indexers
40581//////////
40582// 1.1.1 primitive Type Indexers
40583//////////
40584
40585//////////
40586// 1.1.2 domain-specific Type Indexers
40587//////////
40588/**
40589 * An element must be an instance of type "EAttribute class".
40590 */
40591private pattern mustInstanceOfEAttribute_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
40592 Type.name(type,"EAttribute class");
40593 find directInstanceOf(problem,interpretation,element,type);
40594}
40595private pattern scopeDisallowsNewEAttribute_class(problem:LogicProblem, interpretation:PartialInterpretation) {
40596 find interpretation(problem,interpretation);
40597 PartialInterpretation.scopes(interpretation,scope);
40598 Scope.targetTypeInterpretation(scope,typeInterpretation);
40599 Scope.maxNewElements(scope,0);
40600 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
40601 Type.name(type,"EAttribute class");
40602}
40603
40604/**
40605 * An element may be an instance of type "EAttribute class".
40606 */
40607private pattern mayInstanceOfEAttribute_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
40608{
40609 find interpretation(problem,interpretation);
40610 PartialInterpretation.newElements(interpretation,element);
40611 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
40612 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
40613 neg find mustInstanceOfEObject_class(problem,interpretation,element);
40614 neg find mustInstanceOfEReference_class(problem,interpretation,element);
40615 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
40616 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
40617 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
40618 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
40619 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
40620 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
40621 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
40622 neg find scopeDisallowsNewEAttribute_class(problem, interpretation);
40623 neg find isPrimitive(element);
40624} or {
40625 find interpretation(problem,interpretation);
40626 PartialInterpretation.openWorldElements(interpretation,element);
40627 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
40628 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
40629 neg find mustInstanceOfEObject_class(problem,interpretation,element);
40630 neg find mustInstanceOfEReference_class(problem,interpretation,element);
40631 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
40632 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
40633 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
40634 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
40635 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
40636 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
40637 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
40638 neg find scopeDisallowsNewEAttribute_class(problem, interpretation);
40639 neg find isPrimitive(element);
40640} or
40641{ find mustInstanceOfEAttribute_class(problem,interpretation,element); }
40642/**
40643 * An element must be an instance of type "EAnnotation class".
40644 */
40645private pattern mustInstanceOfEAnnotation_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
40646 Type.name(type,"EAnnotation class");
40647 find directInstanceOf(problem,interpretation,element,type);
40648}
40649private pattern scopeDisallowsNewEAnnotation_class(problem:LogicProblem, interpretation:PartialInterpretation) {
40650 find interpretation(problem,interpretation);
40651 PartialInterpretation.scopes(interpretation,scope);
40652 Scope.targetTypeInterpretation(scope,typeInterpretation);
40653 Scope.maxNewElements(scope,0);
40654 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
40655 Type.name(type,"EAnnotation class");
40656}
40657
40658/**
40659 * An element may be an instance of type "EAnnotation class".
40660 */
40661private pattern mayInstanceOfEAnnotation_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
40662{
40663 find interpretation(problem,interpretation);
40664 PartialInterpretation.newElements(interpretation,element);
40665 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
40666 neg find mustInstanceOfEObject_class(problem,interpretation,element);
40667 neg find mustInstanceOfENamedElement_class(problem,interpretation,element);
40668 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
40669 neg find scopeDisallowsNewEAnnotation_class(problem, interpretation);
40670 neg find isPrimitive(element);
40671} or {
40672 find interpretation(problem,interpretation);
40673 PartialInterpretation.openWorldElements(interpretation,element);
40674 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
40675 neg find mustInstanceOfEObject_class(problem,interpretation,element);
40676 neg find mustInstanceOfENamedElement_class(problem,interpretation,element);
40677 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
40678 neg find scopeDisallowsNewEAnnotation_class(problem, interpretation);
40679 neg find isPrimitive(element);
40680} or
40681{ find mustInstanceOfEAnnotation_class(problem,interpretation,element); }
40682/**
40683 * An element must be an instance of type "EClass class".
40684 */
40685private pattern mustInstanceOfEClass_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
40686 Type.name(type,"EClass class");
40687 find directInstanceOf(problem,interpretation,element,type);
40688}
40689private pattern scopeDisallowsNewEClass_class(problem:LogicProblem, interpretation:PartialInterpretation) {
40690 find interpretation(problem,interpretation);
40691 PartialInterpretation.scopes(interpretation,scope);
40692 Scope.targetTypeInterpretation(scope,typeInterpretation);
40693 Scope.maxNewElements(scope,0);
40694 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
40695 Type.name(type,"EClass class");
40696}
40697
40698/**
40699 * An element may be an instance of type "EClass class".
40700 */
40701private pattern mayInstanceOfEClass_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
40702{
40703 find interpretation(problem,interpretation);
40704 PartialInterpretation.newElements(interpretation,element);
40705 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
40706 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
40707 neg find mustInstanceOfEObject_class(problem,interpretation,element);
40708 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
40709 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
40710 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
40711 neg find mustInstanceOfEDataType_class(problem,interpretation,element);
40712 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
40713 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
40714 neg find scopeDisallowsNewEClass_class(problem, interpretation);
40715 neg find isPrimitive(element);
40716} or {
40717 find interpretation(problem,interpretation);
40718 PartialInterpretation.openWorldElements(interpretation,element);
40719 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
40720 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
40721 neg find mustInstanceOfEObject_class(problem,interpretation,element);
40722 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
40723 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
40724 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
40725 neg find mustInstanceOfEDataType_class(problem,interpretation,element);
40726 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
40727 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
40728 neg find scopeDisallowsNewEClass_class(problem, interpretation);
40729 neg find isPrimitive(element);
40730} or
40731{ find mustInstanceOfEClass_class(problem,interpretation,element); }
40732/**
40733 * An element must be an instance of type "EClassifier class".
40734 */
40735private pattern mustInstanceOfEClassifier_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
40736 Type.name(type,"EClassifier class");
40737 find directInstanceOf(problem,interpretation,element,type);
40738}
40739private pattern scopeDisallowsNewEClassifier_class(problem:LogicProblem, interpretation:PartialInterpretation) {
40740 find interpretation(problem,interpretation);
40741 PartialInterpretation.scopes(interpretation,scope);
40742 Scope.targetTypeInterpretation(scope,typeInterpretation);
40743 Scope.maxNewElements(scope,0);
40744 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
40745 Type.name(type,"EClassifier class");
40746}
40747
40748/**
40749 * An element may be an instance of type "EClassifier class".
40750 */
40751private pattern mayInstanceOfEClassifier_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
40752{
40753 find interpretation(problem,interpretation);
40754 PartialInterpretation.newElements(interpretation,element);
40755 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
40756 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
40757 neg find mustInstanceOfEObject_class(problem,interpretation,element);
40758 neg find mustInstanceOfEClass_class(problem,interpretation,element);
40759 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
40760 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
40761 neg find mustInstanceOfEDataType_class(problem,interpretation,element);
40762 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
40763 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
40764 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
40765 neg find scopeDisallowsNewEClassifier_class(problem, interpretation);
40766 neg find isPrimitive(element);
40767} or {
40768 find interpretation(problem,interpretation);
40769 PartialInterpretation.openWorldElements(interpretation,element);
40770 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
40771 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
40772 neg find mustInstanceOfEObject_class(problem,interpretation,element);
40773 neg find mustInstanceOfEClass_class(problem,interpretation,element);
40774 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
40775 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
40776 neg find mustInstanceOfEDataType_class(problem,interpretation,element);
40777 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
40778 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
40779 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
40780 neg find scopeDisallowsNewEClassifier_class(problem, interpretation);
40781 neg find isPrimitive(element);
40782} or
40783{ find mustInstanceOfEClassifier_class(problem,interpretation,element); }
40784/**
40785 * An element must be an instance of type "EDataType class".
40786 */
40787private pattern mustInstanceOfEDataType_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
40788 Type.name(type,"EDataType class");
40789 find directInstanceOf(problem,interpretation,element,type);
40790}
40791private pattern scopeDisallowsNewEDataType_class(problem:LogicProblem, interpretation:PartialInterpretation) {
40792 find interpretation(problem,interpretation);
40793 PartialInterpretation.scopes(interpretation,scope);
40794 Scope.targetTypeInterpretation(scope,typeInterpretation);
40795 Scope.maxNewElements(scope,0);
40796 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
40797 Type.name(type,"EDataType class");
40798}
40799
40800/**
40801 * An element may be an instance of type "EDataType class".
40802 */
40803private pattern mayInstanceOfEDataType_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
40804{
40805 find interpretation(problem,interpretation);
40806 PartialInterpretation.newElements(interpretation,element);
40807 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
40808 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
40809 neg find mustInstanceOfEEnum_class(problem,interpretation,element);
40810 neg find mustInstanceOfEObject_class(problem,interpretation,element);
40811 neg find mustInstanceOfEClass_class(problem,interpretation,element);
40812 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
40813 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
40814 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
40815 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
40816 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
40817 neg find scopeDisallowsNewEDataType_class(problem, interpretation);
40818 neg find isPrimitive(element);
40819} or {
40820 find interpretation(problem,interpretation);
40821 PartialInterpretation.openWorldElements(interpretation,element);
40822 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
40823 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
40824 neg find mustInstanceOfEEnum_class(problem,interpretation,element);
40825 neg find mustInstanceOfEObject_class(problem,interpretation,element);
40826 neg find mustInstanceOfEClass_class(problem,interpretation,element);
40827 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
40828 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
40829 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
40830 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
40831 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
40832 neg find scopeDisallowsNewEDataType_class(problem, interpretation);
40833 neg find isPrimitive(element);
40834} or
40835{ find mustInstanceOfEDataType_class(problem,interpretation,element); }
40836/**
40837 * An element must be an instance of type "EEnum class".
40838 */
40839private pattern mustInstanceOfEEnum_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
40840 Type.name(type,"EEnum class");
40841 find directInstanceOf(problem,interpretation,element,type);
40842}
40843private pattern scopeDisallowsNewEEnum_class(problem:LogicProblem, interpretation:PartialInterpretation) {
40844 find interpretation(problem,interpretation);
40845 PartialInterpretation.scopes(interpretation,scope);
40846 Scope.targetTypeInterpretation(scope,typeInterpretation);
40847 Scope.maxNewElements(scope,0);
40848 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
40849 Type.name(type,"EEnum class");
40850}
40851
40852/**
40853 * An element may be an instance of type "EEnum class".
40854 */
40855private pattern mayInstanceOfEEnum_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
40856{
40857 find interpretation(problem,interpretation);
40858 PartialInterpretation.newElements(interpretation,element);
40859 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
40860 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
40861 neg find mustInstanceOfEObject_class(problem,interpretation,element);
40862 neg find mustInstanceOfEClass_class(problem,interpretation,element);
40863 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
40864 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
40865 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
40866 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
40867 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
40868 neg find scopeDisallowsNewEEnum_class(problem, interpretation);
40869 neg find isPrimitive(element);
40870} or {
40871 find interpretation(problem,interpretation);
40872 PartialInterpretation.openWorldElements(interpretation,element);
40873 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
40874 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
40875 neg find mustInstanceOfEObject_class(problem,interpretation,element);
40876 neg find mustInstanceOfEClass_class(problem,interpretation,element);
40877 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
40878 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
40879 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
40880 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
40881 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
40882 neg find scopeDisallowsNewEEnum_class(problem, interpretation);
40883 neg find isPrimitive(element);
40884} or
40885{ find mustInstanceOfEEnum_class(problem,interpretation,element); }
40886/**
40887 * An element must be an instance of type "EEnumLiteral class".
40888 */
40889private pattern mustInstanceOfEEnumLiteral_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
40890 Type.name(type,"EEnumLiteral class");
40891 find directInstanceOf(problem,interpretation,element,type);
40892}
40893private pattern scopeDisallowsNewEEnumLiteral_class(problem:LogicProblem, interpretation:PartialInterpretation) {
40894 find interpretation(problem,interpretation);
40895 PartialInterpretation.scopes(interpretation,scope);
40896 Scope.targetTypeInterpretation(scope,typeInterpretation);
40897 Scope.maxNewElements(scope,0);
40898 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
40899 Type.name(type,"EEnumLiteral class");
40900}
40901
40902/**
40903 * An element may be an instance of type "EEnumLiteral class".
40904 */
40905private pattern mayInstanceOfEEnumLiteral_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
40906{
40907 find interpretation(problem,interpretation);
40908 PartialInterpretation.newElements(interpretation,element);
40909 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
40910 neg find mustInstanceOfEObject_class(problem,interpretation,element);
40911 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
40912 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
40913 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
40914 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
40915 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
40916 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
40917 neg find scopeDisallowsNewEEnumLiteral_class(problem, interpretation);
40918 neg find isPrimitive(element);
40919} or {
40920 find interpretation(problem,interpretation);
40921 PartialInterpretation.openWorldElements(interpretation,element);
40922 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
40923 neg find mustInstanceOfEObject_class(problem,interpretation,element);
40924 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
40925 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
40926 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
40927 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
40928 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
40929 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
40930 neg find scopeDisallowsNewEEnumLiteral_class(problem, interpretation);
40931 neg find isPrimitive(element);
40932} or
40933{ find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); }
40934/**
40935 * An element must be an instance of type "EModelElement class".
40936 */
40937private pattern mustInstanceOfEModelElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
40938 Type.name(type,"EModelElement class");
40939 find directInstanceOf(problem,interpretation,element,type);
40940}
40941private pattern scopeDisallowsNewEModelElement_class(problem:LogicProblem, interpretation:PartialInterpretation) {
40942 find interpretation(problem,interpretation);
40943 PartialInterpretation.scopes(interpretation,scope);
40944 Scope.targetTypeInterpretation(scope,typeInterpretation);
40945 Scope.maxNewElements(scope,0);
40946 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
40947 Type.name(type,"EModelElement class");
40948}
40949
40950/**
40951 * An element may be an instance of type "EModelElement class".
40952 */
40953private pattern mayInstanceOfEModelElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
40954{
40955 find interpretation(problem,interpretation);
40956 PartialInterpretation.newElements(interpretation,element);
40957 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
40958 neg find mustInstanceOfEObject_class(problem,interpretation,element);
40959 neg find mustInstanceOfENamedElement_class(problem,interpretation,element);
40960 neg find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,element);
40961 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
40962 neg find scopeDisallowsNewEModelElement_class(problem, interpretation);
40963 neg find isPrimitive(element);
40964} or {
40965 find interpretation(problem,interpretation);
40966 PartialInterpretation.openWorldElements(interpretation,element);
40967 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
40968 neg find mustInstanceOfEObject_class(problem,interpretation,element);
40969 neg find mustInstanceOfENamedElement_class(problem,interpretation,element);
40970 neg find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,element);
40971 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
40972 neg find scopeDisallowsNewEModelElement_class(problem, interpretation);
40973 neg find isPrimitive(element);
40974} or
40975{ find mustInstanceOfEModelElement_class(problem,interpretation,element); }
40976/**
40977 * An element must be an instance of type "ENamedElement class".
40978 */
40979private pattern mustInstanceOfENamedElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
40980 Type.name(type,"ENamedElement class");
40981 find directInstanceOf(problem,interpretation,element,type);
40982}
40983private pattern scopeDisallowsNewENamedElement_class(problem:LogicProblem, interpretation:PartialInterpretation) {
40984 find interpretation(problem,interpretation);
40985 PartialInterpretation.scopes(interpretation,scope);
40986 Scope.targetTypeInterpretation(scope,typeInterpretation);
40987 Scope.maxNewElements(scope,0);
40988 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
40989 Type.name(type,"ENamedElement class");
40990}
40991
40992/**
40993 * An element may be an instance of type "ENamedElement class".
40994 */
40995private pattern mayInstanceOfENamedElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
40996{
40997 find interpretation(problem,interpretation);
40998 PartialInterpretation.newElements(interpretation,element);
40999 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
41000 neg find mustInstanceOfEObject_class(problem,interpretation,element);
41001 neg find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,element);
41002 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
41003 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
41004 neg find scopeDisallowsNewENamedElement_class(problem, interpretation);
41005 neg find isPrimitive(element);
41006} or {
41007 find interpretation(problem,interpretation);
41008 PartialInterpretation.openWorldElements(interpretation,element);
41009 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
41010 neg find mustInstanceOfEObject_class(problem,interpretation,element);
41011 neg find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,element);
41012 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
41013 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
41014 neg find scopeDisallowsNewENamedElement_class(problem, interpretation);
41015 neg find isPrimitive(element);
41016} or
41017{ find mustInstanceOfENamedElement_class(problem,interpretation,element); }
41018/**
41019 * An element must be an instance of type "EObject class".
41020 */
41021private pattern mustInstanceOfEObject_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
41022 Type.name(type,"EObject class");
41023 find directInstanceOf(problem,interpretation,element,type);
41024}
41025private pattern scopeDisallowsNewEObject_class(problem:LogicProblem, interpretation:PartialInterpretation) {
41026 find interpretation(problem,interpretation);
41027 PartialInterpretation.scopes(interpretation,scope);
41028 Scope.targetTypeInterpretation(scope,typeInterpretation);
41029 Scope.maxNewElements(scope,0);
41030 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
41031 Type.name(type,"EObject class");
41032}
41033
41034/**
41035 * An element may be an instance of type "EObject class".
41036 */
41037private pattern mayInstanceOfEObject_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
41038{
41039 find interpretation(problem,interpretation);
41040 PartialInterpretation.newElements(interpretation,element);
41041 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
41042 neg find mustInstanceOfEModelElement_class(problem,interpretation,element);
41043 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
41044 neg find scopeDisallowsNewEObject_class(problem, interpretation);
41045 neg find isPrimitive(element);
41046} or {
41047 find interpretation(problem,interpretation);
41048 PartialInterpretation.openWorldElements(interpretation,element);
41049 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
41050 neg find mustInstanceOfEModelElement_class(problem,interpretation,element);
41051 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
41052 neg find scopeDisallowsNewEObject_class(problem, interpretation);
41053 neg find isPrimitive(element);
41054} or
41055{ find mustInstanceOfEObject_class(problem,interpretation,element); }
41056/**
41057 * An element must be an instance of type "EOperation class".
41058 */
41059private pattern mustInstanceOfEOperation_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
41060 Type.name(type,"EOperation class");
41061 find directInstanceOf(problem,interpretation,element,type);
41062}
41063private pattern scopeDisallowsNewEOperation_class(problem:LogicProblem, interpretation:PartialInterpretation) {
41064 find interpretation(problem,interpretation);
41065 PartialInterpretation.scopes(interpretation,scope);
41066 Scope.targetTypeInterpretation(scope,typeInterpretation);
41067 Scope.maxNewElements(scope,0);
41068 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
41069 Type.name(type,"EOperation class");
41070}
41071
41072/**
41073 * An element may be an instance of type "EOperation class".
41074 */
41075private pattern mayInstanceOfEOperation_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
41076{
41077 find interpretation(problem,interpretation);
41078 PartialInterpretation.newElements(interpretation,element);
41079 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
41080 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
41081 neg find mustInstanceOfEObject_class(problem,interpretation,element);
41082 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
41083 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
41084 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
41085 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
41086 neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element);
41087 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
41088 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
41089 neg find scopeDisallowsNewEOperation_class(problem, interpretation);
41090 neg find isPrimitive(element);
41091} or {
41092 find interpretation(problem,interpretation);
41093 PartialInterpretation.openWorldElements(interpretation,element);
41094 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
41095 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
41096 neg find mustInstanceOfEObject_class(problem,interpretation,element);
41097 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
41098 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
41099 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
41100 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
41101 neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element);
41102 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
41103 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
41104 neg find scopeDisallowsNewEOperation_class(problem, interpretation);
41105 neg find isPrimitive(element);
41106} or
41107{ find mustInstanceOfEOperation_class(problem,interpretation,element); }
41108/**
41109 * An element must be an instance of type "EPackage class".
41110 */
41111private pattern mustInstanceOfEPackage_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
41112 Type.name(type,"EPackage class");
41113 find directInstanceOf(problem,interpretation,element,type);
41114}
41115private pattern scopeDisallowsNewEPackage_class(problem:LogicProblem, interpretation:PartialInterpretation) {
41116 find interpretation(problem,interpretation);
41117 PartialInterpretation.scopes(interpretation,scope);
41118 Scope.targetTypeInterpretation(scope,typeInterpretation);
41119 Scope.maxNewElements(scope,0);
41120 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
41121 Type.name(type,"EPackage class");
41122}
41123
41124/**
41125 * An element may be an instance of type "EPackage class".
41126 */
41127private pattern mayInstanceOfEPackage_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
41128{
41129 find interpretation(problem,interpretation);
41130 PartialInterpretation.newElements(interpretation,element);
41131 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
41132 neg find mustInstanceOfEObject_class(problem,interpretation,element);
41133 neg find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,element);
41134 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
41135 neg find scopeDisallowsNewEPackage_class(problem, interpretation);
41136 neg find isPrimitive(element);
41137} or {
41138 find interpretation(problem,interpretation);
41139 PartialInterpretation.openWorldElements(interpretation,element);
41140 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
41141 neg find mustInstanceOfEObject_class(problem,interpretation,element);
41142 neg find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,element);
41143 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
41144 neg find scopeDisallowsNewEPackage_class(problem, interpretation);
41145 neg find isPrimitive(element);
41146} or
41147{ find mustInstanceOfEPackage_class(problem,interpretation,element); }
41148/**
41149 * An element must be an instance of type "EParameter class".
41150 */
41151private pattern mustInstanceOfEParameter_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
41152 Type.name(type,"EParameter class");
41153 find directInstanceOf(problem,interpretation,element,type);
41154}
41155private pattern scopeDisallowsNewEParameter_class(problem:LogicProblem, interpretation:PartialInterpretation) {
41156 find interpretation(problem,interpretation);
41157 PartialInterpretation.scopes(interpretation,scope);
41158 Scope.targetTypeInterpretation(scope,typeInterpretation);
41159 Scope.maxNewElements(scope,0);
41160 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
41161 Type.name(type,"EParameter class");
41162}
41163
41164/**
41165 * An element may be an instance of type "EParameter class".
41166 */
41167private pattern mayInstanceOfEParameter_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
41168{
41169 find interpretation(problem,interpretation);
41170 PartialInterpretation.newElements(interpretation,element);
41171 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
41172 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
41173 neg find mustInstanceOfEObject_class(problem,interpretation,element);
41174 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
41175 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
41176 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
41177 neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element);
41178 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
41179 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
41180 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
41181 neg find scopeDisallowsNewEParameter_class(problem, interpretation);
41182 neg find isPrimitive(element);
41183} or {
41184 find interpretation(problem,interpretation);
41185 PartialInterpretation.openWorldElements(interpretation,element);
41186 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
41187 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
41188 neg find mustInstanceOfEObject_class(problem,interpretation,element);
41189 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
41190 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
41191 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
41192 neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element);
41193 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
41194 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
41195 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
41196 neg find scopeDisallowsNewEParameter_class(problem, interpretation);
41197 neg find isPrimitive(element);
41198} or
41199{ find mustInstanceOfEParameter_class(problem,interpretation,element); }
41200/**
41201 * An element must be an instance of type "EReference class".
41202 */
41203private pattern mustInstanceOfEReference_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
41204 Type.name(type,"EReference class");
41205 find directInstanceOf(problem,interpretation,element,type);
41206}
41207private pattern scopeDisallowsNewEReference_class(problem:LogicProblem, interpretation:PartialInterpretation) {
41208 find interpretation(problem,interpretation);
41209 PartialInterpretation.scopes(interpretation,scope);
41210 Scope.targetTypeInterpretation(scope,typeInterpretation);
41211 Scope.maxNewElements(scope,0);
41212 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
41213 Type.name(type,"EReference class");
41214}
41215
41216/**
41217 * An element may be an instance of type "EReference class".
41218 */
41219private pattern mayInstanceOfEReference_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
41220{
41221 find interpretation(problem,interpretation);
41222 PartialInterpretation.newElements(interpretation,element);
41223 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
41224 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
41225 neg find mustInstanceOfEAttribute_class(problem,interpretation,element);
41226 neg find mustInstanceOfEObject_class(problem,interpretation,element);
41227 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
41228 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
41229 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
41230 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
41231 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
41232 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
41233 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
41234 neg find scopeDisallowsNewEReference_class(problem, interpretation);
41235 neg find isPrimitive(element);
41236} or {
41237 find interpretation(problem,interpretation);
41238 PartialInterpretation.openWorldElements(interpretation,element);
41239 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
41240 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
41241 neg find mustInstanceOfEAttribute_class(problem,interpretation,element);
41242 neg find mustInstanceOfEObject_class(problem,interpretation,element);
41243 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
41244 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
41245 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
41246 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
41247 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
41248 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
41249 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
41250 neg find scopeDisallowsNewEReference_class(problem, interpretation);
41251 neg find isPrimitive(element);
41252} or
41253{ find mustInstanceOfEReference_class(problem,interpretation,element); }
41254/**
41255 * An element must be an instance of type "EStructuralFeature class".
41256 */
41257private pattern mustInstanceOfEStructuralFeature_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
41258 Type.name(type,"EStructuralFeature class");
41259 find directInstanceOf(problem,interpretation,element,type);
41260}
41261private pattern scopeDisallowsNewEStructuralFeature_class(problem:LogicProblem, interpretation:PartialInterpretation) {
41262 find interpretation(problem,interpretation);
41263 PartialInterpretation.scopes(interpretation,scope);
41264 Scope.targetTypeInterpretation(scope,typeInterpretation);
41265 Scope.maxNewElements(scope,0);
41266 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
41267 Type.name(type,"EStructuralFeature class");
41268}
41269
41270/**
41271 * An element may be an instance of type "EStructuralFeature class".
41272 */
41273private pattern mayInstanceOfEStructuralFeature_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
41274{
41275 find interpretation(problem,interpretation);
41276 PartialInterpretation.newElements(interpretation,element);
41277 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
41278 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
41279 neg find mustInstanceOfEAttribute_class(problem,interpretation,element);
41280 neg find mustInstanceOfEObject_class(problem,interpretation,element);
41281 neg find mustInstanceOfEReference_class(problem,interpretation,element);
41282 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
41283 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
41284 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
41285 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
41286 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
41287 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
41288 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
41289 neg find scopeDisallowsNewEStructuralFeature_class(problem, interpretation);
41290 neg find isPrimitive(element);
41291} or {
41292 find interpretation(problem,interpretation);
41293 PartialInterpretation.openWorldElements(interpretation,element);
41294 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
41295 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
41296 neg find mustInstanceOfEAttribute_class(problem,interpretation,element);
41297 neg find mustInstanceOfEObject_class(problem,interpretation,element);
41298 neg find mustInstanceOfEReference_class(problem,interpretation,element);
41299 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
41300 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
41301 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
41302 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
41303 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
41304 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
41305 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
41306 neg find scopeDisallowsNewEStructuralFeature_class(problem, interpretation);
41307 neg find isPrimitive(element);
41308} or
41309{ find mustInstanceOfEStructuralFeature_class(problem,interpretation,element); }
41310/**
41311 * An element must be an instance of type "ETypedElement class".
41312 */
41313private pattern mustInstanceOfETypedElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
41314 Type.name(type,"ETypedElement class");
41315 find directInstanceOf(problem,interpretation,element,type);
41316}
41317private pattern scopeDisallowsNewETypedElement_class(problem:LogicProblem, interpretation:PartialInterpretation) {
41318 find interpretation(problem,interpretation);
41319 PartialInterpretation.scopes(interpretation,scope);
41320 Scope.targetTypeInterpretation(scope,typeInterpretation);
41321 Scope.maxNewElements(scope,0);
41322 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
41323 Type.name(type,"ETypedElement class");
41324}
41325
41326/**
41327 * An element may be an instance of type "ETypedElement class".
41328 */
41329private pattern mayInstanceOfETypedElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
41330{
41331 find interpretation(problem,interpretation);
41332 PartialInterpretation.newElements(interpretation,element);
41333 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
41334 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
41335 neg find mustInstanceOfEObject_class(problem,interpretation,element);
41336 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
41337 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
41338 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
41339 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
41340 neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element);
41341 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
41342 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
41343 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
41344 neg find scopeDisallowsNewETypedElement_class(problem, interpretation);
41345 neg find isPrimitive(element);
41346} or {
41347 find interpretation(problem,interpretation);
41348 PartialInterpretation.openWorldElements(interpretation,element);
41349 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
41350 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
41351 neg find mustInstanceOfEObject_class(problem,interpretation,element);
41352 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
41353 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
41354 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
41355 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
41356 neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element);
41357 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
41358 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
41359 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
41360 neg find scopeDisallowsNewETypedElement_class(problem, interpretation);
41361 neg find isPrimitive(element);
41362} or
41363{ find mustInstanceOfETypedElement_class(problem,interpretation,element); }
41364/**
41365 * An element must be an instance of type "EStringToStringMapEntry class".
41366 */
41367private pattern mustInstanceOfEStringToStringMapEntry_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
41368 Type.name(type,"EStringToStringMapEntry class");
41369 find directInstanceOf(problem,interpretation,element,type);
41370}
41371private pattern scopeDisallowsNewEStringToStringMapEntry_class(problem:LogicProblem, interpretation:PartialInterpretation) {
41372 find interpretation(problem,interpretation);
41373 PartialInterpretation.scopes(interpretation,scope);
41374 Scope.targetTypeInterpretation(scope,typeInterpretation);
41375 Scope.maxNewElements(scope,0);
41376 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
41377 Type.name(type,"EStringToStringMapEntry class");
41378}
41379
41380/**
41381 * An element may be an instance of type "EStringToStringMapEntry class".
41382 */
41383private pattern mayInstanceOfEStringToStringMapEntry_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
41384{
41385 find interpretation(problem,interpretation);
41386 PartialInterpretation.newElements(interpretation,element);
41387 neg find mustInstanceOfEObject_class(problem,interpretation,element);
41388 neg find mustInstanceOfEModelElement_class(problem,interpretation,element);
41389 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
41390 neg find scopeDisallowsNewEStringToStringMapEntry_class(problem, interpretation);
41391 neg find isPrimitive(element);
41392} or {
41393 find interpretation(problem,interpretation);
41394 PartialInterpretation.openWorldElements(interpretation,element);
41395 neg find mustInstanceOfEObject_class(problem,interpretation,element);
41396 neg find mustInstanceOfEModelElement_class(problem,interpretation,element);
41397 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
41398 neg find scopeDisallowsNewEStringToStringMapEntry_class(problem, interpretation);
41399 neg find isPrimitive(element);
41400} or
41401{ find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); }
41402/**
41403 * An element must be an instance of type "EGenericType class".
41404 */
41405private pattern mustInstanceOfEGenericType_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
41406 Type.name(type,"EGenericType class");
41407 find directInstanceOf(problem,interpretation,element,type);
41408}
41409private pattern scopeDisallowsNewEGenericType_class(problem:LogicProblem, interpretation:PartialInterpretation) {
41410 find interpretation(problem,interpretation);
41411 PartialInterpretation.scopes(interpretation,scope);
41412 Scope.targetTypeInterpretation(scope,typeInterpretation);
41413 Scope.maxNewElements(scope,0);
41414 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
41415 Type.name(type,"EGenericType class");
41416}
41417
41418/**
41419 * An element may be an instance of type "EGenericType class".
41420 */
41421private pattern mayInstanceOfEGenericType_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
41422{
41423 find interpretation(problem,interpretation);
41424 PartialInterpretation.newElements(interpretation,element);
41425 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
41426 neg find mustInstanceOfEObject_class(problem,interpretation,element);
41427 neg find mustInstanceOfEModelElement_class(problem,interpretation,element);
41428 neg find scopeDisallowsNewEGenericType_class(problem, interpretation);
41429 neg find isPrimitive(element);
41430} or {
41431 find interpretation(problem,interpretation);
41432 PartialInterpretation.openWorldElements(interpretation,element);
41433 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
41434 neg find mustInstanceOfEObject_class(problem,interpretation,element);
41435 neg find mustInstanceOfEModelElement_class(problem,interpretation,element);
41436 neg find scopeDisallowsNewEGenericType_class(problem, interpretation);
41437 neg find isPrimitive(element);
41438} or
41439{ find mustInstanceOfEGenericType_class(problem,interpretation,element); }
41440/**
41441 * An element must be an instance of type "ETypeParameter class".
41442 */
41443private pattern mustInstanceOfETypeParameter_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
41444 Type.name(type,"ETypeParameter class");
41445 find directInstanceOf(problem,interpretation,element,type);
41446}
41447private pattern scopeDisallowsNewETypeParameter_class(problem:LogicProblem, interpretation:PartialInterpretation) {
41448 find interpretation(problem,interpretation);
41449 PartialInterpretation.scopes(interpretation,scope);
41450 Scope.targetTypeInterpretation(scope,typeInterpretation);
41451 Scope.maxNewElements(scope,0);
41452 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
41453 Type.name(type,"ETypeParameter class");
41454}
41455
41456/**
41457 * An element may be an instance of type "ETypeParameter class".
41458 */
41459private pattern mayInstanceOfETypeParameter_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
41460{
41461 find interpretation(problem,interpretation);
41462 PartialInterpretation.newElements(interpretation,element);
41463 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
41464 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
41465 neg find mustInstanceOfEObject_class(problem,interpretation,element);
41466 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
41467 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
41468 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
41469 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
41470 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
41471 neg find scopeDisallowsNewETypeParameter_class(problem, interpretation);
41472 neg find isPrimitive(element);
41473} or {
41474 find interpretation(problem,interpretation);
41475 PartialInterpretation.openWorldElements(interpretation,element);
41476 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
41477 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
41478 neg find mustInstanceOfEObject_class(problem,interpretation,element);
41479 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
41480 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
41481 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
41482 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
41483 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
41484 neg find scopeDisallowsNewETypeParameter_class(problem, interpretation);
41485 neg find isPrimitive(element);
41486} or
41487{ find mustInstanceOfETypeParameter_class(problem,interpretation,element); }
41488/**
41489 * An element must be an instance of type "EModelElement class DefinedPart".
41490 */
41491private pattern mustInstanceOfEModelElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
41492 Type.name(type,"EModelElement class DefinedPart");
41493 find directInstanceOf(problem,interpretation,element,type);
41494}
41495private pattern scopeDisallowsNewEModelElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) {
41496 find interpretation(problem,interpretation);
41497 PartialInterpretation.scopes(interpretation,scope);
41498 Scope.targetTypeInterpretation(scope,typeInterpretation);
41499 Scope.maxNewElements(scope,0);
41500 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
41501 Type.name(type,"EModelElement class DefinedPart");
41502}
41503
41504/**
41505 * An element may be an instance of type "EModelElement class DefinedPart".
41506 */
41507private pattern mayInstanceOfEModelElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
41508{ find mustInstanceOfEModelElement_class_DefinedPart(problem,interpretation,element); }
41509/**
41510 * An element must be an instance of type "EModelElement class UndefinedPart".
41511 */
41512private pattern mustInstanceOfEModelElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
41513 Type.name(type,"EModelElement class UndefinedPart");
41514 find directInstanceOf(problem,interpretation,element,type);
41515}
41516private pattern scopeDisallowsNewEModelElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) {
41517 find interpretation(problem,interpretation);
41518 PartialInterpretation.scopes(interpretation,scope);
41519 Scope.targetTypeInterpretation(scope,typeInterpretation);
41520 Scope.maxNewElements(scope,0);
41521 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
41522 Type.name(type,"EModelElement class UndefinedPart");
41523}
41524
41525/**
41526 * An element may be an instance of type "EModelElement class UndefinedPart".
41527 */
41528private pattern mayInstanceOfEModelElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
41529{
41530 find interpretation(problem,interpretation);
41531 PartialInterpretation.newElements(interpretation,element);
41532 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
41533 neg find mustInstanceOfEObject_class(problem,interpretation,element);
41534 neg find mustInstanceOfENamedElement_class(problem,interpretation,element);
41535 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
41536 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
41537 neg find scopeDisallowsNewEModelElement_class_UndefinedPart(problem, interpretation);
41538 neg find isPrimitive(element);
41539} or {
41540 find interpretation(problem,interpretation);
41541 PartialInterpretation.openWorldElements(interpretation,element);
41542 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
41543 neg find mustInstanceOfEObject_class(problem,interpretation,element);
41544 neg find mustInstanceOfENamedElement_class(problem,interpretation,element);
41545 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
41546 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
41547 neg find scopeDisallowsNewEModelElement_class_UndefinedPart(problem, interpretation);
41548 neg find isPrimitive(element);
41549} or
41550{ find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,element); }
41551/**
41552 * An element must be an instance of type "ENamedElement class DefinedPart".
41553 */
41554private pattern mustInstanceOfENamedElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
41555 Type.name(type,"ENamedElement class DefinedPart");
41556 find directInstanceOf(problem,interpretation,element,type);
41557}
41558private pattern scopeDisallowsNewENamedElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) {
41559 find interpretation(problem,interpretation);
41560 PartialInterpretation.scopes(interpretation,scope);
41561 Scope.targetTypeInterpretation(scope,typeInterpretation);
41562 Scope.maxNewElements(scope,0);
41563 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
41564 Type.name(type,"ENamedElement class DefinedPart");
41565}
41566
41567/**
41568 * An element may be an instance of type "ENamedElement class DefinedPart".
41569 */
41570private pattern mayInstanceOfENamedElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
41571{ find mustInstanceOfENamedElement_class_DefinedPart(problem,interpretation,element); }
41572/**
41573 * An element must be an instance of type "ENamedElement class UndefinedPart".
41574 */
41575private pattern mustInstanceOfENamedElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
41576 Type.name(type,"ENamedElement class UndefinedPart");
41577 find directInstanceOf(problem,interpretation,element,type);
41578}
41579private pattern scopeDisallowsNewENamedElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) {
41580 find interpretation(problem,interpretation);
41581 PartialInterpretation.scopes(interpretation,scope);
41582 Scope.targetTypeInterpretation(scope,typeInterpretation);
41583 Scope.maxNewElements(scope,0);
41584 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
41585 Type.name(type,"ENamedElement class UndefinedPart");
41586}
41587
41588/**
41589 * An element may be an instance of type "ENamedElement class UndefinedPart".
41590 */
41591private pattern mayInstanceOfENamedElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
41592{
41593 find interpretation(problem,interpretation);
41594 PartialInterpretation.newElements(interpretation,element);
41595 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
41596 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
41597 neg find mustInstanceOfEObject_class(problem,interpretation,element);
41598 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
41599 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
41600 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
41601 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
41602 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
41603 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
41604 neg find scopeDisallowsNewENamedElement_class_UndefinedPart(problem, interpretation);
41605 neg find isPrimitive(element);
41606} or {
41607 find interpretation(problem,interpretation);
41608 PartialInterpretation.openWorldElements(interpretation,element);
41609 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
41610 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
41611 neg find mustInstanceOfEObject_class(problem,interpretation,element);
41612 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
41613 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
41614 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
41615 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
41616 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
41617 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
41618 neg find scopeDisallowsNewENamedElement_class_UndefinedPart(problem, interpretation);
41619 neg find isPrimitive(element);
41620} or
41621{ find mustInstanceOfENamedElement_class_UndefinedPart(problem,interpretation,element); }
41622/**
41623 * An element must be an instance of type "EPackage class DefinedPart".
41624 */
41625private pattern mustInstanceOfEPackage_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
41626 Type.name(type,"EPackage class DefinedPart");
41627 find directInstanceOf(problem,interpretation,element,type);
41628}
41629private pattern scopeDisallowsNewEPackage_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) {
41630 find interpretation(problem,interpretation);
41631 PartialInterpretation.scopes(interpretation,scope);
41632 Scope.targetTypeInterpretation(scope,typeInterpretation);
41633 Scope.maxNewElements(scope,0);
41634 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
41635 Type.name(type,"EPackage class DefinedPart");
41636}
41637
41638/**
41639 * An element may be an instance of type "EPackage class DefinedPart".
41640 */
41641private pattern mayInstanceOfEPackage_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
41642{ find mustInstanceOfEPackage_class_DefinedPart(problem,interpretation,element); }
41643/**
41644 * An element must be an instance of type "EPackage class UndefinedPart".
41645 */
41646private pattern mustInstanceOfEPackage_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
41647 Type.name(type,"EPackage class UndefinedPart");
41648 find directInstanceOf(problem,interpretation,element,type);
41649}
41650private pattern scopeDisallowsNewEPackage_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) {
41651 find interpretation(problem,interpretation);
41652 PartialInterpretation.scopes(interpretation,scope);
41653 Scope.targetTypeInterpretation(scope,typeInterpretation);
41654 Scope.maxNewElements(scope,0);
41655 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
41656 Type.name(type,"EPackage class UndefinedPart");
41657}
41658
41659/**
41660 * An element may be an instance of type "EPackage class UndefinedPart".
41661 */
41662private pattern mayInstanceOfEPackage_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
41663{
41664 find interpretation(problem,interpretation);
41665 PartialInterpretation.newElements(interpretation,element);
41666 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
41667 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
41668 neg find mustInstanceOfEObject_class(problem,interpretation,element);
41669 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
41670 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
41671 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
41672 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
41673 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
41674 neg find scopeDisallowsNewEPackage_class_UndefinedPart(problem, interpretation);
41675 neg find isPrimitive(element);
41676} or {
41677 find interpretation(problem,interpretation);
41678 PartialInterpretation.openWorldElements(interpretation,element);
41679 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
41680 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
41681 neg find mustInstanceOfEObject_class(problem,interpretation,element);
41682 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
41683 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
41684 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
41685 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
41686 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
41687 neg find scopeDisallowsNewEPackage_class_UndefinedPart(problem, interpretation);
41688 neg find isPrimitive(element);
41689} or
41690{ find mustInstanceOfEPackage_class_UndefinedPart(problem,interpretation,element); }
41691
41692//////////
41693// 1.2 Relation Declaration Indexers
41694//////////
41695/**
41696 * Matcher for detecting tuples t where []eAttributeType reference EAttribute(source,target)
41697 */
41698private pattern mustInRelationeAttributeType_reference_EAttribute(
41699 problem:LogicProblem, interpretation:PartialInterpretation,
41700 source: DefinedElement, target:DefinedElement)
41701{
41702 find interpretation(problem,interpretation);
41703 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
41704 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAttributeType reference EAttribute");
41705 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
41706 BinaryElementRelationLink.param1(link,source);
41707 BinaryElementRelationLink.param2(link,target);
41708}
41709/**
41710 * Matcher for detecting tuples t where <>eAttributeType reference EAttribute(source,target)
41711 */
41712private pattern mayInRelationeAttributeType_reference_EAttribute(
41713 problem:LogicProblem, interpretation:PartialInterpretation,
41714 source: DefinedElement, target:DefinedElement)
41715{
41716 find interpretation(problem,interpretation);
41717 // The two endpoint of the link have to exist
41718 find mayExist(problem, interpretation, source);
41719 find mayExist(problem, interpretation, target);
41720 // Type consistency
41721 find mayInstanceOfEAttribute_class(problem,interpretation,source);
41722 find mayInstanceOfEDataType_class(problem,interpretation,target);
41723 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
41724 // the upper bound of the multiplicity should be considered.
41725 numberOfExistingReferences == count find mustInRelationeAttributeType_reference_EAttribute(problem,interpretation,source,_);
41726 check(numberOfExistingReferences < 1);
41727} or {
41728 find mustInRelationeAttributeType_reference_EAttribute(problem,interpretation,source,target);
41729}
41730/**
41731 * Matcher for detecting tuples t where []details reference EAnnotation(source,target)
41732 */
41733private pattern mustInRelationdetails_reference_EAnnotation(
41734 problem:LogicProblem, interpretation:PartialInterpretation,
41735 source: DefinedElement, target:DefinedElement)
41736{
41737 find interpretation(problem,interpretation);
41738 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
41739 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"details reference EAnnotation");
41740 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
41741 BinaryElementRelationLink.param1(link,source);
41742 BinaryElementRelationLink.param2(link,target);
41743}
41744/**
41745 * Matcher for detecting tuples t where <>details reference EAnnotation(source,target)
41746 */
41747private pattern mayInRelationdetails_reference_EAnnotation(
41748 problem:LogicProblem, interpretation:PartialInterpretation,
41749 source: DefinedElement, target:DefinedElement)
41750{
41751 find interpretation(problem,interpretation);
41752 // The two endpoint of the link have to exist
41753 find mayExist(problem, interpretation, source);
41754 find mayExist(problem, interpretation, target);
41755 // Type consistency
41756 find mayInstanceOfEAnnotation_class(problem,interpretation,source);
41757 find mayInstanceOfEStringToStringMapEntry_class(problem,interpretation,target);
41758 // The reference is containment, then a new reference cannot be create if:
41759 // 1. Multiple parents
41760 neg find mustContains4(problem,interpretation,_,target);
41761 // 2. Circle in the containment hierarchy
41762 neg find mustTransitiveContains(source,target);
41763} or {
41764 find mustInRelationdetails_reference_EAnnotation(problem,interpretation,source,target);
41765}
41766/**
41767 * Matcher for detecting tuples t where []eModelElement reference EAnnotation(source,target)
41768 */
41769private pattern mustInRelationeModelElement_reference_EAnnotation(
41770 problem:LogicProblem, interpretation:PartialInterpretation,
41771 source: DefinedElement, target:DefinedElement)
41772{
41773 find interpretation(problem,interpretation);
41774 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
41775 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eModelElement reference EAnnotation");
41776 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
41777 BinaryElementRelationLink.param1(link,source);
41778 BinaryElementRelationLink.param2(link,target);
41779}
41780/**
41781 * Matcher for detecting tuples t where <>eModelElement reference EAnnotation(source,target)
41782 */
41783private pattern mayInRelationeModelElement_reference_EAnnotation(
41784 problem:LogicProblem, interpretation:PartialInterpretation,
41785 source: DefinedElement, target:DefinedElement)
41786{
41787 find interpretation(problem,interpretation);
41788 // The two endpoint of the link have to exist
41789 find mayExist(problem, interpretation, source);
41790 find mayExist(problem, interpretation, target);
41791 // Type consistency
41792 find mayInstanceOfEAnnotation_class(problem,interpretation,source);
41793 find mayInstanceOfEModelElement_class(problem,interpretation,target);
41794 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
41795 // the upper bound of the multiplicity should be considered.
41796 numberOfExistingReferences == count find mustInRelationeModelElement_reference_EAnnotation(problem,interpretation,source,_);
41797 check(numberOfExistingReferences < 1);
41798 // The eOpposite of the reference is containment, then a referene cannot be created if
41799 // 1. Multiple parents
41800 neg find mustContains4(problem,interpretation,source,_);
41801 // 2. Circle in the containment hierarchy
41802 neg find mustTransitiveContains(source,target);
41803} or {
41804 find mustInRelationeModelElement_reference_EAnnotation(problem,interpretation,source,target);
41805}
41806/**
41807 * Matcher for detecting tuples t where []contents reference EAnnotation(source,target)
41808 */
41809private pattern mustInRelationcontents_reference_EAnnotation(
41810 problem:LogicProblem, interpretation:PartialInterpretation,
41811 source: DefinedElement, target:DefinedElement)
41812{
41813 find interpretation(problem,interpretation);
41814 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
41815 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"contents reference EAnnotation");
41816 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
41817 BinaryElementRelationLink.param1(link,source);
41818 BinaryElementRelationLink.param2(link,target);
41819}
41820/**
41821 * Matcher for detecting tuples t where <>contents reference EAnnotation(source,target)
41822 */
41823private pattern mayInRelationcontents_reference_EAnnotation(
41824 problem:LogicProblem, interpretation:PartialInterpretation,
41825 source: DefinedElement, target:DefinedElement)
41826{
41827 find interpretation(problem,interpretation);
41828 // The two endpoint of the link have to exist
41829 find mayExist(problem, interpretation, source);
41830 find mayExist(problem, interpretation, target);
41831 // Type consistency
41832 find mayInstanceOfEAnnotation_class(problem,interpretation,source);
41833 find mayInstanceOfEObject_class(problem,interpretation,target);
41834 // The reference is containment, then a new reference cannot be create if:
41835 // 1. Multiple parents
41836 neg find mustContains4(problem,interpretation,_,target);
41837 // 2. Circle in the containment hierarchy
41838 neg find mustTransitiveContains(source,target);
41839} or {
41840 find mustInRelationcontents_reference_EAnnotation(problem,interpretation,source,target);
41841}
41842/**
41843 * Matcher for detecting tuples t where []references reference EAnnotation(source,target)
41844 */
41845private pattern mustInRelationreferences_reference_EAnnotation(
41846 problem:LogicProblem, interpretation:PartialInterpretation,
41847 source: DefinedElement, target:DefinedElement)
41848{
41849 find interpretation(problem,interpretation);
41850 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
41851 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"references reference EAnnotation");
41852 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
41853 BinaryElementRelationLink.param1(link,source);
41854 BinaryElementRelationLink.param2(link,target);
41855}
41856/**
41857 * Matcher for detecting tuples t where <>references reference EAnnotation(source,target)
41858 */
41859private pattern mayInRelationreferences_reference_EAnnotation(
41860 problem:LogicProblem, interpretation:PartialInterpretation,
41861 source: DefinedElement, target:DefinedElement)
41862{
41863 find interpretation(problem,interpretation);
41864 // The two endpoint of the link have to exist
41865 find mayExist(problem, interpretation, source);
41866 find mayExist(problem, interpretation, target);
41867 // Type consistency
41868 find mayInstanceOfEAnnotation_class(problem,interpretation,source);
41869 find mayInstanceOfEObject_class(problem,interpretation,target);
41870} or {
41871 find mustInRelationreferences_reference_EAnnotation(problem,interpretation,source,target);
41872}
41873/**
41874 * Matcher for detecting tuples t where []eSuperTypes reference EClass(source,target)
41875 */
41876private pattern mustInRelationeSuperTypes_reference_EClass(
41877 problem:LogicProblem, interpretation:PartialInterpretation,
41878 source: DefinedElement, target:DefinedElement)
41879{
41880 find interpretation(problem,interpretation);
41881 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
41882 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eSuperTypes reference EClass");
41883 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
41884 BinaryElementRelationLink.param1(link,source);
41885 BinaryElementRelationLink.param2(link,target);
41886}
41887/**
41888 * Matcher for detecting tuples t where <>eSuperTypes reference EClass(source,target)
41889 */
41890private pattern mayInRelationeSuperTypes_reference_EClass(
41891 problem:LogicProblem, interpretation:PartialInterpretation,
41892 source: DefinedElement, target:DefinedElement)
41893{
41894 find interpretation(problem,interpretation);
41895 // The two endpoint of the link have to exist
41896 find mayExist(problem, interpretation, source);
41897 find mayExist(problem, interpretation, target);
41898 // Type consistency
41899 find mayInstanceOfEClass_class(problem,interpretation,source);
41900 find mayInstanceOfEClass_class(problem,interpretation,target);
41901} or {
41902 find mustInRelationeSuperTypes_reference_EClass(problem,interpretation,source,target);
41903}
41904/**
41905 * Matcher for detecting tuples t where []eOperations reference EClass(source,target)
41906 */
41907private pattern mustInRelationeOperations_reference_EClass(
41908 problem:LogicProblem, interpretation:PartialInterpretation,
41909 source: DefinedElement, target:DefinedElement)
41910{
41911 find interpretation(problem,interpretation);
41912 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
41913 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eOperations reference EClass");
41914 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
41915 BinaryElementRelationLink.param1(link,source);
41916 BinaryElementRelationLink.param2(link,target);
41917}
41918/**
41919 * Matcher for detecting tuples t where <>eOperations reference EClass(source,target)
41920 */
41921private pattern mayInRelationeOperations_reference_EClass(
41922 problem:LogicProblem, interpretation:PartialInterpretation,
41923 source: DefinedElement, target:DefinedElement)
41924{
41925 find interpretation(problem,interpretation);
41926 // The two endpoint of the link have to exist
41927 find mayExist(problem, interpretation, source);
41928 find mayExist(problem, interpretation, target);
41929 // Type consistency
41930 find mayInstanceOfEClass_class(problem,interpretation,source);
41931 find mayInstanceOfEOperation_class(problem,interpretation,target);
41932 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
41933 // the upper bound of the opposite reference multiplicity should be considered.
41934 numberOfExistingOppositeReferences == count find mustInRelationeContainingClass_reference_EOperation(problem,interpretation,target,_);
41935 check(numberOfExistingOppositeReferences < 1);
41936 // The reference is containment, then a new reference cannot be create if:
41937 // 1. Multiple parents
41938 neg find mustContains4(problem,interpretation,_,target);
41939 // 2. Circle in the containment hierarchy
41940 neg find mustTransitiveContains(source,target);
41941} or {
41942 find mustInRelationeOperations_reference_EClass(problem,interpretation,source,target);
41943}
41944/**
41945 * Matcher for detecting tuples t where []eAllAttributes reference EClass(source,target)
41946 */
41947private pattern mustInRelationeAllAttributes_reference_EClass(
41948 problem:LogicProblem, interpretation:PartialInterpretation,
41949 source: DefinedElement, target:DefinedElement)
41950{
41951 find interpretation(problem,interpretation);
41952 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
41953 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllAttributes reference EClass");
41954 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
41955 BinaryElementRelationLink.param1(link,source);
41956 BinaryElementRelationLink.param2(link,target);
41957}
41958/**
41959 * Matcher for detecting tuples t where <>eAllAttributes reference EClass(source,target)
41960 */
41961private pattern mayInRelationeAllAttributes_reference_EClass(
41962 problem:LogicProblem, interpretation:PartialInterpretation,
41963 source: DefinedElement, target:DefinedElement)
41964{
41965 find interpretation(problem,interpretation);
41966 // The two endpoint of the link have to exist
41967 find mayExist(problem, interpretation, source);
41968 find mayExist(problem, interpretation, target);
41969 // Type consistency
41970 find mayInstanceOfEClass_class(problem,interpretation,source);
41971 find mayInstanceOfEAttribute_class(problem,interpretation,target);
41972} or {
41973 find mustInRelationeAllAttributes_reference_EClass(problem,interpretation,source,target);
41974}
41975/**
41976 * Matcher for detecting tuples t where []eAllReferences reference EClass(source,target)
41977 */
41978private pattern mustInRelationeAllReferences_reference_EClass(
41979 problem:LogicProblem, interpretation:PartialInterpretation,
41980 source: DefinedElement, target:DefinedElement)
41981{
41982 find interpretation(problem,interpretation);
41983 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
41984 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllReferences reference EClass");
41985 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
41986 BinaryElementRelationLink.param1(link,source);
41987 BinaryElementRelationLink.param2(link,target);
41988}
41989/**
41990 * Matcher for detecting tuples t where <>eAllReferences reference EClass(source,target)
41991 */
41992private pattern mayInRelationeAllReferences_reference_EClass(
41993 problem:LogicProblem, interpretation:PartialInterpretation,
41994 source: DefinedElement, target:DefinedElement)
41995{
41996 find interpretation(problem,interpretation);
41997 // The two endpoint of the link have to exist
41998 find mayExist(problem, interpretation, source);
41999 find mayExist(problem, interpretation, target);
42000 // Type consistency
42001 find mayInstanceOfEClass_class(problem,interpretation,source);
42002 find mayInstanceOfEReference_class(problem,interpretation,target);
42003} or {
42004 find mustInRelationeAllReferences_reference_EClass(problem,interpretation,source,target);
42005}
42006/**
42007 * Matcher for detecting tuples t where []eReferences reference EClass(source,target)
42008 */
42009private pattern mustInRelationeReferences_reference_EClass(
42010 problem:LogicProblem, interpretation:PartialInterpretation,
42011 source: DefinedElement, target:DefinedElement)
42012{
42013 find interpretation(problem,interpretation);
42014 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
42015 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eReferences reference EClass");
42016 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
42017 BinaryElementRelationLink.param1(link,source);
42018 BinaryElementRelationLink.param2(link,target);
42019}
42020/**
42021 * Matcher for detecting tuples t where <>eReferences reference EClass(source,target)
42022 */
42023private pattern mayInRelationeReferences_reference_EClass(
42024 problem:LogicProblem, interpretation:PartialInterpretation,
42025 source: DefinedElement, target:DefinedElement)
42026{
42027 find interpretation(problem,interpretation);
42028 // The two endpoint of the link have to exist
42029 find mayExist(problem, interpretation, source);
42030 find mayExist(problem, interpretation, target);
42031 // Type consistency
42032 find mayInstanceOfEClass_class(problem,interpretation,source);
42033 find mayInstanceOfEReference_class(problem,interpretation,target);
42034} or {
42035 find mustInRelationeReferences_reference_EClass(problem,interpretation,source,target);
42036}
42037/**
42038 * Matcher for detecting tuples t where []eAttributes reference EClass(source,target)
42039 */
42040private pattern mustInRelationeAttributes_reference_EClass(
42041 problem:LogicProblem, interpretation:PartialInterpretation,
42042 source: DefinedElement, target:DefinedElement)
42043{
42044 find interpretation(problem,interpretation);
42045 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
42046 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAttributes reference EClass");
42047 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
42048 BinaryElementRelationLink.param1(link,source);
42049 BinaryElementRelationLink.param2(link,target);
42050}
42051/**
42052 * Matcher for detecting tuples t where <>eAttributes reference EClass(source,target)
42053 */
42054private pattern mayInRelationeAttributes_reference_EClass(
42055 problem:LogicProblem, interpretation:PartialInterpretation,
42056 source: DefinedElement, target:DefinedElement)
42057{
42058 find interpretation(problem,interpretation);
42059 // The two endpoint of the link have to exist
42060 find mayExist(problem, interpretation, source);
42061 find mayExist(problem, interpretation, target);
42062 // Type consistency
42063 find mayInstanceOfEClass_class(problem,interpretation,source);
42064 find mayInstanceOfEAttribute_class(problem,interpretation,target);
42065} or {
42066 find mustInRelationeAttributes_reference_EClass(problem,interpretation,source,target);
42067}
42068/**
42069 * Matcher for detecting tuples t where []eAllContainments reference EClass(source,target)
42070 */
42071private pattern mustInRelationeAllContainments_reference_EClass(
42072 problem:LogicProblem, interpretation:PartialInterpretation,
42073 source: DefinedElement, target:DefinedElement)
42074{
42075 find interpretation(problem,interpretation);
42076 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
42077 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllContainments reference EClass");
42078 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
42079 BinaryElementRelationLink.param1(link,source);
42080 BinaryElementRelationLink.param2(link,target);
42081}
42082/**
42083 * Matcher for detecting tuples t where <>eAllContainments reference EClass(source,target)
42084 */
42085private pattern mayInRelationeAllContainments_reference_EClass(
42086 problem:LogicProblem, interpretation:PartialInterpretation,
42087 source: DefinedElement, target:DefinedElement)
42088{
42089 find interpretation(problem,interpretation);
42090 // The two endpoint of the link have to exist
42091 find mayExist(problem, interpretation, source);
42092 find mayExist(problem, interpretation, target);
42093 // Type consistency
42094 find mayInstanceOfEClass_class(problem,interpretation,source);
42095 find mayInstanceOfEReference_class(problem,interpretation,target);
42096} or {
42097 find mustInRelationeAllContainments_reference_EClass(problem,interpretation,source,target);
42098}
42099/**
42100 * Matcher for detecting tuples t where []eAllOperations reference EClass(source,target)
42101 */
42102private pattern mustInRelationeAllOperations_reference_EClass(
42103 problem:LogicProblem, interpretation:PartialInterpretation,
42104 source: DefinedElement, target:DefinedElement)
42105{
42106 find interpretation(problem,interpretation);
42107 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
42108 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllOperations reference EClass");
42109 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
42110 BinaryElementRelationLink.param1(link,source);
42111 BinaryElementRelationLink.param2(link,target);
42112}
42113/**
42114 * Matcher for detecting tuples t where <>eAllOperations reference EClass(source,target)
42115 */
42116private pattern mayInRelationeAllOperations_reference_EClass(
42117 problem:LogicProblem, interpretation:PartialInterpretation,
42118 source: DefinedElement, target:DefinedElement)
42119{
42120 find interpretation(problem,interpretation);
42121 // The two endpoint of the link have to exist
42122 find mayExist(problem, interpretation, source);
42123 find mayExist(problem, interpretation, target);
42124 // Type consistency
42125 find mayInstanceOfEClass_class(problem,interpretation,source);
42126 find mayInstanceOfEOperation_class(problem,interpretation,target);
42127} or {
42128 find mustInRelationeAllOperations_reference_EClass(problem,interpretation,source,target);
42129}
42130/**
42131 * Matcher for detecting tuples t where []eAllStructuralFeatures reference EClass(source,target)
42132 */
42133private pattern mustInRelationeAllStructuralFeatures_reference_EClass(
42134 problem:LogicProblem, interpretation:PartialInterpretation,
42135 source: DefinedElement, target:DefinedElement)
42136{
42137 find interpretation(problem,interpretation);
42138 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
42139 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllStructuralFeatures reference EClass");
42140 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
42141 BinaryElementRelationLink.param1(link,source);
42142 BinaryElementRelationLink.param2(link,target);
42143}
42144/**
42145 * Matcher for detecting tuples t where <>eAllStructuralFeatures reference EClass(source,target)
42146 */
42147private pattern mayInRelationeAllStructuralFeatures_reference_EClass(
42148 problem:LogicProblem, interpretation:PartialInterpretation,
42149 source: DefinedElement, target:DefinedElement)
42150{
42151 find interpretation(problem,interpretation);
42152 // The two endpoint of the link have to exist
42153 find mayExist(problem, interpretation, source);
42154 find mayExist(problem, interpretation, target);
42155 // Type consistency
42156 find mayInstanceOfEClass_class(problem,interpretation,source);
42157 find mayInstanceOfEStructuralFeature_class(problem,interpretation,target);
42158} or {
42159 find mustInRelationeAllStructuralFeatures_reference_EClass(problem,interpretation,source,target);
42160}
42161/**
42162 * Matcher for detecting tuples t where []eAllSuperTypes reference EClass(source,target)
42163 */
42164private pattern mustInRelationeAllSuperTypes_reference_EClass(
42165 problem:LogicProblem, interpretation:PartialInterpretation,
42166 source: DefinedElement, target:DefinedElement)
42167{
42168 find interpretation(problem,interpretation);
42169 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
42170 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllSuperTypes reference EClass");
42171 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
42172 BinaryElementRelationLink.param1(link,source);
42173 BinaryElementRelationLink.param2(link,target);
42174}
42175/**
42176 * Matcher for detecting tuples t where <>eAllSuperTypes reference EClass(source,target)
42177 */
42178private pattern mayInRelationeAllSuperTypes_reference_EClass(
42179 problem:LogicProblem, interpretation:PartialInterpretation,
42180 source: DefinedElement, target:DefinedElement)
42181{
42182 find interpretation(problem,interpretation);
42183 // The two endpoint of the link have to exist
42184 find mayExist(problem, interpretation, source);
42185 find mayExist(problem, interpretation, target);
42186 // Type consistency
42187 find mayInstanceOfEClass_class(problem,interpretation,source);
42188 find mayInstanceOfEClass_class(problem,interpretation,target);
42189} or {
42190 find mustInRelationeAllSuperTypes_reference_EClass(problem,interpretation,source,target);
42191}
42192/**
42193 * Matcher for detecting tuples t where []eIDAttribute reference EClass(source,target)
42194 */
42195private pattern mustInRelationeIDAttribute_reference_EClass(
42196 problem:LogicProblem, interpretation:PartialInterpretation,
42197 source: DefinedElement, target:DefinedElement)
42198{
42199 find interpretation(problem,interpretation);
42200 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
42201 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eIDAttribute reference EClass");
42202 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
42203 BinaryElementRelationLink.param1(link,source);
42204 BinaryElementRelationLink.param2(link,target);
42205}
42206/**
42207 * Matcher for detecting tuples t where <>eIDAttribute reference EClass(source,target)
42208 */
42209private pattern mayInRelationeIDAttribute_reference_EClass(
42210 problem:LogicProblem, interpretation:PartialInterpretation,
42211 source: DefinedElement, target:DefinedElement)
42212{
42213 find interpretation(problem,interpretation);
42214 // The two endpoint of the link have to exist
42215 find mayExist(problem, interpretation, source);
42216 find mayExist(problem, interpretation, target);
42217 // Type consistency
42218 find mayInstanceOfEClass_class(problem,interpretation,source);
42219 find mayInstanceOfEAttribute_class(problem,interpretation,target);
42220 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
42221 // the upper bound of the multiplicity should be considered.
42222 numberOfExistingReferences == count find mustInRelationeIDAttribute_reference_EClass(problem,interpretation,source,_);
42223 check(numberOfExistingReferences < 1);
42224} or {
42225 find mustInRelationeIDAttribute_reference_EClass(problem,interpretation,source,target);
42226}
42227/**
42228 * Matcher for detecting tuples t where []eStructuralFeatures reference EClass(source,target)
42229 */
42230private pattern mustInRelationeStructuralFeatures_reference_EClass(
42231 problem:LogicProblem, interpretation:PartialInterpretation,
42232 source: DefinedElement, target:DefinedElement)
42233{
42234 find interpretation(problem,interpretation);
42235 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
42236 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eStructuralFeatures reference EClass");
42237 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
42238 BinaryElementRelationLink.param1(link,source);
42239 BinaryElementRelationLink.param2(link,target);
42240}
42241/**
42242 * Matcher for detecting tuples t where <>eStructuralFeatures reference EClass(source,target)
42243 */
42244private pattern mayInRelationeStructuralFeatures_reference_EClass(
42245 problem:LogicProblem, interpretation:PartialInterpretation,
42246 source: DefinedElement, target:DefinedElement)
42247{
42248 find interpretation(problem,interpretation);
42249 // The two endpoint of the link have to exist
42250 find mayExist(problem, interpretation, source);
42251 find mayExist(problem, interpretation, target);
42252 // Type consistency
42253 find mayInstanceOfEClass_class(problem,interpretation,source);
42254 find mayInstanceOfEStructuralFeature_class(problem,interpretation,target);
42255 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
42256 // the upper bound of the opposite reference multiplicity should be considered.
42257 numberOfExistingOppositeReferences == count find mustInRelationeContainingClass_reference_EStructuralFeature(problem,interpretation,target,_);
42258 check(numberOfExistingOppositeReferences < 1);
42259 // The reference is containment, then a new reference cannot be create if:
42260 // 1. Multiple parents
42261 neg find mustContains4(problem,interpretation,_,target);
42262 // 2. Circle in the containment hierarchy
42263 neg find mustTransitiveContains(source,target);
42264} or {
42265 find mustInRelationeStructuralFeatures_reference_EClass(problem,interpretation,source,target);
42266}
42267/**
42268 * Matcher for detecting tuples t where []eGenericSuperTypes reference EClass(source,target)
42269 */
42270private pattern mustInRelationeGenericSuperTypes_reference_EClass(
42271 problem:LogicProblem, interpretation:PartialInterpretation,
42272 source: DefinedElement, target:DefinedElement)
42273{
42274 find interpretation(problem,interpretation);
42275 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
42276 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eGenericSuperTypes reference EClass");
42277 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
42278 BinaryElementRelationLink.param1(link,source);
42279 BinaryElementRelationLink.param2(link,target);
42280}
42281/**
42282 * Matcher for detecting tuples t where <>eGenericSuperTypes reference EClass(source,target)
42283 */
42284private pattern mayInRelationeGenericSuperTypes_reference_EClass(
42285 problem:LogicProblem, interpretation:PartialInterpretation,
42286 source: DefinedElement, target:DefinedElement)
42287{
42288 find interpretation(problem,interpretation);
42289 // The two endpoint of the link have to exist
42290 find mayExist(problem, interpretation, source);
42291 find mayExist(problem, interpretation, target);
42292 // Type consistency
42293 find mayInstanceOfEClass_class(problem,interpretation,source);
42294 find mayInstanceOfEGenericType_class(problem,interpretation,target);
42295 // The reference is containment, then a new reference cannot be create if:
42296 // 1. Multiple parents
42297 neg find mustContains4(problem,interpretation,_,target);
42298 // 2. Circle in the containment hierarchy
42299 neg find mustTransitiveContains(source,target);
42300} or {
42301 find mustInRelationeGenericSuperTypes_reference_EClass(problem,interpretation,source,target);
42302}
42303/**
42304 * Matcher for detecting tuples t where []eAllGenericSuperTypes reference EClass(source,target)
42305 */
42306private pattern mustInRelationeAllGenericSuperTypes_reference_EClass(
42307 problem:LogicProblem, interpretation:PartialInterpretation,
42308 source: DefinedElement, target:DefinedElement)
42309{
42310 find interpretation(problem,interpretation);
42311 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
42312 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllGenericSuperTypes reference EClass");
42313 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
42314 BinaryElementRelationLink.param1(link,source);
42315 BinaryElementRelationLink.param2(link,target);
42316}
42317/**
42318 * Matcher for detecting tuples t where <>eAllGenericSuperTypes reference EClass(source,target)
42319 */
42320private pattern mayInRelationeAllGenericSuperTypes_reference_EClass(
42321 problem:LogicProblem, interpretation:PartialInterpretation,
42322 source: DefinedElement, target:DefinedElement)
42323{
42324 find interpretation(problem,interpretation);
42325 // The two endpoint of the link have to exist
42326 find mayExist(problem, interpretation, source);
42327 find mayExist(problem, interpretation, target);
42328 // Type consistency
42329 find mayInstanceOfEClass_class(problem,interpretation,source);
42330 find mayInstanceOfEGenericType_class(problem,interpretation,target);
42331} or {
42332 find mustInRelationeAllGenericSuperTypes_reference_EClass(problem,interpretation,source,target);
42333}
42334/**
42335 * Matcher for detecting tuples t where []ePackage reference EClassifier(source,target)
42336 */
42337private pattern mustInRelationePackage_reference_EClassifier(
42338 problem:LogicProblem, interpretation:PartialInterpretation,
42339 source: DefinedElement, target:DefinedElement)
42340{
42341 find interpretation(problem,interpretation);
42342 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
42343 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"ePackage reference EClassifier");
42344 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
42345 BinaryElementRelationLink.param1(link,source);
42346 BinaryElementRelationLink.param2(link,target);
42347}
42348/**
42349 * Matcher for detecting tuples t where <>ePackage reference EClassifier(source,target)
42350 */
42351private pattern mayInRelationePackage_reference_EClassifier(
42352 problem:LogicProblem, interpretation:PartialInterpretation,
42353 source: DefinedElement, target:DefinedElement)
42354{
42355 find interpretation(problem,interpretation);
42356 // The two endpoint of the link have to exist
42357 find mayExist(problem, interpretation, source);
42358 find mayExist(problem, interpretation, target);
42359 // Type consistency
42360 find mayInstanceOfEClassifier_class(problem,interpretation,source);
42361 find mayInstanceOfEPackage_class(problem,interpretation,target);
42362 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
42363 // the upper bound of the multiplicity should be considered.
42364 numberOfExistingReferences == count find mustInRelationePackage_reference_EClassifier(problem,interpretation,source,_);
42365 check(numberOfExistingReferences < 1);
42366 // The eOpposite of the reference is containment, then a referene cannot be created if
42367 // 1. Multiple parents
42368 neg find mustContains4(problem,interpretation,source,_);
42369 // 2. Circle in the containment hierarchy
42370 neg find mustTransitiveContains(source,target);
42371} or {
42372 find mustInRelationePackage_reference_EClassifier(problem,interpretation,source,target);
42373}
42374/**
42375 * Matcher for detecting tuples t where []eTypeParameters reference EClassifier(source,target)
42376 */
42377private pattern mustInRelationeTypeParameters_reference_EClassifier(
42378 problem:LogicProblem, interpretation:PartialInterpretation,
42379 source: DefinedElement, target:DefinedElement)
42380{
42381 find interpretation(problem,interpretation);
42382 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
42383 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eTypeParameters reference EClassifier");
42384 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
42385 BinaryElementRelationLink.param1(link,source);
42386 BinaryElementRelationLink.param2(link,target);
42387}
42388/**
42389 * Matcher for detecting tuples t where <>eTypeParameters reference EClassifier(source,target)
42390 */
42391private pattern mayInRelationeTypeParameters_reference_EClassifier(
42392 problem:LogicProblem, interpretation:PartialInterpretation,
42393 source: DefinedElement, target:DefinedElement)
42394{
42395 find interpretation(problem,interpretation);
42396 // The two endpoint of the link have to exist
42397 find mayExist(problem, interpretation, source);
42398 find mayExist(problem, interpretation, target);
42399 // Type consistency
42400 find mayInstanceOfEClassifier_class(problem,interpretation,source);
42401 find mayInstanceOfETypeParameter_class(problem,interpretation,target);
42402 // The reference is containment, then a new reference cannot be create if:
42403 // 1. Multiple parents
42404 neg find mustContains4(problem,interpretation,_,target);
42405 // 2. Circle in the containment hierarchy
42406 neg find mustTransitiveContains(source,target);
42407} or {
42408 find mustInRelationeTypeParameters_reference_EClassifier(problem,interpretation,source,target);
42409}
42410/**
42411 * Matcher for detecting tuples t where []eLiterals reference EEnum(source,target)
42412 */
42413private pattern mustInRelationeLiterals_reference_EEnum(
42414 problem:LogicProblem, interpretation:PartialInterpretation,
42415 source: DefinedElement, target:DefinedElement)
42416{
42417 find interpretation(problem,interpretation);
42418 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
42419 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eLiterals reference EEnum");
42420 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
42421 BinaryElementRelationLink.param1(link,source);
42422 BinaryElementRelationLink.param2(link,target);
42423}
42424/**
42425 * Matcher for detecting tuples t where <>eLiterals reference EEnum(source,target)
42426 */
42427private pattern mayInRelationeLiterals_reference_EEnum(
42428 problem:LogicProblem, interpretation:PartialInterpretation,
42429 source: DefinedElement, target:DefinedElement)
42430{
42431 find interpretation(problem,interpretation);
42432 // The two endpoint of the link have to exist
42433 find mayExist(problem, interpretation, source);
42434 find mayExist(problem, interpretation, target);
42435 // Type consistency
42436 find mayInstanceOfEEnum_class(problem,interpretation,source);
42437 find mayInstanceOfEEnumLiteral_class(problem,interpretation,target);
42438 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
42439 // the upper bound of the opposite reference multiplicity should be considered.
42440 numberOfExistingOppositeReferences == count find mustInRelationeEnum_reference_EEnumLiteral(problem,interpretation,target,_);
42441 check(numberOfExistingOppositeReferences < 1);
42442 // The reference is containment, then a new reference cannot be create if:
42443 // 1. Multiple parents
42444 neg find mustContains4(problem,interpretation,_,target);
42445 // 2. Circle in the containment hierarchy
42446 neg find mustTransitiveContains(source,target);
42447} or {
42448 find mustInRelationeLiterals_reference_EEnum(problem,interpretation,source,target);
42449}
42450/**
42451 * Matcher for detecting tuples t where []eEnum reference EEnumLiteral(source,target)
42452 */
42453private pattern mustInRelationeEnum_reference_EEnumLiteral(
42454 problem:LogicProblem, interpretation:PartialInterpretation,
42455 source: DefinedElement, target:DefinedElement)
42456{
42457 find interpretation(problem,interpretation);
42458 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
42459 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eEnum reference EEnumLiteral");
42460 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
42461 BinaryElementRelationLink.param1(link,source);
42462 BinaryElementRelationLink.param2(link,target);
42463}
42464/**
42465 * Matcher for detecting tuples t where <>eEnum reference EEnumLiteral(source,target)
42466 */
42467private pattern mayInRelationeEnum_reference_EEnumLiteral(
42468 problem:LogicProblem, interpretation:PartialInterpretation,
42469 source: DefinedElement, target:DefinedElement)
42470{
42471 find interpretation(problem,interpretation);
42472 // The two endpoint of the link have to exist
42473 find mayExist(problem, interpretation, source);
42474 find mayExist(problem, interpretation, target);
42475 // Type consistency
42476 find mayInstanceOfEEnumLiteral_class(problem,interpretation,source);
42477 find mayInstanceOfEEnum_class(problem,interpretation,target);
42478 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
42479 // the upper bound of the multiplicity should be considered.
42480 numberOfExistingReferences == count find mustInRelationeEnum_reference_EEnumLiteral(problem,interpretation,source,_);
42481 check(numberOfExistingReferences < 1);
42482 // The eOpposite of the reference is containment, then a referene cannot be created if
42483 // 1. Multiple parents
42484 neg find mustContains4(problem,interpretation,source,_);
42485 // 2. Circle in the containment hierarchy
42486 neg find mustTransitiveContains(source,target);
42487} or {
42488 find mustInRelationeEnum_reference_EEnumLiteral(problem,interpretation,source,target);
42489}
42490/**
42491 * Matcher for detecting tuples t where []eAnnotations reference EModelElement(source,target)
42492 */
42493private pattern mustInRelationeAnnotations_reference_EModelElement(
42494 problem:LogicProblem, interpretation:PartialInterpretation,
42495 source: DefinedElement, target:DefinedElement)
42496{
42497 find interpretation(problem,interpretation);
42498 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
42499 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAnnotations reference EModelElement");
42500 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
42501 BinaryElementRelationLink.param1(link,source);
42502 BinaryElementRelationLink.param2(link,target);
42503}
42504/**
42505 * Matcher for detecting tuples t where <>eAnnotations reference EModelElement(source,target)
42506 */
42507private pattern mayInRelationeAnnotations_reference_EModelElement(
42508 problem:LogicProblem, interpretation:PartialInterpretation,
42509 source: DefinedElement, target:DefinedElement)
42510{
42511 find interpretation(problem,interpretation);
42512 // The two endpoint of the link have to exist
42513 find mayExist(problem, interpretation, source);
42514 find mayExist(problem, interpretation, target);
42515 // Type consistency
42516 find mayInstanceOfEModelElement_class(problem,interpretation,source);
42517 find mayInstanceOfEAnnotation_class(problem,interpretation,target);
42518 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
42519 // the upper bound of the opposite reference multiplicity should be considered.
42520 numberOfExistingOppositeReferences == count find mustInRelationeModelElement_reference_EAnnotation(problem,interpretation,target,_);
42521 check(numberOfExistingOppositeReferences < 1);
42522 // The reference is containment, then a new reference cannot be create if:
42523 // 1. Multiple parents
42524 neg find mustContains4(problem,interpretation,_,target);
42525 // 2. Circle in the containment hierarchy
42526 neg find mustTransitiveContains(source,target);
42527} or {
42528 find mustInRelationeAnnotations_reference_EModelElement(problem,interpretation,source,target);
42529}
42530/**
42531 * Matcher for detecting tuples t where []eContainingClass reference EOperation(source,target)
42532 */
42533private pattern mustInRelationeContainingClass_reference_EOperation(
42534 problem:LogicProblem, interpretation:PartialInterpretation,
42535 source: DefinedElement, target:DefinedElement)
42536{
42537 find interpretation(problem,interpretation);
42538 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
42539 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eContainingClass reference EOperation");
42540 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
42541 BinaryElementRelationLink.param1(link,source);
42542 BinaryElementRelationLink.param2(link,target);
42543}
42544/**
42545 * Matcher for detecting tuples t where <>eContainingClass reference EOperation(source,target)
42546 */
42547private pattern mayInRelationeContainingClass_reference_EOperation(
42548 problem:LogicProblem, interpretation:PartialInterpretation,
42549 source: DefinedElement, target:DefinedElement)
42550{
42551 find interpretation(problem,interpretation);
42552 // The two endpoint of the link have to exist
42553 find mayExist(problem, interpretation, source);
42554 find mayExist(problem, interpretation, target);
42555 // Type consistency
42556 find mayInstanceOfEOperation_class(problem,interpretation,source);
42557 find mayInstanceOfEClass_class(problem,interpretation,target);
42558 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
42559 // the upper bound of the multiplicity should be considered.
42560 numberOfExistingReferences == count find mustInRelationeContainingClass_reference_EOperation(problem,interpretation,source,_);
42561 check(numberOfExistingReferences < 1);
42562 // The eOpposite of the reference is containment, then a referene cannot be created if
42563 // 1. Multiple parents
42564 neg find mustContains4(problem,interpretation,source,_);
42565 // 2. Circle in the containment hierarchy
42566 neg find mustTransitiveContains(source,target);
42567} or {
42568 find mustInRelationeContainingClass_reference_EOperation(problem,interpretation,source,target);
42569}
42570/**
42571 * Matcher for detecting tuples t where []eTypeParameters reference EOperation(source,target)
42572 */
42573private pattern mustInRelationeTypeParameters_reference_EOperation(
42574 problem:LogicProblem, interpretation:PartialInterpretation,
42575 source: DefinedElement, target:DefinedElement)
42576{
42577 find interpretation(problem,interpretation);
42578 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
42579 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eTypeParameters reference EOperation");
42580 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
42581 BinaryElementRelationLink.param1(link,source);
42582 BinaryElementRelationLink.param2(link,target);
42583}
42584/**
42585 * Matcher for detecting tuples t where <>eTypeParameters reference EOperation(source,target)
42586 */
42587private pattern mayInRelationeTypeParameters_reference_EOperation(
42588 problem:LogicProblem, interpretation:PartialInterpretation,
42589 source: DefinedElement, target:DefinedElement)
42590{
42591 find interpretation(problem,interpretation);
42592 // The two endpoint of the link have to exist
42593 find mayExist(problem, interpretation, source);
42594 find mayExist(problem, interpretation, target);
42595 // Type consistency
42596 find mayInstanceOfEOperation_class(problem,interpretation,source);
42597 find mayInstanceOfETypeParameter_class(problem,interpretation,target);
42598 // The reference is containment, then a new reference cannot be create if:
42599 // 1. Multiple parents
42600 neg find mustContains4(problem,interpretation,_,target);
42601 // 2. Circle in the containment hierarchy
42602 neg find mustTransitiveContains(source,target);
42603} or {
42604 find mustInRelationeTypeParameters_reference_EOperation(problem,interpretation,source,target);
42605}
42606/**
42607 * Matcher for detecting tuples t where []eParameters reference EOperation(source,target)
42608 */
42609private pattern mustInRelationeParameters_reference_EOperation(
42610 problem:LogicProblem, interpretation:PartialInterpretation,
42611 source: DefinedElement, target:DefinedElement)
42612{
42613 find interpretation(problem,interpretation);
42614 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
42615 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eParameters reference EOperation");
42616 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
42617 BinaryElementRelationLink.param1(link,source);
42618 BinaryElementRelationLink.param2(link,target);
42619}
42620/**
42621 * Matcher for detecting tuples t where <>eParameters reference EOperation(source,target)
42622 */
42623private pattern mayInRelationeParameters_reference_EOperation(
42624 problem:LogicProblem, interpretation:PartialInterpretation,
42625 source: DefinedElement, target:DefinedElement)
42626{
42627 find interpretation(problem,interpretation);
42628 // The two endpoint of the link have to exist
42629 find mayExist(problem, interpretation, source);
42630 find mayExist(problem, interpretation, target);
42631 // Type consistency
42632 find mayInstanceOfEOperation_class(problem,interpretation,source);
42633 find mayInstanceOfEParameter_class(problem,interpretation,target);
42634 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
42635 // the upper bound of the opposite reference multiplicity should be considered.
42636 numberOfExistingOppositeReferences == count find mustInRelationeOperation_reference_EParameter(problem,interpretation,target,_);
42637 check(numberOfExistingOppositeReferences < 1);
42638 // The reference is containment, then a new reference cannot be create if:
42639 // 1. Multiple parents
42640 neg find mustContains4(problem,interpretation,_,target);
42641 // 2. Circle in the containment hierarchy
42642 neg find mustTransitiveContains(source,target);
42643} or {
42644 find mustInRelationeParameters_reference_EOperation(problem,interpretation,source,target);
42645}
42646/**
42647 * Matcher for detecting tuples t where []eExceptions reference EOperation(source,target)
42648 */
42649private pattern mustInRelationeExceptions_reference_EOperation(
42650 problem:LogicProblem, interpretation:PartialInterpretation,
42651 source: DefinedElement, target:DefinedElement)
42652{
42653 find interpretation(problem,interpretation);
42654 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
42655 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eExceptions reference EOperation");
42656 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
42657 BinaryElementRelationLink.param1(link,source);
42658 BinaryElementRelationLink.param2(link,target);
42659}
42660/**
42661 * Matcher for detecting tuples t where <>eExceptions reference EOperation(source,target)
42662 */
42663private pattern mayInRelationeExceptions_reference_EOperation(
42664 problem:LogicProblem, interpretation:PartialInterpretation,
42665 source: DefinedElement, target:DefinedElement)
42666{
42667 find interpretation(problem,interpretation);
42668 // The two endpoint of the link have to exist
42669 find mayExist(problem, interpretation, source);
42670 find mayExist(problem, interpretation, target);
42671 // Type consistency
42672 find mayInstanceOfEOperation_class(problem,interpretation,source);
42673 find mayInstanceOfEClassifier_class(problem,interpretation,target);
42674} or {
42675 find mustInRelationeExceptions_reference_EOperation(problem,interpretation,source,target);
42676}
42677/**
42678 * Matcher for detecting tuples t where []eGenericExceptions reference EOperation(source,target)
42679 */
42680private pattern mustInRelationeGenericExceptions_reference_EOperation(
42681 problem:LogicProblem, interpretation:PartialInterpretation,
42682 source: DefinedElement, target:DefinedElement)
42683{
42684 find interpretation(problem,interpretation);
42685 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
42686 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eGenericExceptions reference EOperation");
42687 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
42688 BinaryElementRelationLink.param1(link,source);
42689 BinaryElementRelationLink.param2(link,target);
42690}
42691/**
42692 * Matcher for detecting tuples t where <>eGenericExceptions reference EOperation(source,target)
42693 */
42694private pattern mayInRelationeGenericExceptions_reference_EOperation(
42695 problem:LogicProblem, interpretation:PartialInterpretation,
42696 source: DefinedElement, target:DefinedElement)
42697{
42698 find interpretation(problem,interpretation);
42699 // The two endpoint of the link have to exist
42700 find mayExist(problem, interpretation, source);
42701 find mayExist(problem, interpretation, target);
42702 // Type consistency
42703 find mayInstanceOfEOperation_class(problem,interpretation,source);
42704 find mayInstanceOfEGenericType_class(problem,interpretation,target);
42705 // The reference is containment, then a new reference cannot be create if:
42706 // 1. Multiple parents
42707 neg find mustContains4(problem,interpretation,_,target);
42708 // 2. Circle in the containment hierarchy
42709 neg find mustTransitiveContains(source,target);
42710} or {
42711 find mustInRelationeGenericExceptions_reference_EOperation(problem,interpretation,source,target);
42712}
42713/**
42714 * Matcher for detecting tuples t where []eClassifiers reference EPackage(source,target)
42715 */
42716private pattern mustInRelationeClassifiers_reference_EPackage(
42717 problem:LogicProblem, interpretation:PartialInterpretation,
42718 source: DefinedElement, target:DefinedElement)
42719{
42720 find interpretation(problem,interpretation);
42721 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
42722 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eClassifiers reference EPackage");
42723 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
42724 BinaryElementRelationLink.param1(link,source);
42725 BinaryElementRelationLink.param2(link,target);
42726}
42727/**
42728 * Matcher for detecting tuples t where <>eClassifiers reference EPackage(source,target)
42729 */
42730private pattern mayInRelationeClassifiers_reference_EPackage(
42731 problem:LogicProblem, interpretation:PartialInterpretation,
42732 source: DefinedElement, target:DefinedElement)
42733{
42734 find interpretation(problem,interpretation);
42735 // The two endpoint of the link have to exist
42736 find mayExist(problem, interpretation, source);
42737 find mayExist(problem, interpretation, target);
42738 // Type consistency
42739 find mayInstanceOfEPackage_class(problem,interpretation,source);
42740 find mayInstanceOfEClassifier_class(problem,interpretation,target);
42741 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
42742 // the upper bound of the opposite reference multiplicity should be considered.
42743 numberOfExistingOppositeReferences == count find mustInRelationePackage_reference_EClassifier(problem,interpretation,target,_);
42744 check(numberOfExistingOppositeReferences < 1);
42745 // The reference is containment, then a new reference cannot be create if:
42746 // 1. Multiple parents
42747 neg find mustContains4(problem,interpretation,_,target);
42748 // 2. Circle in the containment hierarchy
42749 neg find mustTransitiveContains(source,target);
42750} or {
42751 find mustInRelationeClassifiers_reference_EPackage(problem,interpretation,source,target);
42752}
42753/**
42754 * Matcher for detecting tuples t where []eSubpackages reference EPackage(source,target)
42755 */
42756private pattern mustInRelationeSubpackages_reference_EPackage(
42757 problem:LogicProblem, interpretation:PartialInterpretation,
42758 source: DefinedElement, target:DefinedElement)
42759{
42760 find interpretation(problem,interpretation);
42761 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
42762 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eSubpackages reference EPackage");
42763 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
42764 BinaryElementRelationLink.param1(link,source);
42765 BinaryElementRelationLink.param2(link,target);
42766}
42767/**
42768 * Matcher for detecting tuples t where <>eSubpackages reference EPackage(source,target)
42769 */
42770private pattern mayInRelationeSubpackages_reference_EPackage(
42771 problem:LogicProblem, interpretation:PartialInterpretation,
42772 source: DefinedElement, target:DefinedElement)
42773{
42774 find interpretation(problem,interpretation);
42775 // The two endpoint of the link have to exist
42776 find mayExist(problem, interpretation, source);
42777 find mayExist(problem, interpretation, target);
42778 // Type consistency
42779 find mayInstanceOfEPackage_class(problem,interpretation,source);
42780 find mayInstanceOfEPackage_class(problem,interpretation,target);
42781 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
42782 // the upper bound of the opposite reference multiplicity should be considered.
42783 numberOfExistingOppositeReferences == count find mustInRelationeSuperPackage_reference_EPackage(problem,interpretation,target,_);
42784 check(numberOfExistingOppositeReferences < 1);
42785 // The reference is containment, then a new reference cannot be create if:
42786 // 1. Multiple parents
42787 neg find mustContains4(problem,interpretation,_,target);
42788 // 2. Circle in the containment hierarchy
42789 neg find mustTransitiveContains(source,target);
42790} or {
42791 find mustInRelationeSubpackages_reference_EPackage(problem,interpretation,source,target);
42792}
42793/**
42794 * Matcher for detecting tuples t where []eSuperPackage reference EPackage(source,target)
42795 */
42796private pattern mustInRelationeSuperPackage_reference_EPackage(
42797 problem:LogicProblem, interpretation:PartialInterpretation,
42798 source: DefinedElement, target:DefinedElement)
42799{
42800 find interpretation(problem,interpretation);
42801 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
42802 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eSuperPackage reference EPackage");
42803 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
42804 BinaryElementRelationLink.param1(link,source);
42805 BinaryElementRelationLink.param2(link,target);
42806}
42807/**
42808 * Matcher for detecting tuples t where <>eSuperPackage reference EPackage(source,target)
42809 */
42810private pattern mayInRelationeSuperPackage_reference_EPackage(
42811 problem:LogicProblem, interpretation:PartialInterpretation,
42812 source: DefinedElement, target:DefinedElement)
42813{
42814 find interpretation(problem,interpretation);
42815 // The two endpoint of the link have to exist
42816 find mayExist(problem, interpretation, source);
42817 find mayExist(problem, interpretation, target);
42818 // Type consistency
42819 find mayInstanceOfEPackage_class(problem,interpretation,source);
42820 find mayInstanceOfEPackage_class(problem,interpretation,target);
42821 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
42822 // the upper bound of the multiplicity should be considered.
42823 numberOfExistingReferences == count find mustInRelationeSuperPackage_reference_EPackage(problem,interpretation,source,_);
42824 check(numberOfExistingReferences < 1);
42825 // The eOpposite of the reference is containment, then a referene cannot be created if
42826 // 1. Multiple parents
42827 neg find mustContains4(problem,interpretation,source,_);
42828 // 2. Circle in the containment hierarchy
42829 neg find mustTransitiveContains(source,target);
42830} or {
42831 find mustInRelationeSuperPackage_reference_EPackage(problem,interpretation,source,target);
42832}
42833/**
42834 * Matcher for detecting tuples t where []eOperation reference EParameter(source,target)
42835 */
42836private pattern mustInRelationeOperation_reference_EParameter(
42837 problem:LogicProblem, interpretation:PartialInterpretation,
42838 source: DefinedElement, target:DefinedElement)
42839{
42840 find interpretation(problem,interpretation);
42841 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
42842 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eOperation reference EParameter");
42843 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
42844 BinaryElementRelationLink.param1(link,source);
42845 BinaryElementRelationLink.param2(link,target);
42846}
42847/**
42848 * Matcher for detecting tuples t where <>eOperation reference EParameter(source,target)
42849 */
42850private pattern mayInRelationeOperation_reference_EParameter(
42851 problem:LogicProblem, interpretation:PartialInterpretation,
42852 source: DefinedElement, target:DefinedElement)
42853{
42854 find interpretation(problem,interpretation);
42855 // The two endpoint of the link have to exist
42856 find mayExist(problem, interpretation, source);
42857 find mayExist(problem, interpretation, target);
42858 // Type consistency
42859 find mayInstanceOfEParameter_class(problem,interpretation,source);
42860 find mayInstanceOfEOperation_class(problem,interpretation,target);
42861 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
42862 // the upper bound of the multiplicity should be considered.
42863 numberOfExistingReferences == count find mustInRelationeOperation_reference_EParameter(problem,interpretation,source,_);
42864 check(numberOfExistingReferences < 1);
42865 // The eOpposite of the reference is containment, then a referene cannot be created if
42866 // 1. Multiple parents
42867 neg find mustContains4(problem,interpretation,source,_);
42868 // 2. Circle in the containment hierarchy
42869 neg find mustTransitiveContains(source,target);
42870} or {
42871 find mustInRelationeOperation_reference_EParameter(problem,interpretation,source,target);
42872}
42873/**
42874 * Matcher for detecting tuples t where []eOpposite reference EReference(source,target)
42875 */
42876private pattern mustInRelationeOpposite_reference_EReference(
42877 problem:LogicProblem, interpretation:PartialInterpretation,
42878 source: DefinedElement, target:DefinedElement)
42879{
42880 find interpretation(problem,interpretation);
42881 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
42882 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eOpposite reference EReference");
42883 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
42884 BinaryElementRelationLink.param1(link,source);
42885 BinaryElementRelationLink.param2(link,target);
42886}
42887/**
42888 * Matcher for detecting tuples t where <>eOpposite reference EReference(source,target)
42889 */
42890private pattern mayInRelationeOpposite_reference_EReference(
42891 problem:LogicProblem, interpretation:PartialInterpretation,
42892 source: DefinedElement, target:DefinedElement)
42893{
42894 find interpretation(problem,interpretation);
42895 // The two endpoint of the link have to exist
42896 find mayExist(problem, interpretation, source);
42897 find mayExist(problem, interpretation, target);
42898 // Type consistency
42899 find mayInstanceOfEReference_class(problem,interpretation,source);
42900 find mayInstanceOfEReference_class(problem,interpretation,target);
42901 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
42902 // the upper bound of the multiplicity should be considered.
42903 numberOfExistingReferences == count find mustInRelationeOpposite_reference_EReference(problem,interpretation,source,_);
42904 check(numberOfExistingReferences < 1);
42905} or {
42906 find mustInRelationeOpposite_reference_EReference(problem,interpretation,source,target);
42907}
42908/**
42909 * Matcher for detecting tuples t where []eReferenceType reference EReference(source,target)
42910 */
42911private pattern mustInRelationeReferenceType_reference_EReference(
42912 problem:LogicProblem, interpretation:PartialInterpretation,
42913 source: DefinedElement, target:DefinedElement)
42914{
42915 find interpretation(problem,interpretation);
42916 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
42917 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eReferenceType reference EReference");
42918 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
42919 BinaryElementRelationLink.param1(link,source);
42920 BinaryElementRelationLink.param2(link,target);
42921}
42922/**
42923 * Matcher for detecting tuples t where <>eReferenceType reference EReference(source,target)
42924 */
42925private pattern mayInRelationeReferenceType_reference_EReference(
42926 problem:LogicProblem, interpretation:PartialInterpretation,
42927 source: DefinedElement, target:DefinedElement)
42928{
42929 find interpretation(problem,interpretation);
42930 // The two endpoint of the link have to exist
42931 find mayExist(problem, interpretation, source);
42932 find mayExist(problem, interpretation, target);
42933 // Type consistency
42934 find mayInstanceOfEReference_class(problem,interpretation,source);
42935 find mayInstanceOfEClass_class(problem,interpretation,target);
42936 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
42937 // the upper bound of the multiplicity should be considered.
42938 numberOfExistingReferences == count find mustInRelationeReferenceType_reference_EReference(problem,interpretation,source,_);
42939 check(numberOfExistingReferences < 1);
42940} or {
42941 find mustInRelationeReferenceType_reference_EReference(problem,interpretation,source,target);
42942}
42943/**
42944 * Matcher for detecting tuples t where []eKeys reference EReference(source,target)
42945 */
42946private pattern mustInRelationeKeys_reference_EReference(
42947 problem:LogicProblem, interpretation:PartialInterpretation,
42948 source: DefinedElement, target:DefinedElement)
42949{
42950 find interpretation(problem,interpretation);
42951 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
42952 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eKeys reference EReference");
42953 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
42954 BinaryElementRelationLink.param1(link,source);
42955 BinaryElementRelationLink.param2(link,target);
42956}
42957/**
42958 * Matcher for detecting tuples t where <>eKeys reference EReference(source,target)
42959 */
42960private pattern mayInRelationeKeys_reference_EReference(
42961 problem:LogicProblem, interpretation:PartialInterpretation,
42962 source: DefinedElement, target:DefinedElement)
42963{
42964 find interpretation(problem,interpretation);
42965 // The two endpoint of the link have to exist
42966 find mayExist(problem, interpretation, source);
42967 find mayExist(problem, interpretation, target);
42968 // Type consistency
42969 find mayInstanceOfEReference_class(problem,interpretation,source);
42970 find mayInstanceOfEAttribute_class(problem,interpretation,target);
42971} or {
42972 find mustInRelationeKeys_reference_EReference(problem,interpretation,source,target);
42973}
42974/**
42975 * Matcher for detecting tuples t where []eContainingClass reference EStructuralFeature(source,target)
42976 */
42977private pattern mustInRelationeContainingClass_reference_EStructuralFeature(
42978 problem:LogicProblem, interpretation:PartialInterpretation,
42979 source: DefinedElement, target:DefinedElement)
42980{
42981 find interpretation(problem,interpretation);
42982 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
42983 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eContainingClass reference EStructuralFeature");
42984 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
42985 BinaryElementRelationLink.param1(link,source);
42986 BinaryElementRelationLink.param2(link,target);
42987}
42988/**
42989 * Matcher for detecting tuples t where <>eContainingClass reference EStructuralFeature(source,target)
42990 */
42991private pattern mayInRelationeContainingClass_reference_EStructuralFeature(
42992 problem:LogicProblem, interpretation:PartialInterpretation,
42993 source: DefinedElement, target:DefinedElement)
42994{
42995 find interpretation(problem,interpretation);
42996 // The two endpoint of the link have to exist
42997 find mayExist(problem, interpretation, source);
42998 find mayExist(problem, interpretation, target);
42999 // Type consistency
43000 find mayInstanceOfEStructuralFeature_class(problem,interpretation,source);
43001 find mayInstanceOfEClass_class(problem,interpretation,target);
43002 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
43003 // the upper bound of the multiplicity should be considered.
43004 numberOfExistingReferences == count find mustInRelationeContainingClass_reference_EStructuralFeature(problem,interpretation,source,_);
43005 check(numberOfExistingReferences < 1);
43006 // The eOpposite of the reference is containment, then a referene cannot be created if
43007 // 1. Multiple parents
43008 neg find mustContains4(problem,interpretation,source,_);
43009 // 2. Circle in the containment hierarchy
43010 neg find mustTransitiveContains(source,target);
43011} or {
43012 find mustInRelationeContainingClass_reference_EStructuralFeature(problem,interpretation,source,target);
43013}
43014/**
43015 * Matcher for detecting tuples t where []eType reference ETypedElement(source,target)
43016 */
43017private pattern mustInRelationeType_reference_ETypedElement(
43018 problem:LogicProblem, interpretation:PartialInterpretation,
43019 source: DefinedElement, target:DefinedElement)
43020{
43021 find interpretation(problem,interpretation);
43022 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
43023 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eType reference ETypedElement");
43024 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
43025 BinaryElementRelationLink.param1(link,source);
43026 BinaryElementRelationLink.param2(link,target);
43027}
43028/**
43029 * Matcher for detecting tuples t where <>eType reference ETypedElement(source,target)
43030 */
43031private pattern mayInRelationeType_reference_ETypedElement(
43032 problem:LogicProblem, interpretation:PartialInterpretation,
43033 source: DefinedElement, target:DefinedElement)
43034{
43035 find interpretation(problem,interpretation);
43036 // The two endpoint of the link have to exist
43037 find mayExist(problem, interpretation, source);
43038 find mayExist(problem, interpretation, target);
43039 // Type consistency
43040 find mayInstanceOfETypedElement_class(problem,interpretation,source);
43041 find mayInstanceOfEClassifier_class(problem,interpretation,target);
43042 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
43043 // the upper bound of the multiplicity should be considered.
43044 numberOfExistingReferences == count find mustInRelationeType_reference_ETypedElement(problem,interpretation,source,_);
43045 check(numberOfExistingReferences < 1);
43046} or {
43047 find mustInRelationeType_reference_ETypedElement(problem,interpretation,source,target);
43048}
43049/**
43050 * Matcher for detecting tuples t where []eGenericType reference ETypedElement(source,target)
43051 */
43052private pattern mustInRelationeGenericType_reference_ETypedElement(
43053 problem:LogicProblem, interpretation:PartialInterpretation,
43054 source: DefinedElement, target:DefinedElement)
43055{
43056 find interpretation(problem,interpretation);
43057 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
43058 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eGenericType reference ETypedElement");
43059 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
43060 BinaryElementRelationLink.param1(link,source);
43061 BinaryElementRelationLink.param2(link,target);
43062}
43063/**
43064 * Matcher for detecting tuples t where <>eGenericType reference ETypedElement(source,target)
43065 */
43066private pattern mayInRelationeGenericType_reference_ETypedElement(
43067 problem:LogicProblem, interpretation:PartialInterpretation,
43068 source: DefinedElement, target:DefinedElement)
43069{
43070 find interpretation(problem,interpretation);
43071 // The two endpoint of the link have to exist
43072 find mayExist(problem, interpretation, source);
43073 find mayExist(problem, interpretation, target);
43074 // Type consistency
43075 find mayInstanceOfETypedElement_class(problem,interpretation,source);
43076 find mayInstanceOfEGenericType_class(problem,interpretation,target);
43077 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
43078 // the upper bound of the multiplicity should be considered.
43079 numberOfExistingReferences == count find mustInRelationeGenericType_reference_ETypedElement(problem,interpretation,source,_);
43080 check(numberOfExistingReferences < 1);
43081 // The reference is containment, then a new reference cannot be create if:
43082 // 1. Multiple parents
43083 neg find mustContains4(problem,interpretation,_,target);
43084 // 2. Circle in the containment hierarchy
43085 neg find mustTransitiveContains(source,target);
43086} or {
43087 find mustInRelationeGenericType_reference_ETypedElement(problem,interpretation,source,target);
43088}
43089/**
43090 * Matcher for detecting tuples t where []eUpperBound reference EGenericType(source,target)
43091 */
43092private pattern mustInRelationeUpperBound_reference_EGenericType(
43093 problem:LogicProblem, interpretation:PartialInterpretation,
43094 source: DefinedElement, target:DefinedElement)
43095{
43096 find interpretation(problem,interpretation);
43097 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
43098 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eUpperBound reference EGenericType");
43099 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
43100 BinaryElementRelationLink.param1(link,source);
43101 BinaryElementRelationLink.param2(link,target);
43102}
43103/**
43104 * Matcher for detecting tuples t where <>eUpperBound reference EGenericType(source,target)
43105 */
43106private pattern mayInRelationeUpperBound_reference_EGenericType(
43107 problem:LogicProblem, interpretation:PartialInterpretation,
43108 source: DefinedElement, target:DefinedElement)
43109{
43110 find interpretation(problem,interpretation);
43111 // The two endpoint of the link have to exist
43112 find mayExist(problem, interpretation, source);
43113 find mayExist(problem, interpretation, target);
43114 // Type consistency
43115 find mayInstanceOfEGenericType_class(problem,interpretation,source);
43116 find mayInstanceOfEGenericType_class(problem,interpretation,target);
43117 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
43118 // the upper bound of the multiplicity should be considered.
43119 numberOfExistingReferences == count find mustInRelationeUpperBound_reference_EGenericType(problem,interpretation,source,_);
43120 check(numberOfExistingReferences < 1);
43121 // The reference is containment, then a new reference cannot be create if:
43122 // 1. Multiple parents
43123 neg find mustContains4(problem,interpretation,_,target);
43124 // 2. Circle in the containment hierarchy
43125 neg find mustTransitiveContains(source,target);
43126} or {
43127 find mustInRelationeUpperBound_reference_EGenericType(problem,interpretation,source,target);
43128}
43129/**
43130 * Matcher for detecting tuples t where []eTypeArguments reference EGenericType(source,target)
43131 */
43132private pattern mustInRelationeTypeArguments_reference_EGenericType(
43133 problem:LogicProblem, interpretation:PartialInterpretation,
43134 source: DefinedElement, target:DefinedElement)
43135{
43136 find interpretation(problem,interpretation);
43137 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
43138 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eTypeArguments reference EGenericType");
43139 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
43140 BinaryElementRelationLink.param1(link,source);
43141 BinaryElementRelationLink.param2(link,target);
43142}
43143/**
43144 * Matcher for detecting tuples t where <>eTypeArguments reference EGenericType(source,target)
43145 */
43146private pattern mayInRelationeTypeArguments_reference_EGenericType(
43147 problem:LogicProblem, interpretation:PartialInterpretation,
43148 source: DefinedElement, target:DefinedElement)
43149{
43150 find interpretation(problem,interpretation);
43151 // The two endpoint of the link have to exist
43152 find mayExist(problem, interpretation, source);
43153 find mayExist(problem, interpretation, target);
43154 // Type consistency
43155 find mayInstanceOfEGenericType_class(problem,interpretation,source);
43156 find mayInstanceOfEGenericType_class(problem,interpretation,target);
43157 // The reference is containment, then a new reference cannot be create if:
43158 // 1. Multiple parents
43159 neg find mustContains4(problem,interpretation,_,target);
43160 // 2. Circle in the containment hierarchy
43161 neg find mustTransitiveContains(source,target);
43162} or {
43163 find mustInRelationeTypeArguments_reference_EGenericType(problem,interpretation,source,target);
43164}
43165/**
43166 * Matcher for detecting tuples t where []eRawType reference EGenericType(source,target)
43167 */
43168private pattern mustInRelationeRawType_reference_EGenericType(
43169 problem:LogicProblem, interpretation:PartialInterpretation,
43170 source: DefinedElement, target:DefinedElement)
43171{
43172 find interpretation(problem,interpretation);
43173 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
43174 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eRawType reference EGenericType");
43175 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
43176 BinaryElementRelationLink.param1(link,source);
43177 BinaryElementRelationLink.param2(link,target);
43178}
43179/**
43180 * Matcher for detecting tuples t where <>eRawType reference EGenericType(source,target)
43181 */
43182private pattern mayInRelationeRawType_reference_EGenericType(
43183 problem:LogicProblem, interpretation:PartialInterpretation,
43184 source: DefinedElement, target:DefinedElement)
43185{
43186 find interpretation(problem,interpretation);
43187 // The two endpoint of the link have to exist
43188 find mayExist(problem, interpretation, source);
43189 find mayExist(problem, interpretation, target);
43190 // Type consistency
43191 find mayInstanceOfEGenericType_class(problem,interpretation,source);
43192 find mayInstanceOfEClassifier_class(problem,interpretation,target);
43193 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
43194 // the upper bound of the multiplicity should be considered.
43195 numberOfExistingReferences == count find mustInRelationeRawType_reference_EGenericType(problem,interpretation,source,_);
43196 check(numberOfExistingReferences < 1);
43197} or {
43198 find mustInRelationeRawType_reference_EGenericType(problem,interpretation,source,target);
43199}
43200/**
43201 * Matcher for detecting tuples t where []eLowerBound reference EGenericType(source,target)
43202 */
43203private pattern mustInRelationeLowerBound_reference_EGenericType(
43204 problem:LogicProblem, interpretation:PartialInterpretation,
43205 source: DefinedElement, target:DefinedElement)
43206{
43207 find interpretation(problem,interpretation);
43208 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
43209 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eLowerBound reference EGenericType");
43210 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
43211 BinaryElementRelationLink.param1(link,source);
43212 BinaryElementRelationLink.param2(link,target);
43213}
43214/**
43215 * Matcher for detecting tuples t where <>eLowerBound reference EGenericType(source,target)
43216 */
43217private pattern mayInRelationeLowerBound_reference_EGenericType(
43218 problem:LogicProblem, interpretation:PartialInterpretation,
43219 source: DefinedElement, target:DefinedElement)
43220{
43221 find interpretation(problem,interpretation);
43222 // The two endpoint of the link have to exist
43223 find mayExist(problem, interpretation, source);
43224 find mayExist(problem, interpretation, target);
43225 // Type consistency
43226 find mayInstanceOfEGenericType_class(problem,interpretation,source);
43227 find mayInstanceOfEGenericType_class(problem,interpretation,target);
43228 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
43229 // the upper bound of the multiplicity should be considered.
43230 numberOfExistingReferences == count find mustInRelationeLowerBound_reference_EGenericType(problem,interpretation,source,_);
43231 check(numberOfExistingReferences < 1);
43232 // The reference is containment, then a new reference cannot be create if:
43233 // 1. Multiple parents
43234 neg find mustContains4(problem,interpretation,_,target);
43235 // 2. Circle in the containment hierarchy
43236 neg find mustTransitiveContains(source,target);
43237} or {
43238 find mustInRelationeLowerBound_reference_EGenericType(problem,interpretation,source,target);
43239}
43240/**
43241 * Matcher for detecting tuples t where []eTypeParameter reference EGenericType(source,target)
43242 */
43243private pattern mustInRelationeTypeParameter_reference_EGenericType(
43244 problem:LogicProblem, interpretation:PartialInterpretation,
43245 source: DefinedElement, target:DefinedElement)
43246{
43247 find interpretation(problem,interpretation);
43248 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
43249 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eTypeParameter reference EGenericType");
43250 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
43251 BinaryElementRelationLink.param1(link,source);
43252 BinaryElementRelationLink.param2(link,target);
43253}
43254/**
43255 * Matcher for detecting tuples t where <>eTypeParameter reference EGenericType(source,target)
43256 */
43257private pattern mayInRelationeTypeParameter_reference_EGenericType(
43258 problem:LogicProblem, interpretation:PartialInterpretation,
43259 source: DefinedElement, target:DefinedElement)
43260{
43261 find interpretation(problem,interpretation);
43262 // The two endpoint of the link have to exist
43263 find mayExist(problem, interpretation, source);
43264 find mayExist(problem, interpretation, target);
43265 // Type consistency
43266 find mayInstanceOfEGenericType_class(problem,interpretation,source);
43267 find mayInstanceOfETypeParameter_class(problem,interpretation,target);
43268 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
43269 // the upper bound of the multiplicity should be considered.
43270 numberOfExistingReferences == count find mustInRelationeTypeParameter_reference_EGenericType(problem,interpretation,source,_);
43271 check(numberOfExistingReferences < 1);
43272} or {
43273 find mustInRelationeTypeParameter_reference_EGenericType(problem,interpretation,source,target);
43274}
43275/**
43276 * Matcher for detecting tuples t where []eClassifier reference EGenericType(source,target)
43277 */
43278private pattern mustInRelationeClassifier_reference_EGenericType(
43279 problem:LogicProblem, interpretation:PartialInterpretation,
43280 source: DefinedElement, target:DefinedElement)
43281{
43282 find interpretation(problem,interpretation);
43283 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
43284 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eClassifier reference EGenericType");
43285 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
43286 BinaryElementRelationLink.param1(link,source);
43287 BinaryElementRelationLink.param2(link,target);
43288}
43289/**
43290 * Matcher for detecting tuples t where <>eClassifier reference EGenericType(source,target)
43291 */
43292private pattern mayInRelationeClassifier_reference_EGenericType(
43293 problem:LogicProblem, interpretation:PartialInterpretation,
43294 source: DefinedElement, target:DefinedElement)
43295{
43296 find interpretation(problem,interpretation);
43297 // The two endpoint of the link have to exist
43298 find mayExist(problem, interpretation, source);
43299 find mayExist(problem, interpretation, target);
43300 // Type consistency
43301 find mayInstanceOfEGenericType_class(problem,interpretation,source);
43302 find mayInstanceOfEClassifier_class(problem,interpretation,target);
43303 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
43304 // the upper bound of the multiplicity should be considered.
43305 numberOfExistingReferences == count find mustInRelationeClassifier_reference_EGenericType(problem,interpretation,source,_);
43306 check(numberOfExistingReferences < 1);
43307} or {
43308 find mustInRelationeClassifier_reference_EGenericType(problem,interpretation,source,target);
43309}
43310/**
43311 * Matcher for detecting tuples t where []eBounds reference ETypeParameter(source,target)
43312 */
43313private pattern mustInRelationeBounds_reference_ETypeParameter(
43314 problem:LogicProblem, interpretation:PartialInterpretation,
43315 source: DefinedElement, target:DefinedElement)
43316{
43317 find interpretation(problem,interpretation);
43318 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
43319 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eBounds reference ETypeParameter");
43320 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
43321 BinaryElementRelationLink.param1(link,source);
43322 BinaryElementRelationLink.param2(link,target);
43323}
43324/**
43325 * Matcher for detecting tuples t where <>eBounds reference ETypeParameter(source,target)
43326 */
43327private pattern mayInRelationeBounds_reference_ETypeParameter(
43328 problem:LogicProblem, interpretation:PartialInterpretation,
43329 source: DefinedElement, target:DefinedElement)
43330{
43331 find interpretation(problem,interpretation);
43332 // The two endpoint of the link have to exist
43333 find mayExist(problem, interpretation, source);
43334 find mayExist(problem, interpretation, target);
43335 // Type consistency
43336 find mayInstanceOfETypeParameter_class(problem,interpretation,source);
43337 find mayInstanceOfEGenericType_class(problem,interpretation,target);
43338 // The reference is containment, then a new reference cannot be create if:
43339 // 1. Multiple parents
43340 neg find mustContains4(problem,interpretation,_,target);
43341 // 2. Circle in the containment hierarchy
43342 neg find mustTransitiveContains(source,target);
43343} or {
43344 find mustInRelationeBounds_reference_ETypeParameter(problem,interpretation,source,target);
43345}
43346/**
43347 * Matcher for detecting tuples t where []iD attribute EAttribute(source,target)
43348 */
43349private pattern mustInRelationiD_attribute_EAttribute(
43350 problem:LogicProblem, interpretation:PartialInterpretation,
43351 source: DefinedElement, target:DefinedElement)
43352{
43353 find interpretation(problem,interpretation);
43354 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
43355 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"iD attribute EAttribute");
43356 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
43357 BinaryElementRelationLink.param1(link,source);
43358 BinaryElementRelationLink.param2(link,target);
43359}
43360/**
43361 * Matcher for detecting tuples t where <>iD attribute EAttribute(source,target)
43362 */
43363private pattern mayInRelationiD_attribute_EAttribute(
43364 problem:LogicProblem, interpretation:PartialInterpretation,
43365 source: DefinedElement, target:DefinedElement)
43366{
43367 find interpretation(problem,interpretation);
43368 // The two endpoint of the link have to exist
43369 find mayExist(problem, interpretation, source);
43370 find mayExist(problem, interpretation, target);
43371 // Type consistency
43372 find mayInstanceOfEAttribute_class(problem,interpretation,source);
43373 BooleanElement(target);
43374 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
43375 // the upper bound of the multiplicity should be considered.
43376 numberOfExistingReferences == count find mustInRelationiD_attribute_EAttribute(problem,interpretation,source,_);
43377 check(numberOfExistingReferences < 1);
43378} or {
43379 find mustInRelationiD_attribute_EAttribute(problem,interpretation,source,target);
43380}
43381/**
43382 * Matcher for detecting tuples t where []source attribute EAnnotation(source,target)
43383 */
43384private pattern mustInRelationsource_attribute_EAnnotation(
43385 problem:LogicProblem, interpretation:PartialInterpretation,
43386 source: DefinedElement, target:DefinedElement)
43387{
43388 find interpretation(problem,interpretation);
43389 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
43390 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"source attribute EAnnotation");
43391 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
43392 BinaryElementRelationLink.param1(link,source);
43393 BinaryElementRelationLink.param2(link,target);
43394}
43395/**
43396 * Matcher for detecting tuples t where <>source attribute EAnnotation(source,target)
43397 */
43398private pattern mayInRelationsource_attribute_EAnnotation(
43399 problem:LogicProblem, interpretation:PartialInterpretation,
43400 source: DefinedElement, target:DefinedElement)
43401{
43402 find interpretation(problem,interpretation);
43403 // The two endpoint of the link have to exist
43404 find mayExist(problem, interpretation, source);
43405 find mayExist(problem, interpretation, target);
43406 // Type consistency
43407 find mayInstanceOfEAnnotation_class(problem,interpretation,source);
43408 StringElement(target);
43409 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
43410 // the upper bound of the multiplicity should be considered.
43411 numberOfExistingReferences == count find mustInRelationsource_attribute_EAnnotation(problem,interpretation,source,_);
43412 check(numberOfExistingReferences < 1);
43413} or {
43414 find mustInRelationsource_attribute_EAnnotation(problem,interpretation,source,target);
43415}
43416/**
43417 * Matcher for detecting tuples t where []abstract attribute EClass(source,target)
43418 */
43419private pattern mustInRelationabstract_attribute_EClass(
43420 problem:LogicProblem, interpretation:PartialInterpretation,
43421 source: DefinedElement, target:DefinedElement)
43422{
43423 find interpretation(problem,interpretation);
43424 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
43425 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"abstract attribute EClass");
43426 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
43427 BinaryElementRelationLink.param1(link,source);
43428 BinaryElementRelationLink.param2(link,target);
43429}
43430/**
43431 * Matcher for detecting tuples t where <>abstract attribute EClass(source,target)
43432 */
43433private pattern mayInRelationabstract_attribute_EClass(
43434 problem:LogicProblem, interpretation:PartialInterpretation,
43435 source: DefinedElement, target:DefinedElement)
43436{
43437 find interpretation(problem,interpretation);
43438 // The two endpoint of the link have to exist
43439 find mayExist(problem, interpretation, source);
43440 find mayExist(problem, interpretation, target);
43441 // Type consistency
43442 find mayInstanceOfEClass_class(problem,interpretation,source);
43443 BooleanElement(target);
43444 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
43445 // the upper bound of the multiplicity should be considered.
43446 numberOfExistingReferences == count find mustInRelationabstract_attribute_EClass(problem,interpretation,source,_);
43447 check(numberOfExistingReferences < 1);
43448} or {
43449 find mustInRelationabstract_attribute_EClass(problem,interpretation,source,target);
43450}
43451/**
43452 * Matcher for detecting tuples t where []interface attribute EClass(source,target)
43453 */
43454private pattern mustInRelationinterface_attribute_EClass(
43455 problem:LogicProblem, interpretation:PartialInterpretation,
43456 source: DefinedElement, target:DefinedElement)
43457{
43458 find interpretation(problem,interpretation);
43459 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
43460 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface attribute EClass");
43461 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
43462 BinaryElementRelationLink.param1(link,source);
43463 BinaryElementRelationLink.param2(link,target);
43464}
43465/**
43466 * Matcher for detecting tuples t where <>interface attribute EClass(source,target)
43467 */
43468private pattern mayInRelationinterface_attribute_EClass(
43469 problem:LogicProblem, interpretation:PartialInterpretation,
43470 source: DefinedElement, target:DefinedElement)
43471{
43472 find interpretation(problem,interpretation);
43473 // The two endpoint of the link have to exist
43474 find mayExist(problem, interpretation, source);
43475 find mayExist(problem, interpretation, target);
43476 // Type consistency
43477 find mayInstanceOfEClass_class(problem,interpretation,source);
43478 BooleanElement(target);
43479 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
43480 // the upper bound of the multiplicity should be considered.
43481 numberOfExistingReferences == count find mustInRelationinterface_attribute_EClass(problem,interpretation,source,_);
43482 check(numberOfExistingReferences < 1);
43483} or {
43484 find mustInRelationinterface_attribute_EClass(problem,interpretation,source,target);
43485}
43486/**
43487 * Matcher for detecting tuples t where []instanceClassName attribute EClassifier(source,target)
43488 */
43489private pattern mustInRelationinstanceClassName_attribute_EClassifier(
43490 problem:LogicProblem, interpretation:PartialInterpretation,
43491 source: DefinedElement, target:DefinedElement)
43492{
43493 find interpretation(problem,interpretation);
43494 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
43495 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"instanceClassName attribute EClassifier");
43496 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
43497 BinaryElementRelationLink.param1(link,source);
43498 BinaryElementRelationLink.param2(link,target);
43499}
43500/**
43501 * Matcher for detecting tuples t where <>instanceClassName attribute EClassifier(source,target)
43502 */
43503private pattern mayInRelationinstanceClassName_attribute_EClassifier(
43504 problem:LogicProblem, interpretation:PartialInterpretation,
43505 source: DefinedElement, target:DefinedElement)
43506{
43507 find interpretation(problem,interpretation);
43508 // The two endpoint of the link have to exist
43509 find mayExist(problem, interpretation, source);
43510 find mayExist(problem, interpretation, target);
43511 // Type consistency
43512 find mayInstanceOfEClassifier_class(problem,interpretation,source);
43513 StringElement(target);
43514 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
43515 // the upper bound of the multiplicity should be considered.
43516 numberOfExistingReferences == count find mustInRelationinstanceClassName_attribute_EClassifier(problem,interpretation,source,_);
43517 check(numberOfExistingReferences < 1);
43518} or {
43519 find mustInRelationinstanceClassName_attribute_EClassifier(problem,interpretation,source,target);
43520}
43521/**
43522 * Matcher for detecting tuples t where []instanceTypeName attribute EClassifier(source,target)
43523 */
43524private pattern mustInRelationinstanceTypeName_attribute_EClassifier(
43525 problem:LogicProblem, interpretation:PartialInterpretation,
43526 source: DefinedElement, target:DefinedElement)
43527{
43528 find interpretation(problem,interpretation);
43529 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
43530 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"instanceTypeName attribute EClassifier");
43531 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
43532 BinaryElementRelationLink.param1(link,source);
43533 BinaryElementRelationLink.param2(link,target);
43534}
43535/**
43536 * Matcher for detecting tuples t where <>instanceTypeName attribute EClassifier(source,target)
43537 */
43538private pattern mayInRelationinstanceTypeName_attribute_EClassifier(
43539 problem:LogicProblem, interpretation:PartialInterpretation,
43540 source: DefinedElement, target:DefinedElement)
43541{
43542 find interpretation(problem,interpretation);
43543 // The two endpoint of the link have to exist
43544 find mayExist(problem, interpretation, source);
43545 find mayExist(problem, interpretation, target);
43546 // Type consistency
43547 find mayInstanceOfEClassifier_class(problem,interpretation,source);
43548 StringElement(target);
43549 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
43550 // the upper bound of the multiplicity should be considered.
43551 numberOfExistingReferences == count find mustInRelationinstanceTypeName_attribute_EClassifier(problem,interpretation,source,_);
43552 check(numberOfExistingReferences < 1);
43553} or {
43554 find mustInRelationinstanceTypeName_attribute_EClassifier(problem,interpretation,source,target);
43555}
43556/**
43557 * Matcher for detecting tuples t where []serializable attribute EDataType(source,target)
43558 */
43559private pattern mustInRelationserializable_attribute_EDataType(
43560 problem:LogicProblem, interpretation:PartialInterpretation,
43561 source: DefinedElement, target:DefinedElement)
43562{
43563 find interpretation(problem,interpretation);
43564 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
43565 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"serializable attribute EDataType");
43566 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
43567 BinaryElementRelationLink.param1(link,source);
43568 BinaryElementRelationLink.param2(link,target);
43569}
43570/**
43571 * Matcher for detecting tuples t where <>serializable attribute EDataType(source,target)
43572 */
43573private pattern mayInRelationserializable_attribute_EDataType(
43574 problem:LogicProblem, interpretation:PartialInterpretation,
43575 source: DefinedElement, target:DefinedElement)
43576{
43577 find interpretation(problem,interpretation);
43578 // The two endpoint of the link have to exist
43579 find mayExist(problem, interpretation, source);
43580 find mayExist(problem, interpretation, target);
43581 // Type consistency
43582 find mayInstanceOfEDataType_class(problem,interpretation,source);
43583 BooleanElement(target);
43584 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
43585 // the upper bound of the multiplicity should be considered.
43586 numberOfExistingReferences == count find mustInRelationserializable_attribute_EDataType(problem,interpretation,source,_);
43587 check(numberOfExistingReferences < 1);
43588} or {
43589 find mustInRelationserializable_attribute_EDataType(problem,interpretation,source,target);
43590}
43591/**
43592 * Matcher for detecting tuples t where []value attribute EEnumLiteral(source,target)
43593 */
43594private pattern mustInRelationvalue_attribute_EEnumLiteral(
43595 problem:LogicProblem, interpretation:PartialInterpretation,
43596 source: DefinedElement, target:DefinedElement)
43597{
43598 find interpretation(problem,interpretation);
43599 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
43600 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"value attribute EEnumLiteral");
43601 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
43602 BinaryElementRelationLink.param1(link,source);
43603 BinaryElementRelationLink.param2(link,target);
43604}
43605/**
43606 * Matcher for detecting tuples t where <>value attribute EEnumLiteral(source,target)
43607 */
43608private pattern mayInRelationvalue_attribute_EEnumLiteral(
43609 problem:LogicProblem, interpretation:PartialInterpretation,
43610 source: DefinedElement, target:DefinedElement)
43611{
43612 find interpretation(problem,interpretation);
43613 // The two endpoint of the link have to exist
43614 find mayExist(problem, interpretation, source);
43615 find mayExist(problem, interpretation, target);
43616 // Type consistency
43617 find mayInstanceOfEEnumLiteral_class(problem,interpretation,source);
43618 IntegerElement(target);
43619 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
43620 // the upper bound of the multiplicity should be considered.
43621 numberOfExistingReferences == count find mustInRelationvalue_attribute_EEnumLiteral(problem,interpretation,source,_);
43622 check(numberOfExistingReferences < 1);
43623} or {
43624 find mustInRelationvalue_attribute_EEnumLiteral(problem,interpretation,source,target);
43625}
43626/**
43627 * Matcher for detecting tuples t where []literal attribute EEnumLiteral(source,target)
43628 */
43629private pattern mustInRelationliteral_attribute_EEnumLiteral(
43630 problem:LogicProblem, interpretation:PartialInterpretation,
43631 source: DefinedElement, target:DefinedElement)
43632{
43633 find interpretation(problem,interpretation);
43634 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
43635 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"literal attribute EEnumLiteral");
43636 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
43637 BinaryElementRelationLink.param1(link,source);
43638 BinaryElementRelationLink.param2(link,target);
43639}
43640/**
43641 * Matcher for detecting tuples t where <>literal attribute EEnumLiteral(source,target)
43642 */
43643private pattern mayInRelationliteral_attribute_EEnumLiteral(
43644 problem:LogicProblem, interpretation:PartialInterpretation,
43645 source: DefinedElement, target:DefinedElement)
43646{
43647 find interpretation(problem,interpretation);
43648 // The two endpoint of the link have to exist
43649 find mayExist(problem, interpretation, source);
43650 find mayExist(problem, interpretation, target);
43651 // Type consistency
43652 find mayInstanceOfEEnumLiteral_class(problem,interpretation,source);
43653 StringElement(target);
43654 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
43655 // the upper bound of the multiplicity should be considered.
43656 numberOfExistingReferences == count find mustInRelationliteral_attribute_EEnumLiteral(problem,interpretation,source,_);
43657 check(numberOfExistingReferences < 1);
43658} or {
43659 find mustInRelationliteral_attribute_EEnumLiteral(problem,interpretation,source,target);
43660}
43661/**
43662 * Matcher for detecting tuples t where []name attribute ENamedElement(source,target)
43663 */
43664private pattern mustInRelationname_attribute_ENamedElement(
43665 problem:LogicProblem, interpretation:PartialInterpretation,
43666 source: DefinedElement, target:DefinedElement)
43667{
43668 find interpretation(problem,interpretation);
43669 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
43670 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"name attribute ENamedElement");
43671 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
43672 BinaryElementRelationLink.param1(link,source);
43673 BinaryElementRelationLink.param2(link,target);
43674}
43675/**
43676 * Matcher for detecting tuples t where <>name attribute ENamedElement(source,target)
43677 */
43678private pattern mayInRelationname_attribute_ENamedElement(
43679 problem:LogicProblem, interpretation:PartialInterpretation,
43680 source: DefinedElement, target:DefinedElement)
43681{
43682 find interpretation(problem,interpretation);
43683 // The two endpoint of the link have to exist
43684 find mayExist(problem, interpretation, source);
43685 find mayExist(problem, interpretation, target);
43686 // Type consistency
43687 find mayInstanceOfENamedElement_class(problem,interpretation,source);
43688 StringElement(target);
43689 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
43690 // the upper bound of the multiplicity should be considered.
43691 numberOfExistingReferences == count find mustInRelationname_attribute_ENamedElement(problem,interpretation,source,_);
43692 check(numberOfExistingReferences < 1);
43693} or {
43694 find mustInRelationname_attribute_ENamedElement(problem,interpretation,source,target);
43695}
43696/**
43697 * Matcher for detecting tuples t where []nsURI attribute EPackage(source,target)
43698 */
43699private pattern mustInRelationnsURI_attribute_EPackage(
43700 problem:LogicProblem, interpretation:PartialInterpretation,
43701 source: DefinedElement, target:DefinedElement)
43702{
43703 find interpretation(problem,interpretation);
43704 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
43705 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"nsURI attribute EPackage");
43706 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
43707 BinaryElementRelationLink.param1(link,source);
43708 BinaryElementRelationLink.param2(link,target);
43709}
43710/**
43711 * Matcher for detecting tuples t where <>nsURI attribute EPackage(source,target)
43712 */
43713private pattern mayInRelationnsURI_attribute_EPackage(
43714 problem:LogicProblem, interpretation:PartialInterpretation,
43715 source: DefinedElement, target:DefinedElement)
43716{
43717 find interpretation(problem,interpretation);
43718 // The two endpoint of the link have to exist
43719 find mayExist(problem, interpretation, source);
43720 find mayExist(problem, interpretation, target);
43721 // Type consistency
43722 find mayInstanceOfEPackage_class(problem,interpretation,source);
43723 StringElement(target);
43724 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
43725 // the upper bound of the multiplicity should be considered.
43726 numberOfExistingReferences == count find mustInRelationnsURI_attribute_EPackage(problem,interpretation,source,_);
43727 check(numberOfExistingReferences < 1);
43728} or {
43729 find mustInRelationnsURI_attribute_EPackage(problem,interpretation,source,target);
43730}
43731/**
43732 * Matcher for detecting tuples t where []nsPrefix attribute EPackage(source,target)
43733 */
43734private pattern mustInRelationnsPrefix_attribute_EPackage(
43735 problem:LogicProblem, interpretation:PartialInterpretation,
43736 source: DefinedElement, target:DefinedElement)
43737{
43738 find interpretation(problem,interpretation);
43739 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
43740 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"nsPrefix attribute EPackage");
43741 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
43742 BinaryElementRelationLink.param1(link,source);
43743 BinaryElementRelationLink.param2(link,target);
43744}
43745/**
43746 * Matcher for detecting tuples t where <>nsPrefix attribute EPackage(source,target)
43747 */
43748private pattern mayInRelationnsPrefix_attribute_EPackage(
43749 problem:LogicProblem, interpretation:PartialInterpretation,
43750 source: DefinedElement, target:DefinedElement)
43751{
43752 find interpretation(problem,interpretation);
43753 // The two endpoint of the link have to exist
43754 find mayExist(problem, interpretation, source);
43755 find mayExist(problem, interpretation, target);
43756 // Type consistency
43757 find mayInstanceOfEPackage_class(problem,interpretation,source);
43758 StringElement(target);
43759 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
43760 // the upper bound of the multiplicity should be considered.
43761 numberOfExistingReferences == count find mustInRelationnsPrefix_attribute_EPackage(problem,interpretation,source,_);
43762 check(numberOfExistingReferences < 1);
43763} or {
43764 find mustInRelationnsPrefix_attribute_EPackage(problem,interpretation,source,target);
43765}
43766/**
43767 * Matcher for detecting tuples t where []containment attribute EReference(source,target)
43768 */
43769private pattern mustInRelationcontainment_attribute_EReference(
43770 problem:LogicProblem, interpretation:PartialInterpretation,
43771 source: DefinedElement, target:DefinedElement)
43772{
43773 find interpretation(problem,interpretation);
43774 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
43775 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"containment attribute EReference");
43776 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
43777 BinaryElementRelationLink.param1(link,source);
43778 BinaryElementRelationLink.param2(link,target);
43779}
43780/**
43781 * Matcher for detecting tuples t where <>containment attribute EReference(source,target)
43782 */
43783private pattern mayInRelationcontainment_attribute_EReference(
43784 problem:LogicProblem, interpretation:PartialInterpretation,
43785 source: DefinedElement, target:DefinedElement)
43786{
43787 find interpretation(problem,interpretation);
43788 // The two endpoint of the link have to exist
43789 find mayExist(problem, interpretation, source);
43790 find mayExist(problem, interpretation, target);
43791 // Type consistency
43792 find mayInstanceOfEReference_class(problem,interpretation,source);
43793 BooleanElement(target);
43794 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
43795 // the upper bound of the multiplicity should be considered.
43796 numberOfExistingReferences == count find mustInRelationcontainment_attribute_EReference(problem,interpretation,source,_);
43797 check(numberOfExistingReferences < 1);
43798} or {
43799 find mustInRelationcontainment_attribute_EReference(problem,interpretation,source,target);
43800}
43801/**
43802 * Matcher for detecting tuples t where []container attribute EReference(source,target)
43803 */
43804private pattern mustInRelationcontainer_attribute_EReference(
43805 problem:LogicProblem, interpretation:PartialInterpretation,
43806 source: DefinedElement, target:DefinedElement)
43807{
43808 find interpretation(problem,interpretation);
43809 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
43810 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"container attribute EReference");
43811 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
43812 BinaryElementRelationLink.param1(link,source);
43813 BinaryElementRelationLink.param2(link,target);
43814}
43815/**
43816 * Matcher for detecting tuples t where <>container attribute EReference(source,target)
43817 */
43818private pattern mayInRelationcontainer_attribute_EReference(
43819 problem:LogicProblem, interpretation:PartialInterpretation,
43820 source: DefinedElement, target:DefinedElement)
43821{
43822 find interpretation(problem,interpretation);
43823 // The two endpoint of the link have to exist
43824 find mayExist(problem, interpretation, source);
43825 find mayExist(problem, interpretation, target);
43826 // Type consistency
43827 find mayInstanceOfEReference_class(problem,interpretation,source);
43828 BooleanElement(target);
43829 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
43830 // the upper bound of the multiplicity should be considered.
43831 numberOfExistingReferences == count find mustInRelationcontainer_attribute_EReference(problem,interpretation,source,_);
43832 check(numberOfExistingReferences < 1);
43833} or {
43834 find mustInRelationcontainer_attribute_EReference(problem,interpretation,source,target);
43835}
43836/**
43837 * Matcher for detecting tuples t where []resolveProxies attribute EReference(source,target)
43838 */
43839private pattern mustInRelationresolveProxies_attribute_EReference(
43840 problem:LogicProblem, interpretation:PartialInterpretation,
43841 source: DefinedElement, target:DefinedElement)
43842{
43843 find interpretation(problem,interpretation);
43844 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
43845 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"resolveProxies attribute EReference");
43846 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
43847 BinaryElementRelationLink.param1(link,source);
43848 BinaryElementRelationLink.param2(link,target);
43849}
43850/**
43851 * Matcher for detecting tuples t where <>resolveProxies attribute EReference(source,target)
43852 */
43853private pattern mayInRelationresolveProxies_attribute_EReference(
43854 problem:LogicProblem, interpretation:PartialInterpretation,
43855 source: DefinedElement, target:DefinedElement)
43856{
43857 find interpretation(problem,interpretation);
43858 // The two endpoint of the link have to exist
43859 find mayExist(problem, interpretation, source);
43860 find mayExist(problem, interpretation, target);
43861 // Type consistency
43862 find mayInstanceOfEReference_class(problem,interpretation,source);
43863 BooleanElement(target);
43864 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
43865 // the upper bound of the multiplicity should be considered.
43866 numberOfExistingReferences == count find mustInRelationresolveProxies_attribute_EReference(problem,interpretation,source,_);
43867 check(numberOfExistingReferences < 1);
43868} or {
43869 find mustInRelationresolveProxies_attribute_EReference(problem,interpretation,source,target);
43870}
43871/**
43872 * Matcher for detecting tuples t where []changeable attribute EStructuralFeature(source,target)
43873 */
43874private pattern mustInRelationchangeable_attribute_EStructuralFeature(
43875 problem:LogicProblem, interpretation:PartialInterpretation,
43876 source: DefinedElement, target:DefinedElement)
43877{
43878 find interpretation(problem,interpretation);
43879 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
43880 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"changeable attribute EStructuralFeature");
43881 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
43882 BinaryElementRelationLink.param1(link,source);
43883 BinaryElementRelationLink.param2(link,target);
43884}
43885/**
43886 * Matcher for detecting tuples t where <>changeable attribute EStructuralFeature(source,target)
43887 */
43888private pattern mayInRelationchangeable_attribute_EStructuralFeature(
43889 problem:LogicProblem, interpretation:PartialInterpretation,
43890 source: DefinedElement, target:DefinedElement)
43891{
43892 find interpretation(problem,interpretation);
43893 // The two endpoint of the link have to exist
43894 find mayExist(problem, interpretation, source);
43895 find mayExist(problem, interpretation, target);
43896 // Type consistency
43897 find mayInstanceOfEStructuralFeature_class(problem,interpretation,source);
43898 BooleanElement(target);
43899 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
43900 // the upper bound of the multiplicity should be considered.
43901 numberOfExistingReferences == count find mustInRelationchangeable_attribute_EStructuralFeature(problem,interpretation,source,_);
43902 check(numberOfExistingReferences < 1);
43903} or {
43904 find mustInRelationchangeable_attribute_EStructuralFeature(problem,interpretation,source,target);
43905}
43906/**
43907 * Matcher for detecting tuples t where []volatile attribute EStructuralFeature(source,target)
43908 */
43909private pattern mustInRelationvolatile_attribute_EStructuralFeature(
43910 problem:LogicProblem, interpretation:PartialInterpretation,
43911 source: DefinedElement, target:DefinedElement)
43912{
43913 find interpretation(problem,interpretation);
43914 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
43915 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"volatile attribute EStructuralFeature");
43916 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
43917 BinaryElementRelationLink.param1(link,source);
43918 BinaryElementRelationLink.param2(link,target);
43919}
43920/**
43921 * Matcher for detecting tuples t where <>volatile attribute EStructuralFeature(source,target)
43922 */
43923private pattern mayInRelationvolatile_attribute_EStructuralFeature(
43924 problem:LogicProblem, interpretation:PartialInterpretation,
43925 source: DefinedElement, target:DefinedElement)
43926{
43927 find interpretation(problem,interpretation);
43928 // The two endpoint of the link have to exist
43929 find mayExist(problem, interpretation, source);
43930 find mayExist(problem, interpretation, target);
43931 // Type consistency
43932 find mayInstanceOfEStructuralFeature_class(problem,interpretation,source);
43933 BooleanElement(target);
43934 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
43935 // the upper bound of the multiplicity should be considered.
43936 numberOfExistingReferences == count find mustInRelationvolatile_attribute_EStructuralFeature(problem,interpretation,source,_);
43937 check(numberOfExistingReferences < 1);
43938} or {
43939 find mustInRelationvolatile_attribute_EStructuralFeature(problem,interpretation,source,target);
43940}
43941/**
43942 * Matcher for detecting tuples t where []transient attribute EStructuralFeature(source,target)
43943 */
43944private pattern mustInRelationtransient_attribute_EStructuralFeature(
43945 problem:LogicProblem, interpretation:PartialInterpretation,
43946 source: DefinedElement, target:DefinedElement)
43947{
43948 find interpretation(problem,interpretation);
43949 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
43950 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"transient attribute EStructuralFeature");
43951 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
43952 BinaryElementRelationLink.param1(link,source);
43953 BinaryElementRelationLink.param2(link,target);
43954}
43955/**
43956 * Matcher for detecting tuples t where <>transient attribute EStructuralFeature(source,target)
43957 */
43958private pattern mayInRelationtransient_attribute_EStructuralFeature(
43959 problem:LogicProblem, interpretation:PartialInterpretation,
43960 source: DefinedElement, target:DefinedElement)
43961{
43962 find interpretation(problem,interpretation);
43963 // The two endpoint of the link have to exist
43964 find mayExist(problem, interpretation, source);
43965 find mayExist(problem, interpretation, target);
43966 // Type consistency
43967 find mayInstanceOfEStructuralFeature_class(problem,interpretation,source);
43968 BooleanElement(target);
43969 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
43970 // the upper bound of the multiplicity should be considered.
43971 numberOfExistingReferences == count find mustInRelationtransient_attribute_EStructuralFeature(problem,interpretation,source,_);
43972 check(numberOfExistingReferences < 1);
43973} or {
43974 find mustInRelationtransient_attribute_EStructuralFeature(problem,interpretation,source,target);
43975}
43976/**
43977 * Matcher for detecting tuples t where []defaultValueLiteral attribute EStructuralFeature(source,target)
43978 */
43979private pattern mustInRelationdefaultValueLiteral_attribute_EStructuralFeature(
43980 problem:LogicProblem, interpretation:PartialInterpretation,
43981 source: DefinedElement, target:DefinedElement)
43982{
43983 find interpretation(problem,interpretation);
43984 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
43985 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"defaultValueLiteral attribute EStructuralFeature");
43986 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
43987 BinaryElementRelationLink.param1(link,source);
43988 BinaryElementRelationLink.param2(link,target);
43989}
43990/**
43991 * Matcher for detecting tuples t where <>defaultValueLiteral attribute EStructuralFeature(source,target)
43992 */
43993private pattern mayInRelationdefaultValueLiteral_attribute_EStructuralFeature(
43994 problem:LogicProblem, interpretation:PartialInterpretation,
43995 source: DefinedElement, target:DefinedElement)
43996{
43997 find interpretation(problem,interpretation);
43998 // The two endpoint of the link have to exist
43999 find mayExist(problem, interpretation, source);
44000 find mayExist(problem, interpretation, target);
44001 // Type consistency
44002 find mayInstanceOfEStructuralFeature_class(problem,interpretation,source);
44003 StringElement(target);
44004 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
44005 // the upper bound of the multiplicity should be considered.
44006 numberOfExistingReferences == count find mustInRelationdefaultValueLiteral_attribute_EStructuralFeature(problem,interpretation,source,_);
44007 check(numberOfExistingReferences < 1);
44008} or {
44009 find mustInRelationdefaultValueLiteral_attribute_EStructuralFeature(problem,interpretation,source,target);
44010}
44011/**
44012 * Matcher for detecting tuples t where []unsettable attribute EStructuralFeature(source,target)
44013 */
44014private pattern mustInRelationunsettable_attribute_EStructuralFeature(
44015 problem:LogicProblem, interpretation:PartialInterpretation,
44016 source: DefinedElement, target:DefinedElement)
44017{
44018 find interpretation(problem,interpretation);
44019 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
44020 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"unsettable attribute EStructuralFeature");
44021 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
44022 BinaryElementRelationLink.param1(link,source);
44023 BinaryElementRelationLink.param2(link,target);
44024}
44025/**
44026 * Matcher for detecting tuples t where <>unsettable attribute EStructuralFeature(source,target)
44027 */
44028private pattern mayInRelationunsettable_attribute_EStructuralFeature(
44029 problem:LogicProblem, interpretation:PartialInterpretation,
44030 source: DefinedElement, target:DefinedElement)
44031{
44032 find interpretation(problem,interpretation);
44033 // The two endpoint of the link have to exist
44034 find mayExist(problem, interpretation, source);
44035 find mayExist(problem, interpretation, target);
44036 // Type consistency
44037 find mayInstanceOfEStructuralFeature_class(problem,interpretation,source);
44038 BooleanElement(target);
44039 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
44040 // the upper bound of the multiplicity should be considered.
44041 numberOfExistingReferences == count find mustInRelationunsettable_attribute_EStructuralFeature(problem,interpretation,source,_);
44042 check(numberOfExistingReferences < 1);
44043} or {
44044 find mustInRelationunsettable_attribute_EStructuralFeature(problem,interpretation,source,target);
44045}
44046/**
44047 * Matcher for detecting tuples t where []derived attribute EStructuralFeature(source,target)
44048 */
44049private pattern mustInRelationderived_attribute_EStructuralFeature(
44050 problem:LogicProblem, interpretation:PartialInterpretation,
44051 source: DefinedElement, target:DefinedElement)
44052{
44053 find interpretation(problem,interpretation);
44054 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
44055 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"derived attribute EStructuralFeature");
44056 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
44057 BinaryElementRelationLink.param1(link,source);
44058 BinaryElementRelationLink.param2(link,target);
44059}
44060/**
44061 * Matcher for detecting tuples t where <>derived attribute EStructuralFeature(source,target)
44062 */
44063private pattern mayInRelationderived_attribute_EStructuralFeature(
44064 problem:LogicProblem, interpretation:PartialInterpretation,
44065 source: DefinedElement, target:DefinedElement)
44066{
44067 find interpretation(problem,interpretation);
44068 // The two endpoint of the link have to exist
44069 find mayExist(problem, interpretation, source);
44070 find mayExist(problem, interpretation, target);
44071 // Type consistency
44072 find mayInstanceOfEStructuralFeature_class(problem,interpretation,source);
44073 BooleanElement(target);
44074 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
44075 // the upper bound of the multiplicity should be considered.
44076 numberOfExistingReferences == count find mustInRelationderived_attribute_EStructuralFeature(problem,interpretation,source,_);
44077 check(numberOfExistingReferences < 1);
44078} or {
44079 find mustInRelationderived_attribute_EStructuralFeature(problem,interpretation,source,target);
44080}
44081/**
44082 * Matcher for detecting tuples t where []ordered attribute ETypedElement(source,target)
44083 */
44084private pattern mustInRelationordered_attribute_ETypedElement(
44085 problem:LogicProblem, interpretation:PartialInterpretation,
44086 source: DefinedElement, target:DefinedElement)
44087{
44088 find interpretation(problem,interpretation);
44089 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
44090 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"ordered attribute ETypedElement");
44091 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
44092 BinaryElementRelationLink.param1(link,source);
44093 BinaryElementRelationLink.param2(link,target);
44094}
44095/**
44096 * Matcher for detecting tuples t where <>ordered attribute ETypedElement(source,target)
44097 */
44098private pattern mayInRelationordered_attribute_ETypedElement(
44099 problem:LogicProblem, interpretation:PartialInterpretation,
44100 source: DefinedElement, target:DefinedElement)
44101{
44102 find interpretation(problem,interpretation);
44103 // The two endpoint of the link have to exist
44104 find mayExist(problem, interpretation, source);
44105 find mayExist(problem, interpretation, target);
44106 // Type consistency
44107 find mayInstanceOfETypedElement_class(problem,interpretation,source);
44108 BooleanElement(target);
44109 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
44110 // the upper bound of the multiplicity should be considered.
44111 numberOfExistingReferences == count find mustInRelationordered_attribute_ETypedElement(problem,interpretation,source,_);
44112 check(numberOfExistingReferences < 1);
44113} or {
44114 find mustInRelationordered_attribute_ETypedElement(problem,interpretation,source,target);
44115}
44116/**
44117 * Matcher for detecting tuples t where []unique attribute ETypedElement(source,target)
44118 */
44119private pattern mustInRelationunique_attribute_ETypedElement(
44120 problem:LogicProblem, interpretation:PartialInterpretation,
44121 source: DefinedElement, target:DefinedElement)
44122{
44123 find interpretation(problem,interpretation);
44124 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
44125 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"unique attribute ETypedElement");
44126 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
44127 BinaryElementRelationLink.param1(link,source);
44128 BinaryElementRelationLink.param2(link,target);
44129}
44130/**
44131 * Matcher for detecting tuples t where <>unique attribute ETypedElement(source,target)
44132 */
44133private pattern mayInRelationunique_attribute_ETypedElement(
44134 problem:LogicProblem, interpretation:PartialInterpretation,
44135 source: DefinedElement, target:DefinedElement)
44136{
44137 find interpretation(problem,interpretation);
44138 // The two endpoint of the link have to exist
44139 find mayExist(problem, interpretation, source);
44140 find mayExist(problem, interpretation, target);
44141 // Type consistency
44142 find mayInstanceOfETypedElement_class(problem,interpretation,source);
44143 BooleanElement(target);
44144 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
44145 // the upper bound of the multiplicity should be considered.
44146 numberOfExistingReferences == count find mustInRelationunique_attribute_ETypedElement(problem,interpretation,source,_);
44147 check(numberOfExistingReferences < 1);
44148} or {
44149 find mustInRelationunique_attribute_ETypedElement(problem,interpretation,source,target);
44150}
44151/**
44152 * Matcher for detecting tuples t where []lowerBound attribute ETypedElement(source,target)
44153 */
44154private pattern mustInRelationlowerBound_attribute_ETypedElement(
44155 problem:LogicProblem, interpretation:PartialInterpretation,
44156 source: DefinedElement, target:DefinedElement)
44157{
44158 find interpretation(problem,interpretation);
44159 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
44160 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"lowerBound attribute ETypedElement");
44161 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
44162 BinaryElementRelationLink.param1(link,source);
44163 BinaryElementRelationLink.param2(link,target);
44164}
44165/**
44166 * Matcher for detecting tuples t where <>lowerBound attribute ETypedElement(source,target)
44167 */
44168private pattern mayInRelationlowerBound_attribute_ETypedElement(
44169 problem:LogicProblem, interpretation:PartialInterpretation,
44170 source: DefinedElement, target:DefinedElement)
44171{
44172 find interpretation(problem,interpretation);
44173 // The two endpoint of the link have to exist
44174 find mayExist(problem, interpretation, source);
44175 find mayExist(problem, interpretation, target);
44176 // Type consistency
44177 find mayInstanceOfETypedElement_class(problem,interpretation,source);
44178 IntegerElement(target);
44179 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
44180 // the upper bound of the multiplicity should be considered.
44181 numberOfExistingReferences == count find mustInRelationlowerBound_attribute_ETypedElement(problem,interpretation,source,_);
44182 check(numberOfExistingReferences < 1);
44183} or {
44184 find mustInRelationlowerBound_attribute_ETypedElement(problem,interpretation,source,target);
44185}
44186/**
44187 * Matcher for detecting tuples t where []upperBound attribute ETypedElement(source,target)
44188 */
44189private pattern mustInRelationupperBound_attribute_ETypedElement(
44190 problem:LogicProblem, interpretation:PartialInterpretation,
44191 source: DefinedElement, target:DefinedElement)
44192{
44193 find interpretation(problem,interpretation);
44194 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
44195 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"upperBound attribute ETypedElement");
44196 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
44197 BinaryElementRelationLink.param1(link,source);
44198 BinaryElementRelationLink.param2(link,target);
44199}
44200/**
44201 * Matcher for detecting tuples t where <>upperBound attribute ETypedElement(source,target)
44202 */
44203private pattern mayInRelationupperBound_attribute_ETypedElement(
44204 problem:LogicProblem, interpretation:PartialInterpretation,
44205 source: DefinedElement, target:DefinedElement)
44206{
44207 find interpretation(problem,interpretation);
44208 // The two endpoint of the link have to exist
44209 find mayExist(problem, interpretation, source);
44210 find mayExist(problem, interpretation, target);
44211 // Type consistency
44212 find mayInstanceOfETypedElement_class(problem,interpretation,source);
44213 IntegerElement(target);
44214 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
44215 // the upper bound of the multiplicity should be considered.
44216 numberOfExistingReferences == count find mustInRelationupperBound_attribute_ETypedElement(problem,interpretation,source,_);
44217 check(numberOfExistingReferences < 1);
44218} or {
44219 find mustInRelationupperBound_attribute_ETypedElement(problem,interpretation,source,target);
44220}
44221/**
44222 * Matcher for detecting tuples t where []many attribute ETypedElement(source,target)
44223 */
44224private pattern mustInRelationmany_attribute_ETypedElement(
44225 problem:LogicProblem, interpretation:PartialInterpretation,
44226 source: DefinedElement, target:DefinedElement)
44227{
44228 find interpretation(problem,interpretation);
44229 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
44230 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"many attribute ETypedElement");
44231 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
44232 BinaryElementRelationLink.param1(link,source);
44233 BinaryElementRelationLink.param2(link,target);
44234}
44235/**
44236 * Matcher for detecting tuples t where <>many attribute ETypedElement(source,target)
44237 */
44238private pattern mayInRelationmany_attribute_ETypedElement(
44239 problem:LogicProblem, interpretation:PartialInterpretation,
44240 source: DefinedElement, target:DefinedElement)
44241{
44242 find interpretation(problem,interpretation);
44243 // The two endpoint of the link have to exist
44244 find mayExist(problem, interpretation, source);
44245 find mayExist(problem, interpretation, target);
44246 // Type consistency
44247 find mayInstanceOfETypedElement_class(problem,interpretation,source);
44248 BooleanElement(target);
44249 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
44250 // the upper bound of the multiplicity should be considered.
44251 numberOfExistingReferences == count find mustInRelationmany_attribute_ETypedElement(problem,interpretation,source,_);
44252 check(numberOfExistingReferences < 1);
44253} or {
44254 find mustInRelationmany_attribute_ETypedElement(problem,interpretation,source,target);
44255}
44256/**
44257 * Matcher for detecting tuples t where []required attribute ETypedElement(source,target)
44258 */
44259private pattern mustInRelationrequired_attribute_ETypedElement(
44260 problem:LogicProblem, interpretation:PartialInterpretation,
44261 source: DefinedElement, target:DefinedElement)
44262{
44263 find interpretation(problem,interpretation);
44264 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
44265 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"required attribute ETypedElement");
44266 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
44267 BinaryElementRelationLink.param1(link,source);
44268 BinaryElementRelationLink.param2(link,target);
44269}
44270/**
44271 * Matcher for detecting tuples t where <>required attribute ETypedElement(source,target)
44272 */
44273private pattern mayInRelationrequired_attribute_ETypedElement(
44274 problem:LogicProblem, interpretation:PartialInterpretation,
44275 source: DefinedElement, target:DefinedElement)
44276{
44277 find interpretation(problem,interpretation);
44278 // The two endpoint of the link have to exist
44279 find mayExist(problem, interpretation, source);
44280 find mayExist(problem, interpretation, target);
44281 // Type consistency
44282 find mayInstanceOfETypedElement_class(problem,interpretation,source);
44283 BooleanElement(target);
44284 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
44285 // the upper bound of the multiplicity should be considered.
44286 numberOfExistingReferences == count find mustInRelationrequired_attribute_ETypedElement(problem,interpretation,source,_);
44287 check(numberOfExistingReferences < 1);
44288} or {
44289 find mustInRelationrequired_attribute_ETypedElement(problem,interpretation,source,target);
44290}
44291/**
44292 * Matcher for detecting tuples t where []key attribute EStringToStringMapEntry(source,target)
44293 */
44294private pattern mustInRelationkey_attribute_EStringToStringMapEntry(
44295 problem:LogicProblem, interpretation:PartialInterpretation,
44296 source: DefinedElement, target:DefinedElement)
44297{
44298 find interpretation(problem,interpretation);
44299 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
44300 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"key attribute EStringToStringMapEntry");
44301 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
44302 BinaryElementRelationLink.param1(link,source);
44303 BinaryElementRelationLink.param2(link,target);
44304}
44305/**
44306 * Matcher for detecting tuples t where <>key attribute EStringToStringMapEntry(source,target)
44307 */
44308private pattern mayInRelationkey_attribute_EStringToStringMapEntry(
44309 problem:LogicProblem, interpretation:PartialInterpretation,
44310 source: DefinedElement, target:DefinedElement)
44311{
44312 find interpretation(problem,interpretation);
44313 // The two endpoint of the link have to exist
44314 find mayExist(problem, interpretation, source);
44315 find mayExist(problem, interpretation, target);
44316 // Type consistency
44317 find mayInstanceOfEStringToStringMapEntry_class(problem,interpretation,source);
44318 StringElement(target);
44319 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
44320 // the upper bound of the multiplicity should be considered.
44321 numberOfExistingReferences == count find mustInRelationkey_attribute_EStringToStringMapEntry(problem,interpretation,source,_);
44322 check(numberOfExistingReferences < 1);
44323} or {
44324 find mustInRelationkey_attribute_EStringToStringMapEntry(problem,interpretation,source,target);
44325}
44326/**
44327 * Matcher for detecting tuples t where []value attribute EStringToStringMapEntry(source,target)
44328 */
44329private pattern mustInRelationvalue_attribute_EStringToStringMapEntry(
44330 problem:LogicProblem, interpretation:PartialInterpretation,
44331 source: DefinedElement, target:DefinedElement)
44332{
44333 find interpretation(problem,interpretation);
44334 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
44335 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"value attribute EStringToStringMapEntry");
44336 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
44337 BinaryElementRelationLink.param1(link,source);
44338 BinaryElementRelationLink.param2(link,target);
44339}
44340/**
44341 * Matcher for detecting tuples t where <>value attribute EStringToStringMapEntry(source,target)
44342 */
44343private pattern mayInRelationvalue_attribute_EStringToStringMapEntry(
44344 problem:LogicProblem, interpretation:PartialInterpretation,
44345 source: DefinedElement, target:DefinedElement)
44346{
44347 find interpretation(problem,interpretation);
44348 // The two endpoint of the link have to exist
44349 find mayExist(problem, interpretation, source);
44350 find mayExist(problem, interpretation, target);
44351 // Type consistency
44352 find mayInstanceOfEStringToStringMapEntry_class(problem,interpretation,source);
44353 StringElement(target);
44354 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
44355 // the upper bound of the multiplicity should be considered.
44356 numberOfExistingReferences == count find mustInRelationvalue_attribute_EStringToStringMapEntry(problem,interpretation,source,_);
44357 check(numberOfExistingReferences < 1);
44358} or {
44359 find mustInRelationvalue_attribute_EStringToStringMapEntry(problem,interpretation,source,target);
44360}
44361
44362//////////
44363// 1.3 Relation Definition Indexers
44364//////////
44365
44366//////////
44367// 1.4 Containment Indexer
44368//////////
44369private pattern mustContains2(source: DefinedElement, target: DefinedElement) {
44370 find mustContains4(_,_,source,target);
44371}
44372
44373private pattern mustContains4(problem:LogicProblem, interpretation:PartialInterpretation,
44374 source: DefinedElement, target: DefinedElement)
44375 { find mustInRelationdetails_reference_EAnnotation(problem,interpretation,source,target); }or
44376
44377 { find mustInRelationcontents_reference_EAnnotation(problem,interpretation,source,target); }or
44378
44379 { find mustInRelationeOperations_reference_EClass(problem,interpretation,source,target); }or
44380
44381 { find mustInRelationeStructuralFeatures_reference_EClass(problem,interpretation,source,target); }or
44382
44383 { find mustInRelationeGenericSuperTypes_reference_EClass(problem,interpretation,source,target); }or
44384
44385 { find mustInRelationeTypeParameters_reference_EClassifier(problem,interpretation,source,target); }or
44386
44387 { find mustInRelationeLiterals_reference_EEnum(problem,interpretation,source,target); }or
44388
44389 { find mustInRelationeAnnotations_reference_EModelElement(problem,interpretation,source,target); }or
44390
44391 { find mustInRelationeTypeParameters_reference_EOperation(problem,interpretation,source,target); }or
44392
44393 { find mustInRelationeParameters_reference_EOperation(problem,interpretation,source,target); }or
44394
44395 { find mustInRelationeGenericExceptions_reference_EOperation(problem,interpretation,source,target); }or
44396
44397 { find mustInRelationeClassifiers_reference_EPackage(problem,interpretation,source,target); }or
44398
44399 { find mustInRelationeSubpackages_reference_EPackage(problem,interpretation,source,target); }or
44400
44401 { find mustInRelationeGenericType_reference_ETypedElement(problem,interpretation,source,target); }or
44402
44403 { find mustInRelationeUpperBound_reference_EGenericType(problem,interpretation,source,target); }or
44404
44405 { find mustInRelationeTypeArguments_reference_EGenericType(problem,interpretation,source,target); }or
44406
44407 { find mustInRelationeLowerBound_reference_EGenericType(problem,interpretation,source,target); }or
44408
44409 { find mustInRelationeBounds_reference_ETypeParameter(problem,interpretation,source,target); }
44410
44411private pattern mustTransitiveContains(source,target) {
44412 find mustContains2+(source,target);
44413}
44414
44415//////////
44416// 2. Invalidation Indexers
44417//////////
44418// 2.1 Invalidated by WF Queries
44419//////////
44420
44421//////////
44422// 3. Unfinishedness Indexers
44423//////////
44424// 3.1 Unfinishedness Measured by Multiplicity
44425//////////
44426pattern unfinishedLowerMultiplicity_eAttributeType_reference_EAttribute(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) {
44427 find interpretation(problem,interpretation);
44428 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
44429 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAttributeType reference EAttribute");
44430 find mustInstanceOfEAttribute_class(problem,interpretation,object);
44431 numberOfExistingReferences == count find mustInRelationeAttributeType_reference_EAttribute(problem,interpretation,object,_);
44432 check(numberOfExistingReferences < 1);
44433 missingMultiplicity == eval(1-numberOfExistingReferences);
44434}
44435pattern unfinishedLowerMultiplicity_eReferenceType_reference_EReference(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) {
44436 find interpretation(problem,interpretation);
44437 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
44438 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eReferenceType reference EReference");
44439 find mustInstanceOfEReference_class(problem,interpretation,object);
44440 numberOfExistingReferences == count find mustInRelationeReferenceType_reference_EReference(problem,interpretation,object,_);
44441 check(numberOfExistingReferences < 1);
44442 missingMultiplicity == eval(1-numberOfExistingReferences);
44443}
44444pattern unfinishedLowerMultiplicity_eRawType_reference_EGenericType(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) {
44445 find interpretation(problem,interpretation);
44446 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
44447 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eRawType reference EGenericType");
44448 find mustInstanceOfEGenericType_class(problem,interpretation,object);
44449 numberOfExistingReferences == count find mustInRelationeRawType_reference_EGenericType(problem,interpretation,object,_);
44450 check(numberOfExistingReferences < 1);
44451 missingMultiplicity == eval(1-numberOfExistingReferences);
44452}
44453
44454//////////
44455// 3.2 Unfinishedness Measured by WF Queries
44456//////////
44457
44458//////////
44459// 4. Refinement Indexers
44460//////////
44461// 4.1 Object constructors
44462//////////
44463private pattern hasElementInContainment(problem:LogicProblem, interpretation:PartialInterpretation)
44464{
44465 find interpretation(problem,interpretation);
44466 find mustInstanceOfETypeParameter_class(problem,interpretation,root);
44467 find mustExist(problem, interpretation, root);
44468}or{
44469 find interpretation(problem,interpretation);
44470 find mustInstanceOfETypedElement_class(problem,interpretation,root);
44471 find mustExist(problem, interpretation, root);
44472}or{
44473 find interpretation(problem,interpretation);
44474 find mustInstanceOfEClass_class(problem,interpretation,root);
44475 find mustExist(problem, interpretation, root);
44476}or{
44477 find interpretation(problem,interpretation);
44478 find mustInstanceOfEStructuralFeature_class(problem,interpretation,root);
44479 find mustExist(problem, interpretation, root);
44480}or{
44481 find interpretation(problem,interpretation);
44482 find mustInstanceOfEAnnotation_class(problem,interpretation,root);
44483 find mustExist(problem, interpretation, root);
44484}or{
44485 find interpretation(problem,interpretation);
44486 find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,root);
44487 find mustExist(problem, interpretation, root);
44488}or{
44489 find interpretation(problem,interpretation);
44490 find mustInstanceOfEAttribute_class(problem,interpretation,root);
44491 find mustExist(problem, interpretation, root);
44492}or{
44493 find interpretation(problem,interpretation);
44494 find mustInstanceOfEObject_class(problem,interpretation,root);
44495 find mustExist(problem, interpretation, root);
44496}or{
44497 find interpretation(problem,interpretation);
44498 find mustInstanceOfEClassifier_class(problem,interpretation,root);
44499 find mustExist(problem, interpretation, root);
44500}or{
44501 find interpretation(problem,interpretation);
44502 find mustInstanceOfEGenericType_class(problem,interpretation,root);
44503 find mustExist(problem, interpretation, root);
44504}or{
44505 find interpretation(problem,interpretation);
44506 find mustInstanceOfEEnumLiteral_class(problem,interpretation,root);
44507 find mustExist(problem, interpretation, root);
44508}or{
44509 find interpretation(problem,interpretation);
44510 find mustInstanceOfEDataType_class(problem,interpretation,root);
44511 find mustExist(problem, interpretation, root);
44512}or{
44513 find interpretation(problem,interpretation);
44514 find mustInstanceOfEOperation_class(problem,interpretation,root);
44515 find mustExist(problem, interpretation, root);
44516}or{
44517 find interpretation(problem,interpretation);
44518 find mustInstanceOfEPackage_class(problem,interpretation,root);
44519 find mustExist(problem, interpretation, root);
44520}or{
44521 find interpretation(problem,interpretation);
44522 find mustInstanceOfEParameter_class(problem,interpretation,root);
44523 find mustExist(problem, interpretation, root);
44524}or{
44525 find interpretation(problem,interpretation);
44526 find mustInstanceOfEModelElement_class(problem,interpretation,root);
44527 find mustExist(problem, interpretation, root);
44528}or{
44529 find interpretation(problem,interpretation);
44530 find mustInstanceOfEReference_class(problem,interpretation,root);
44531 find mustExist(problem, interpretation, root);
44532}or{
44533 find interpretation(problem,interpretation);
44534 find mustInstanceOfEEnum_class(problem,interpretation,root);
44535 find mustExist(problem, interpretation, root);
44536}or{
44537 find interpretation(problem,interpretation);
44538 find mustInstanceOfENamedElement_class(problem,interpretation,root);
44539 find mustExist(problem, interpretation, root);
44540}or{
44541 find interpretation(problem,interpretation);
44542 find mustInstanceOfEModelElement_class_DefinedPart(problem,interpretation,root);
44543 find mustExist(problem, interpretation, root);
44544}or{
44545 find interpretation(problem,interpretation);
44546 find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,root);
44547 find mustExist(problem, interpretation, root);
44548}or{
44549 find interpretation(problem,interpretation);
44550 find mustInstanceOfENamedElement_class_DefinedPart(problem,interpretation,root);
44551 find mustExist(problem, interpretation, root);
44552}or{
44553 find interpretation(problem,interpretation);
44554 find mustInstanceOfENamedElement_class_UndefinedPart(problem,interpretation,root);
44555 find mustExist(problem, interpretation, root);
44556}or{
44557 find interpretation(problem,interpretation);
44558 find mustInstanceOfEPackage_class_DefinedPart(problem,interpretation,root);
44559 find mustExist(problem, interpretation, root);
44560}or{
44561 find interpretation(problem,interpretation);
44562 find mustInstanceOfEPackage_class_UndefinedPart(problem,interpretation,root);
44563 find mustExist(problem, interpretation, root);
44564}
44565pattern createObject_EEnum_class_by_eClassifiers_reference_EPackage_with_ePackage_reference_EClassifier(
44566 problem:LogicProblem, interpretation:PartialInterpretation,
44567 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
44568 container:DefinedElement)
44569{
44570 find interpretation(problem,interpretation);
44571 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
44572 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EEnum class");
44573 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
44574 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eClassifiers reference EPackage");
44575 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
44576 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"ePackage reference EClassifier");
44577 find mustInstanceOfEPackage_class(problem,interpretation,container);
44578 find mayInstanceOfEEnum_class(problem,interpretation,newObject);
44579 find mayInRelationeClassifiers_reference_EPackage(problem,interpretation,container,newObject);
44580 find mustExist(problem, interpretation, container);
44581 neg find mustExist(problem, interpretation, newObject);
44582}
44583pattern createObject_EEnum_class(
44584 problem:LogicProblem, interpretation:PartialInterpretation,
44585 typeInterpretation:PartialComplexTypeInterpretation)
44586{
44587 find interpretation(problem,interpretation);
44588 neg find hasElementInContainment(problem,interpretation);
44589 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
44590 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EEnum class");
44591 find mayInstanceOfEEnum_class(problem,interpretation,newObject);
44592 find mayExist(problem, interpretation, newObject);
44593 neg find mustExist(problem, interpretation, newObject);
44594}
44595pattern createObject_EAttribute_class_by_eStructuralFeatures_reference_EClass_with_eContainingClass_reference_EStructuralFeature(
44596 problem:LogicProblem, interpretation:PartialInterpretation,
44597 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
44598 container:DefinedElement)
44599{
44600 find interpretation(problem,interpretation);
44601 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
44602 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EAttribute class");
44603 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
44604 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eStructuralFeatures reference EClass");
44605 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
44606 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"eContainingClass reference EStructuralFeature");
44607 find mustInstanceOfEClass_class(problem,interpretation,container);
44608 find mayInstanceOfEAttribute_class(problem,interpretation,newObject);
44609 find mayInRelationeStructuralFeatures_reference_EClass(problem,interpretation,container,newObject);
44610 find mustExist(problem, interpretation, container);
44611 neg find mustExist(problem, interpretation, newObject);
44612}
44613pattern createObject_EAttribute_class(
44614 problem:LogicProblem, interpretation:PartialInterpretation,
44615 typeInterpretation:PartialComplexTypeInterpretation)
44616{
44617 find interpretation(problem,interpretation);
44618 neg find hasElementInContainment(problem,interpretation);
44619 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
44620 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EAttribute class");
44621 find mayInstanceOfEAttribute_class(problem,interpretation,newObject);
44622 find mayExist(problem, interpretation, newObject);
44623 neg find mustExist(problem, interpretation, newObject);
44624}
44625pattern createObject_EObject_class_by_contents_reference_EAnnotation(
44626 problem:LogicProblem, interpretation:PartialInterpretation,
44627 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
44628 container:DefinedElement)
44629{
44630 find interpretation(problem,interpretation);
44631 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
44632 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EObject class");
44633 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
44634 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"contents reference EAnnotation");
44635 find mustInstanceOfEAnnotation_class(problem,interpretation,container);
44636 find mayInstanceOfEObject_class(problem,interpretation,newObject);
44637 find mayInRelationcontents_reference_EAnnotation(problem,interpretation,container,newObject);
44638 find mustExist(problem, interpretation, container);
44639 neg find mustExist(problem, interpretation, newObject);
44640}
44641pattern createObject_EObject_class(
44642 problem:LogicProblem, interpretation:PartialInterpretation,
44643 typeInterpretation:PartialComplexTypeInterpretation)
44644{
44645 find interpretation(problem,interpretation);
44646 neg find hasElementInContainment(problem,interpretation);
44647 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
44648 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EObject class");
44649 find mayInstanceOfEObject_class(problem,interpretation,newObject);
44650 find mayExist(problem, interpretation, newObject);
44651 neg find mustExist(problem, interpretation, newObject);
44652}
44653pattern createObject_EReference_class_by_eStructuralFeatures_reference_EClass_with_eContainingClass_reference_EStructuralFeature(
44654 problem:LogicProblem, interpretation:PartialInterpretation,
44655 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
44656 container:DefinedElement)
44657{
44658 find interpretation(problem,interpretation);
44659 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
44660 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EReference class");
44661 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
44662 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eStructuralFeatures reference EClass");
44663 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
44664 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"eContainingClass reference EStructuralFeature");
44665 find mustInstanceOfEClass_class(problem,interpretation,container);
44666 find mayInstanceOfEReference_class(problem,interpretation,newObject);
44667 find mayInRelationeStructuralFeatures_reference_EClass(problem,interpretation,container,newObject);
44668 find mustExist(problem, interpretation, container);
44669 neg find mustExist(problem, interpretation, newObject);
44670}
44671pattern createObject_EReference_class(
44672 problem:LogicProblem, interpretation:PartialInterpretation,
44673 typeInterpretation:PartialComplexTypeInterpretation)
44674{
44675 find interpretation(problem,interpretation);
44676 neg find hasElementInContainment(problem,interpretation);
44677 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
44678 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EReference class");
44679 find mayInstanceOfEReference_class(problem,interpretation,newObject);
44680 find mayExist(problem, interpretation, newObject);
44681 neg find mustExist(problem, interpretation, newObject);
44682}
44683pattern createObject_EPackage_class_UndefinedPart_by_eSubpackages_reference_EPackage_with_eSuperPackage_reference_EPackage(
44684 problem:LogicProblem, interpretation:PartialInterpretation,
44685 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
44686 container:DefinedElement)
44687{
44688 find interpretation(problem,interpretation);
44689 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
44690 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EPackage class UndefinedPart");
44691 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
44692 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eSubpackages reference EPackage");
44693 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
44694 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"eSuperPackage reference EPackage");
44695 find mustInstanceOfEPackage_class(problem,interpretation,container);
44696 find mayInstanceOfEPackage_class_UndefinedPart(problem,interpretation,newObject);
44697 find mayInRelationeSubpackages_reference_EPackage(problem,interpretation,container,newObject);
44698 find mustExist(problem, interpretation, container);
44699 neg find mustExist(problem, interpretation, newObject);
44700}
44701pattern createObject_EPackage_class_UndefinedPart(
44702 problem:LogicProblem, interpretation:PartialInterpretation,
44703 typeInterpretation:PartialComplexTypeInterpretation)
44704{
44705 find interpretation(problem,interpretation);
44706 neg find hasElementInContainment(problem,interpretation);
44707 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
44708 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EPackage class UndefinedPart");
44709 find mayInstanceOfEPackage_class_UndefinedPart(problem,interpretation,newObject);
44710 find mayExist(problem, interpretation, newObject);
44711 neg find mustExist(problem, interpretation, newObject);
44712}
44713pattern createObject_EAnnotation_class_by_eAnnotations_reference_EModelElement_with_eModelElement_reference_EAnnotation(
44714 problem:LogicProblem, interpretation:PartialInterpretation,
44715 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
44716 container:DefinedElement)
44717{
44718 find interpretation(problem,interpretation);
44719 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
44720 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EAnnotation class");
44721 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
44722 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eAnnotations reference EModelElement");
44723 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
44724 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"eModelElement reference EAnnotation");
44725 find mustInstanceOfEModelElement_class(problem,interpretation,container);
44726 find mayInstanceOfEAnnotation_class(problem,interpretation,newObject);
44727 find mayInRelationeAnnotations_reference_EModelElement(problem,interpretation,container,newObject);
44728 find mustExist(problem, interpretation, container);
44729 neg find mustExist(problem, interpretation, newObject);
44730}
44731pattern createObject_EAnnotation_class(
44732 problem:LogicProblem, interpretation:PartialInterpretation,
44733 typeInterpretation:PartialComplexTypeInterpretation)
44734{
44735 find interpretation(problem,interpretation);
44736 neg find hasElementInContainment(problem,interpretation);
44737 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
44738 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EAnnotation class");
44739 find mayInstanceOfEAnnotation_class(problem,interpretation,newObject);
44740 find mayExist(problem, interpretation, newObject);
44741 neg find mustExist(problem, interpretation, newObject);
44742}
44743pattern createObject_EParameter_class_by_eParameters_reference_EOperation_with_eOperation_reference_EParameter(
44744 problem:LogicProblem, interpretation:PartialInterpretation,
44745 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
44746 container:DefinedElement)
44747{
44748 find interpretation(problem,interpretation);
44749 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
44750 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EParameter class");
44751 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
44752 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eParameters reference EOperation");
44753 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
44754 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"eOperation reference EParameter");
44755 find mustInstanceOfEOperation_class(problem,interpretation,container);
44756 find mayInstanceOfEParameter_class(problem,interpretation,newObject);
44757 find mayInRelationeParameters_reference_EOperation(problem,interpretation,container,newObject);
44758 find mustExist(problem, interpretation, container);
44759 neg find mustExist(problem, interpretation, newObject);
44760}
44761pattern createObject_EParameter_class(
44762 problem:LogicProblem, interpretation:PartialInterpretation,
44763 typeInterpretation:PartialComplexTypeInterpretation)
44764{
44765 find interpretation(problem,interpretation);
44766 neg find hasElementInContainment(problem,interpretation);
44767 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
44768 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EParameter class");
44769 find mayInstanceOfEParameter_class(problem,interpretation,newObject);
44770 find mayExist(problem, interpretation, newObject);
44771 neg find mustExist(problem, interpretation, newObject);
44772}
44773pattern createObject_EDataType_class_by_eClassifiers_reference_EPackage_with_ePackage_reference_EClassifier(
44774 problem:LogicProblem, interpretation:PartialInterpretation,
44775 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
44776 container:DefinedElement)
44777{
44778 find interpretation(problem,interpretation);
44779 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
44780 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EDataType class");
44781 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
44782 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eClassifiers reference EPackage");
44783 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
44784 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"ePackage reference EClassifier");
44785 find mustInstanceOfEPackage_class(problem,interpretation,container);
44786 find mayInstanceOfEDataType_class(problem,interpretation,newObject);
44787 find mayInRelationeClassifiers_reference_EPackage(problem,interpretation,container,newObject);
44788 find mustExist(problem, interpretation, container);
44789 neg find mustExist(problem, interpretation, newObject);
44790}
44791pattern createObject_EDataType_class(
44792 problem:LogicProblem, interpretation:PartialInterpretation,
44793 typeInterpretation:PartialComplexTypeInterpretation)
44794{
44795 find interpretation(problem,interpretation);
44796 neg find hasElementInContainment(problem,interpretation);
44797 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
44798 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EDataType class");
44799 find mayInstanceOfEDataType_class(problem,interpretation,newObject);
44800 find mayExist(problem, interpretation, newObject);
44801 neg find mustExist(problem, interpretation, newObject);
44802}
44803pattern createObject_EOperation_class_by_eOperations_reference_EClass_with_eContainingClass_reference_EOperation(
44804 problem:LogicProblem, interpretation:PartialInterpretation,
44805 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
44806 container:DefinedElement)
44807{
44808 find interpretation(problem,interpretation);
44809 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
44810 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EOperation class");
44811 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
44812 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eOperations reference EClass");
44813 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
44814 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"eContainingClass reference EOperation");
44815 find mustInstanceOfEClass_class(problem,interpretation,container);
44816 find mayInstanceOfEOperation_class(problem,interpretation,newObject);
44817 find mayInRelationeOperations_reference_EClass(problem,interpretation,container,newObject);
44818 find mustExist(problem, interpretation, container);
44819 neg find mustExist(problem, interpretation, newObject);
44820}
44821pattern createObject_EOperation_class(
44822 problem:LogicProblem, interpretation:PartialInterpretation,
44823 typeInterpretation:PartialComplexTypeInterpretation)
44824{
44825 find interpretation(problem,interpretation);
44826 neg find hasElementInContainment(problem,interpretation);
44827 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
44828 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EOperation class");
44829 find mayInstanceOfEOperation_class(problem,interpretation,newObject);
44830 find mayExist(problem, interpretation, newObject);
44831 neg find mustExist(problem, interpretation, newObject);
44832}
44833pattern createObject_EStringToStringMapEntry_class_by_details_reference_EAnnotation(
44834 problem:LogicProblem, interpretation:PartialInterpretation,
44835 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
44836 container:DefinedElement)
44837{
44838 find interpretation(problem,interpretation);
44839 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
44840 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EStringToStringMapEntry class");
44841 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
44842 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"details reference EAnnotation");
44843 find mustInstanceOfEAnnotation_class(problem,interpretation,container);
44844 find mayInstanceOfEStringToStringMapEntry_class(problem,interpretation,newObject);
44845 find mayInRelationdetails_reference_EAnnotation(problem,interpretation,container,newObject);
44846 find mustExist(problem, interpretation, container);
44847 neg find mustExist(problem, interpretation, newObject);
44848}
44849pattern createObject_EStringToStringMapEntry_class(
44850 problem:LogicProblem, interpretation:PartialInterpretation,
44851 typeInterpretation:PartialComplexTypeInterpretation)
44852{
44853 find interpretation(problem,interpretation);
44854 neg find hasElementInContainment(problem,interpretation);
44855 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
44856 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EStringToStringMapEntry class");
44857 find mayInstanceOfEStringToStringMapEntry_class(problem,interpretation,newObject);
44858 find mayExist(problem, interpretation, newObject);
44859 neg find mustExist(problem, interpretation, newObject);
44860}
44861pattern createObject_EEnumLiteral_class_by_eLiterals_reference_EEnum_with_eEnum_reference_EEnumLiteral(
44862 problem:LogicProblem, interpretation:PartialInterpretation,
44863 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
44864 container:DefinedElement)
44865{
44866 find interpretation(problem,interpretation);
44867 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
44868 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EEnumLiteral class");
44869 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
44870 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eLiterals reference EEnum");
44871 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
44872 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"eEnum reference EEnumLiteral");
44873 find mustInstanceOfEEnum_class(problem,interpretation,container);
44874 find mayInstanceOfEEnumLiteral_class(problem,interpretation,newObject);
44875 find mayInRelationeLiterals_reference_EEnum(problem,interpretation,container,newObject);
44876 find mustExist(problem, interpretation, container);
44877 neg find mustExist(problem, interpretation, newObject);
44878}
44879pattern createObject_EEnumLiteral_class(
44880 problem:LogicProblem, interpretation:PartialInterpretation,
44881 typeInterpretation:PartialComplexTypeInterpretation)
44882{
44883 find interpretation(problem,interpretation);
44884 neg find hasElementInContainment(problem,interpretation);
44885 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
44886 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EEnumLiteral class");
44887 find mayInstanceOfEEnumLiteral_class(problem,interpretation,newObject);
44888 find mayExist(problem, interpretation, newObject);
44889 neg find mustExist(problem, interpretation, newObject);
44890}
44891pattern createObject_EClass_class_by_eClassifiers_reference_EPackage_with_ePackage_reference_EClassifier(
44892 problem:LogicProblem, interpretation:PartialInterpretation,
44893 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
44894 container:DefinedElement)
44895{
44896 find interpretation(problem,interpretation);
44897 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
44898 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EClass class");
44899 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
44900 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eClassifiers reference EPackage");
44901 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
44902 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"ePackage reference EClassifier");
44903 find mustInstanceOfEPackage_class(problem,interpretation,container);
44904 find mayInstanceOfEClass_class(problem,interpretation,newObject);
44905 find mayInRelationeClassifiers_reference_EPackage(problem,interpretation,container,newObject);
44906 find mustExist(problem, interpretation, container);
44907 neg find mustExist(problem, interpretation, newObject);
44908}
44909pattern createObject_EClass_class(
44910 problem:LogicProblem, interpretation:PartialInterpretation,
44911 typeInterpretation:PartialComplexTypeInterpretation)
44912{
44913 find interpretation(problem,interpretation);
44914 neg find hasElementInContainment(problem,interpretation);
44915 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
44916 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EClass class");
44917 find mayInstanceOfEClass_class(problem,interpretation,newObject);
44918 find mayExist(problem, interpretation, newObject);
44919 neg find mustExist(problem, interpretation, newObject);
44920}
44921pattern createObject_ETypeParameter_class_by_eTypeParameters_reference_EClassifier(
44922 problem:LogicProblem, interpretation:PartialInterpretation,
44923 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
44924 container:DefinedElement)
44925{
44926 find interpretation(problem,interpretation);
44927 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
44928 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"ETypeParameter class");
44929 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
44930 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eTypeParameters reference EClassifier");
44931 find mustInstanceOfEClassifier_class(problem,interpretation,container);
44932 find mayInstanceOfETypeParameter_class(problem,interpretation,newObject);
44933 find mayInRelationeTypeParameters_reference_EClassifier(problem,interpretation,container,newObject);
44934 find mustExist(problem, interpretation, container);
44935 neg find mustExist(problem, interpretation, newObject);
44936}
44937pattern createObject_ETypeParameter_class_by_eTypeParameters_reference_EOperation(
44938 problem:LogicProblem, interpretation:PartialInterpretation,
44939 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
44940 container:DefinedElement)
44941{
44942 find interpretation(problem,interpretation);
44943 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
44944 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"ETypeParameter class");
44945 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
44946 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eTypeParameters reference EOperation");
44947 find mustInstanceOfEOperation_class(problem,interpretation,container);
44948 find mayInstanceOfETypeParameter_class(problem,interpretation,newObject);
44949 find mayInRelationeTypeParameters_reference_EOperation(problem,interpretation,container,newObject);
44950 find mustExist(problem, interpretation, container);
44951 neg find mustExist(problem, interpretation, newObject);
44952}
44953pattern createObject_ETypeParameter_class(
44954 problem:LogicProblem, interpretation:PartialInterpretation,
44955 typeInterpretation:PartialComplexTypeInterpretation)
44956{
44957 find interpretation(problem,interpretation);
44958 neg find hasElementInContainment(problem,interpretation);
44959 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
44960 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"ETypeParameter class");
44961 find mayInstanceOfETypeParameter_class(problem,interpretation,newObject);
44962 find mayExist(problem, interpretation, newObject);
44963 neg find mustExist(problem, interpretation, newObject);
44964}
44965pattern createObject_EGenericType_class_by_eGenericSuperTypes_reference_EClass(
44966 problem:LogicProblem, interpretation:PartialInterpretation,
44967 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
44968 container:DefinedElement)
44969{
44970 find interpretation(problem,interpretation);
44971 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
44972 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class");
44973 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
44974 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eGenericSuperTypes reference EClass");
44975 find mustInstanceOfEClass_class(problem,interpretation,container);
44976 find mayInstanceOfEGenericType_class(problem,interpretation,newObject);
44977 find mayInRelationeGenericSuperTypes_reference_EClass(problem,interpretation,container,newObject);
44978 find mustExist(problem, interpretation, container);
44979 neg find mustExist(problem, interpretation, newObject);
44980}
44981pattern createObject_EGenericType_class_by_eGenericExceptions_reference_EOperation(
44982 problem:LogicProblem, interpretation:PartialInterpretation,
44983 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
44984 container:DefinedElement)
44985{
44986 find interpretation(problem,interpretation);
44987 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
44988 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class");
44989 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
44990 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eGenericExceptions reference EOperation");
44991 find mustInstanceOfEOperation_class(problem,interpretation,container);
44992 find mayInstanceOfEGenericType_class(problem,interpretation,newObject);
44993 find mayInRelationeGenericExceptions_reference_EOperation(problem,interpretation,container,newObject);
44994 find mustExist(problem, interpretation, container);
44995 neg find mustExist(problem, interpretation, newObject);
44996}
44997pattern createObject_EGenericType_class_by_eGenericType_reference_ETypedElement(
44998 problem:LogicProblem, interpretation:PartialInterpretation,
44999 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
45000 container:DefinedElement)
45001{
45002 find interpretation(problem,interpretation);
45003 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
45004 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class");
45005 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
45006 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eGenericType reference ETypedElement");
45007 find mustInstanceOfETypedElement_class(problem,interpretation,container);
45008 find mayInstanceOfEGenericType_class(problem,interpretation,newObject);
45009 find mayInRelationeGenericType_reference_ETypedElement(problem,interpretation,container,newObject);
45010 find mustExist(problem, interpretation, container);
45011 neg find mustExist(problem, interpretation, newObject);
45012}
45013pattern createObject_EGenericType_class_by_eUpperBound_reference_EGenericType(
45014 problem:LogicProblem, interpretation:PartialInterpretation,
45015 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
45016 container:DefinedElement)
45017{
45018 find interpretation(problem,interpretation);
45019 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
45020 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class");
45021 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
45022 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eUpperBound reference EGenericType");
45023 find mustInstanceOfEGenericType_class(problem,interpretation,container);
45024 find mayInstanceOfEGenericType_class(problem,interpretation,newObject);
45025 find mayInRelationeUpperBound_reference_EGenericType(problem,interpretation,container,newObject);
45026 find mustExist(problem, interpretation, container);
45027 neg find mustExist(problem, interpretation, newObject);
45028}
45029pattern createObject_EGenericType_class_by_eTypeArguments_reference_EGenericType(
45030 problem:LogicProblem, interpretation:PartialInterpretation,
45031 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
45032 container:DefinedElement)
45033{
45034 find interpretation(problem,interpretation);
45035 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
45036 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class");
45037 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
45038 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eTypeArguments reference EGenericType");
45039 find mustInstanceOfEGenericType_class(problem,interpretation,container);
45040 find mayInstanceOfEGenericType_class(problem,interpretation,newObject);
45041 find mayInRelationeTypeArguments_reference_EGenericType(problem,interpretation,container,newObject);
45042 find mustExist(problem, interpretation, container);
45043 neg find mustExist(problem, interpretation, newObject);
45044}
45045pattern createObject_EGenericType_class_by_eLowerBound_reference_EGenericType(
45046 problem:LogicProblem, interpretation:PartialInterpretation,
45047 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
45048 container:DefinedElement)
45049{
45050 find interpretation(problem,interpretation);
45051 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
45052 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class");
45053 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
45054 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eLowerBound reference EGenericType");
45055 find mustInstanceOfEGenericType_class(problem,interpretation,container);
45056 find mayInstanceOfEGenericType_class(problem,interpretation,newObject);
45057 find mayInRelationeLowerBound_reference_EGenericType(problem,interpretation,container,newObject);
45058 find mustExist(problem, interpretation, container);
45059 neg find mustExist(problem, interpretation, newObject);
45060}
45061pattern createObject_EGenericType_class_by_eBounds_reference_ETypeParameter(
45062 problem:LogicProblem, interpretation:PartialInterpretation,
45063 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
45064 container:DefinedElement)
45065{
45066 find interpretation(problem,interpretation);
45067 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
45068 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class");
45069 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
45070 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eBounds reference ETypeParameter");
45071 find mustInstanceOfETypeParameter_class(problem,interpretation,container);
45072 find mayInstanceOfEGenericType_class(problem,interpretation,newObject);
45073 find mayInRelationeBounds_reference_ETypeParameter(problem,interpretation,container,newObject);
45074 find mustExist(problem, interpretation, container);
45075 neg find mustExist(problem, interpretation, newObject);
45076}
45077pattern createObject_EGenericType_class(
45078 problem:LogicProblem, interpretation:PartialInterpretation,
45079 typeInterpretation:PartialComplexTypeInterpretation)
45080{
45081 find interpretation(problem,interpretation);
45082 neg find hasElementInContainment(problem,interpretation);
45083 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
45084 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class");
45085 find mayInstanceOfEGenericType_class(problem,interpretation,newObject);
45086 find mayExist(problem, interpretation, newObject);
45087 neg find mustExist(problem, interpretation, newObject);
45088}
45089
45090//////////
45091// 4.2 Type refinement
45092//////////
45093pattern refineTypeTo_EEnum_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
45094 find interpretation(problem,interpretation);
45095 PartialInterpretation.newElements(interpretation,element);
45096 find mayInstanceOfEEnum_class(problem,interpretation,element);
45097 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
45098 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
45099 neg find mustInstanceOfEEnum_class(problem,interpretation,element);
45100 neg find mustInstanceOfEObject_class(problem,interpretation,element);
45101 neg find mustInstanceOfEClass_class(problem,interpretation,element);
45102 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
45103 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
45104 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
45105 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
45106 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
45107}
45108pattern refineTypeTo_EAttribute_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
45109 find interpretation(problem,interpretation);
45110 PartialInterpretation.newElements(interpretation,element);
45111 find mayInstanceOfEAttribute_class(problem,interpretation,element);
45112 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
45113 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
45114 neg find mustInstanceOfEAttribute_class(problem,interpretation,element);
45115 neg find mustInstanceOfEObject_class(problem,interpretation,element);
45116 neg find mustInstanceOfEReference_class(problem,interpretation,element);
45117 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
45118 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
45119 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
45120 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
45121 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
45122 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
45123 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
45124}
45125pattern refineTypeTo_EObject_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
45126 find interpretation(problem,interpretation);
45127 PartialInterpretation.newElements(interpretation,element);
45128 find mayInstanceOfEObject_class(problem,interpretation,element);
45129 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
45130 neg find mustInstanceOfEObject_class(problem,interpretation,element);
45131 neg find mustInstanceOfEModelElement_class(problem,interpretation,element);
45132 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
45133}
45134pattern refineTypeTo_EReference_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
45135 find interpretation(problem,interpretation);
45136 PartialInterpretation.newElements(interpretation,element);
45137 find mayInstanceOfEReference_class(problem,interpretation,element);
45138 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
45139 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
45140 neg find mustInstanceOfEAttribute_class(problem,interpretation,element);
45141 neg find mustInstanceOfEObject_class(problem,interpretation,element);
45142 neg find mustInstanceOfEReference_class(problem,interpretation,element);
45143 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
45144 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
45145 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
45146 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
45147 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
45148 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
45149 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
45150}
45151pattern refineTypeTo_EPackage_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
45152 find interpretation(problem,interpretation);
45153 PartialInterpretation.newElements(interpretation,element);
45154 find mayInstanceOfEPackage_class_UndefinedPart(problem,interpretation,element);
45155 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
45156 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
45157 neg find mustInstanceOfEObject_class(problem,interpretation,element);
45158 neg find mustInstanceOfEPackage_class_UndefinedPart(problem,interpretation,element);
45159 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
45160 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
45161 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
45162 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
45163 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
45164}
45165pattern refineTypeTo_EAnnotation_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
45166 find interpretation(problem,interpretation);
45167 PartialInterpretation.newElements(interpretation,element);
45168 find mayInstanceOfEAnnotation_class(problem,interpretation,element);
45169 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
45170 neg find mustInstanceOfEObject_class(problem,interpretation,element);
45171 neg find mustInstanceOfENamedElement_class(problem,interpretation,element);
45172 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
45173 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
45174}
45175pattern refineTypeTo_EParameter_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
45176 find interpretation(problem,interpretation);
45177 PartialInterpretation.newElements(interpretation,element);
45178 find mayInstanceOfEParameter_class(problem,interpretation,element);
45179 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
45180 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
45181 neg find mustInstanceOfEObject_class(problem,interpretation,element);
45182 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
45183 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
45184 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
45185 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
45186 neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element);
45187 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
45188 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
45189 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
45190}
45191pattern refineTypeTo_EDataType_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
45192 find interpretation(problem,interpretation);
45193 PartialInterpretation.newElements(interpretation,element);
45194 find mayInstanceOfEDataType_class(problem,interpretation,element);
45195 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
45196 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
45197 neg find mustInstanceOfEEnum_class(problem,interpretation,element);
45198 neg find mustInstanceOfEObject_class(problem,interpretation,element);
45199 neg find mustInstanceOfEClass_class(problem,interpretation,element);
45200 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
45201 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
45202 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
45203 neg find mustInstanceOfEDataType_class(problem,interpretation,element);
45204 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
45205 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
45206}
45207pattern refineTypeTo_EOperation_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
45208 find interpretation(problem,interpretation);
45209 PartialInterpretation.newElements(interpretation,element);
45210 find mayInstanceOfEOperation_class(problem,interpretation,element);
45211 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
45212 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
45213 neg find mustInstanceOfEObject_class(problem,interpretation,element);
45214 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
45215 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
45216 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
45217 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
45218 neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element);
45219 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
45220 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
45221 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
45222}
45223pattern refineTypeTo_EStringToStringMapEntry_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
45224 find interpretation(problem,interpretation);
45225 PartialInterpretation.newElements(interpretation,element);
45226 find mayInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
45227 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
45228 neg find mustInstanceOfEObject_class(problem,interpretation,element);
45229 neg find mustInstanceOfEModelElement_class(problem,interpretation,element);
45230 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
45231}
45232pattern refineTypeTo_EEnumLiteral_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
45233 find interpretation(problem,interpretation);
45234 PartialInterpretation.newElements(interpretation,element);
45235 find mayInstanceOfEEnumLiteral_class(problem,interpretation,element);
45236 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
45237 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
45238 neg find mustInstanceOfEObject_class(problem,interpretation,element);
45239 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
45240 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
45241 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
45242 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
45243 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
45244 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
45245}
45246pattern refineTypeTo_EClass_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
45247 find interpretation(problem,interpretation);
45248 PartialInterpretation.newElements(interpretation,element);
45249 find mayInstanceOfEClass_class(problem,interpretation,element);
45250 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
45251 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
45252 neg find mustInstanceOfEObject_class(problem,interpretation,element);
45253 neg find mustInstanceOfEClass_class(problem,interpretation,element);
45254 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
45255 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
45256 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
45257 neg find mustInstanceOfEDataType_class(problem,interpretation,element);
45258 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
45259 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
45260}
45261pattern refineTypeTo_ETypeParameter_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
45262 find interpretation(problem,interpretation);
45263 PartialInterpretation.newElements(interpretation,element);
45264 find mayInstanceOfETypeParameter_class(problem,interpretation,element);
45265 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
45266 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
45267 neg find mustInstanceOfEObject_class(problem,interpretation,element);
45268 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
45269 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
45270 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
45271 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
45272 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
45273 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
45274}
45275pattern refineTypeTo_EGenericType_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
45276 find interpretation(problem,interpretation);
45277 PartialInterpretation.newElements(interpretation,element);
45278 find mayInstanceOfEGenericType_class(problem,interpretation,element);
45279 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
45280 neg find mustInstanceOfEObject_class(problem,interpretation,element);
45281 neg find mustInstanceOfEModelElement_class(problem,interpretation,element);
45282 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
45283}
45284
45285//////////
45286// 4.3 Relation refinement
45287//////////
45288pattern refineRelation_eAttributeType_reference_EAttribute(
45289 problem:LogicProblem, interpretation:PartialInterpretation,
45290 relationIterpretation:PartialRelationInterpretation,
45291 from: DefinedElement, to: DefinedElement)
45292{
45293 find interpretation(problem,interpretation);
45294 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
45295 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAttributeType reference EAttribute");
45296 find mustExist(problem, interpretation, from);
45297 find mustExist(problem, interpretation, to);
45298 find mustInstanceOfEAttribute_class(problem,interpretation,from);
45299 find mustInstanceOfEDataType_class(problem,interpretation,to);
45300 find mayInRelationeAttributeType_reference_EAttribute(problem,interpretation,from,to);
45301 neg find mustInRelationeAttributeType_reference_EAttribute(problem,interpretation,from,to);
45302}
45303pattern refineRelation_references_reference_EAnnotation(
45304 problem:LogicProblem, interpretation:PartialInterpretation,
45305 relationIterpretation:PartialRelationInterpretation,
45306 from: DefinedElement, to: DefinedElement)
45307{
45308 find interpretation(problem,interpretation);
45309 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
45310 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"references reference EAnnotation");
45311 find mustExist(problem, interpretation, from);
45312 find mustExist(problem, interpretation, to);
45313 find mustInstanceOfEAnnotation_class(problem,interpretation,from);
45314 find mustInstanceOfEObject_class(problem,interpretation,to);
45315 find mayInRelationreferences_reference_EAnnotation(problem,interpretation,from,to);
45316 neg find mustInRelationreferences_reference_EAnnotation(problem,interpretation,from,to);
45317}
45318pattern refineRelation_eSuperTypes_reference_EClass(
45319 problem:LogicProblem, interpretation:PartialInterpretation,
45320 relationIterpretation:PartialRelationInterpretation,
45321 from: DefinedElement, to: DefinedElement)
45322{
45323 find interpretation(problem,interpretation);
45324 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
45325 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eSuperTypes reference EClass");
45326 find mustExist(problem, interpretation, from);
45327 find mustExist(problem, interpretation, to);
45328 find mustInstanceOfEClass_class(problem,interpretation,from);
45329 find mustInstanceOfEClass_class(problem,interpretation,to);
45330 find mayInRelationeSuperTypes_reference_EClass(problem,interpretation,from,to);
45331 neg find mustInRelationeSuperTypes_reference_EClass(problem,interpretation,from,to);
45332}
45333pattern refineRelation_eAllAttributes_reference_EClass(
45334 problem:LogicProblem, interpretation:PartialInterpretation,
45335 relationIterpretation:PartialRelationInterpretation,
45336 from: DefinedElement, to: DefinedElement)
45337{
45338 find interpretation(problem,interpretation);
45339 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
45340 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllAttributes reference EClass");
45341 find mustExist(problem, interpretation, from);
45342 find mustExist(problem, interpretation, to);
45343 find mustInstanceOfEClass_class(problem,interpretation,from);
45344 find mustInstanceOfEAttribute_class(problem,interpretation,to);
45345 find mayInRelationeAllAttributes_reference_EClass(problem,interpretation,from,to);
45346 neg find mustInRelationeAllAttributes_reference_EClass(problem,interpretation,from,to);
45347}
45348pattern refineRelation_eAllReferences_reference_EClass(
45349 problem:LogicProblem, interpretation:PartialInterpretation,
45350 relationIterpretation:PartialRelationInterpretation,
45351 from: DefinedElement, to: DefinedElement)
45352{
45353 find interpretation(problem,interpretation);
45354 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
45355 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllReferences reference EClass");
45356 find mustExist(problem, interpretation, from);
45357 find mustExist(problem, interpretation, to);
45358 find mustInstanceOfEClass_class(problem,interpretation,from);
45359 find mustInstanceOfEReference_class(problem,interpretation,to);
45360 find mayInRelationeAllReferences_reference_EClass(problem,interpretation,from,to);
45361 neg find mustInRelationeAllReferences_reference_EClass(problem,interpretation,from,to);
45362}
45363pattern refineRelation_eReferences_reference_EClass(
45364 problem:LogicProblem, interpretation:PartialInterpretation,
45365 relationIterpretation:PartialRelationInterpretation,
45366 from: DefinedElement, to: DefinedElement)
45367{
45368 find interpretation(problem,interpretation);
45369 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
45370 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eReferences reference EClass");
45371 find mustExist(problem, interpretation, from);
45372 find mustExist(problem, interpretation, to);
45373 find mustInstanceOfEClass_class(problem,interpretation,from);
45374 find mustInstanceOfEReference_class(problem,interpretation,to);
45375 find mayInRelationeReferences_reference_EClass(problem,interpretation,from,to);
45376 neg find mustInRelationeReferences_reference_EClass(problem,interpretation,from,to);
45377}
45378pattern refineRelation_eAttributes_reference_EClass(
45379 problem:LogicProblem, interpretation:PartialInterpretation,
45380 relationIterpretation:PartialRelationInterpretation,
45381 from: DefinedElement, to: DefinedElement)
45382{
45383 find interpretation(problem,interpretation);
45384 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
45385 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAttributes reference EClass");
45386 find mustExist(problem, interpretation, from);
45387 find mustExist(problem, interpretation, to);
45388 find mustInstanceOfEClass_class(problem,interpretation,from);
45389 find mustInstanceOfEAttribute_class(problem,interpretation,to);
45390 find mayInRelationeAttributes_reference_EClass(problem,interpretation,from,to);
45391 neg find mustInRelationeAttributes_reference_EClass(problem,interpretation,from,to);
45392}
45393pattern refineRelation_eAllContainments_reference_EClass(
45394 problem:LogicProblem, interpretation:PartialInterpretation,
45395 relationIterpretation:PartialRelationInterpretation,
45396 from: DefinedElement, to: DefinedElement)
45397{
45398 find interpretation(problem,interpretation);
45399 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
45400 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllContainments reference EClass");
45401 find mustExist(problem, interpretation, from);
45402 find mustExist(problem, interpretation, to);
45403 find mustInstanceOfEClass_class(problem,interpretation,from);
45404 find mustInstanceOfEReference_class(problem,interpretation,to);
45405 find mayInRelationeAllContainments_reference_EClass(problem,interpretation,from,to);
45406 neg find mustInRelationeAllContainments_reference_EClass(problem,interpretation,from,to);
45407}
45408pattern refineRelation_eAllOperations_reference_EClass(
45409 problem:LogicProblem, interpretation:PartialInterpretation,
45410 relationIterpretation:PartialRelationInterpretation,
45411 from: DefinedElement, to: DefinedElement)
45412{
45413 find interpretation(problem,interpretation);
45414 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
45415 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllOperations reference EClass");
45416 find mustExist(problem, interpretation, from);
45417 find mustExist(problem, interpretation, to);
45418 find mustInstanceOfEClass_class(problem,interpretation,from);
45419 find mustInstanceOfEOperation_class(problem,interpretation,to);
45420 find mayInRelationeAllOperations_reference_EClass(problem,interpretation,from,to);
45421 neg find mustInRelationeAllOperations_reference_EClass(problem,interpretation,from,to);
45422}
45423pattern refineRelation_eAllStructuralFeatures_reference_EClass(
45424 problem:LogicProblem, interpretation:PartialInterpretation,
45425 relationIterpretation:PartialRelationInterpretation,
45426 from: DefinedElement, to: DefinedElement)
45427{
45428 find interpretation(problem,interpretation);
45429 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
45430 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllStructuralFeatures reference EClass");
45431 find mustExist(problem, interpretation, from);
45432 find mustExist(problem, interpretation, to);
45433 find mustInstanceOfEClass_class(problem,interpretation,from);
45434 find mustInstanceOfEStructuralFeature_class(problem,interpretation,to);
45435 find mayInRelationeAllStructuralFeatures_reference_EClass(problem,interpretation,from,to);
45436 neg find mustInRelationeAllStructuralFeatures_reference_EClass(problem,interpretation,from,to);
45437}
45438pattern refineRelation_eAllSuperTypes_reference_EClass(
45439 problem:LogicProblem, interpretation:PartialInterpretation,
45440 relationIterpretation:PartialRelationInterpretation,
45441 from: DefinedElement, to: DefinedElement)
45442{
45443 find interpretation(problem,interpretation);
45444 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
45445 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllSuperTypes reference EClass");
45446 find mustExist(problem, interpretation, from);
45447 find mustExist(problem, interpretation, to);
45448 find mustInstanceOfEClass_class(problem,interpretation,from);
45449 find mustInstanceOfEClass_class(problem,interpretation,to);
45450 find mayInRelationeAllSuperTypes_reference_EClass(problem,interpretation,from,to);
45451 neg find mustInRelationeAllSuperTypes_reference_EClass(problem,interpretation,from,to);
45452}
45453pattern refineRelation_eIDAttribute_reference_EClass(
45454 problem:LogicProblem, interpretation:PartialInterpretation,
45455 relationIterpretation:PartialRelationInterpretation,
45456 from: DefinedElement, to: DefinedElement)
45457{
45458 find interpretation(problem,interpretation);
45459 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
45460 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eIDAttribute reference EClass");
45461 find mustExist(problem, interpretation, from);
45462 find mustExist(problem, interpretation, to);
45463 find mustInstanceOfEClass_class(problem,interpretation,from);
45464 find mustInstanceOfEAttribute_class(problem,interpretation,to);
45465 find mayInRelationeIDAttribute_reference_EClass(problem,interpretation,from,to);
45466 neg find mustInRelationeIDAttribute_reference_EClass(problem,interpretation,from,to);
45467}
45468pattern refineRelation_eAllGenericSuperTypes_reference_EClass(
45469 problem:LogicProblem, interpretation:PartialInterpretation,
45470 relationIterpretation:PartialRelationInterpretation,
45471 from: DefinedElement, to: DefinedElement)
45472{
45473 find interpretation(problem,interpretation);
45474 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
45475 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllGenericSuperTypes reference EClass");
45476 find mustExist(problem, interpretation, from);
45477 find mustExist(problem, interpretation, to);
45478 find mustInstanceOfEClass_class(problem,interpretation,from);
45479 find mustInstanceOfEGenericType_class(problem,interpretation,to);
45480 find mayInRelationeAllGenericSuperTypes_reference_EClass(problem,interpretation,from,to);
45481 neg find mustInRelationeAllGenericSuperTypes_reference_EClass(problem,interpretation,from,to);
45482}
45483pattern refineRelation_eExceptions_reference_EOperation(
45484 problem:LogicProblem, interpretation:PartialInterpretation,
45485 relationIterpretation:PartialRelationInterpretation,
45486 from: DefinedElement, to: DefinedElement)
45487{
45488 find interpretation(problem,interpretation);
45489 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
45490 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eExceptions reference EOperation");
45491 find mustExist(problem, interpretation, from);
45492 find mustExist(problem, interpretation, to);
45493 find mustInstanceOfEOperation_class(problem,interpretation,from);
45494 find mustInstanceOfEClassifier_class(problem,interpretation,to);
45495 find mayInRelationeExceptions_reference_EOperation(problem,interpretation,from,to);
45496 neg find mustInRelationeExceptions_reference_EOperation(problem,interpretation,from,to);
45497}
45498pattern refineRelation_eOpposite_reference_EReference(
45499 problem:LogicProblem, interpretation:PartialInterpretation,
45500 relationIterpretation:PartialRelationInterpretation,
45501 from: DefinedElement, to: DefinedElement)
45502{
45503 find interpretation(problem,interpretation);
45504 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
45505 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eOpposite reference EReference");
45506 find mustExist(problem, interpretation, from);
45507 find mustExist(problem, interpretation, to);
45508 find mustInstanceOfEReference_class(problem,interpretation,from);
45509 find mustInstanceOfEReference_class(problem,interpretation,to);
45510 find mayInRelationeOpposite_reference_EReference(problem,interpretation,from,to);
45511 neg find mustInRelationeOpposite_reference_EReference(problem,interpretation,from,to);
45512}
45513pattern refineRelation_eReferenceType_reference_EReference(
45514 problem:LogicProblem, interpretation:PartialInterpretation,
45515 relationIterpretation:PartialRelationInterpretation,
45516 from: DefinedElement, to: DefinedElement)
45517{
45518 find interpretation(problem,interpretation);
45519 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
45520 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eReferenceType reference EReference");
45521 find mustExist(problem, interpretation, from);
45522 find mustExist(problem, interpretation, to);
45523 find mustInstanceOfEReference_class(problem,interpretation,from);
45524 find mustInstanceOfEClass_class(problem,interpretation,to);
45525 find mayInRelationeReferenceType_reference_EReference(problem,interpretation,from,to);
45526 neg find mustInRelationeReferenceType_reference_EReference(problem,interpretation,from,to);
45527}
45528pattern refineRelation_eKeys_reference_EReference(
45529 problem:LogicProblem, interpretation:PartialInterpretation,
45530 relationIterpretation:PartialRelationInterpretation,
45531 from: DefinedElement, to: DefinedElement)
45532{
45533 find interpretation(problem,interpretation);
45534 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
45535 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eKeys reference EReference");
45536 find mustExist(problem, interpretation, from);
45537 find mustExist(problem, interpretation, to);
45538 find mustInstanceOfEReference_class(problem,interpretation,from);
45539 find mustInstanceOfEAttribute_class(problem,interpretation,to);
45540 find mayInRelationeKeys_reference_EReference(problem,interpretation,from,to);
45541 neg find mustInRelationeKeys_reference_EReference(problem,interpretation,from,to);
45542}
45543pattern refineRelation_eType_reference_ETypedElement(
45544 problem:LogicProblem, interpretation:PartialInterpretation,
45545 relationIterpretation:PartialRelationInterpretation,
45546 from: DefinedElement, to: DefinedElement)
45547{
45548 find interpretation(problem,interpretation);
45549 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
45550 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eType reference ETypedElement");
45551 find mustExist(problem, interpretation, from);
45552 find mustExist(problem, interpretation, to);
45553 find mustInstanceOfETypedElement_class(problem,interpretation,from);
45554 find mustInstanceOfEClassifier_class(problem,interpretation,to);
45555 find mayInRelationeType_reference_ETypedElement(problem,interpretation,from,to);
45556 neg find mustInRelationeType_reference_ETypedElement(problem,interpretation,from,to);
45557}
45558pattern refineRelation_eRawType_reference_EGenericType(
45559 problem:LogicProblem, interpretation:PartialInterpretation,
45560 relationIterpretation:PartialRelationInterpretation,
45561 from: DefinedElement, to: DefinedElement)
45562{
45563 find interpretation(problem,interpretation);
45564 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
45565 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eRawType reference EGenericType");
45566 find mustExist(problem, interpretation, from);
45567 find mustExist(problem, interpretation, to);
45568 find mustInstanceOfEGenericType_class(problem,interpretation,from);
45569 find mustInstanceOfEClassifier_class(problem,interpretation,to);
45570 find mayInRelationeRawType_reference_EGenericType(problem,interpretation,from,to);
45571 neg find mustInRelationeRawType_reference_EGenericType(problem,interpretation,from,to);
45572}
45573pattern refineRelation_eTypeParameter_reference_EGenericType(
45574 problem:LogicProblem, interpretation:PartialInterpretation,
45575 relationIterpretation:PartialRelationInterpretation,
45576 from: DefinedElement, to: DefinedElement)
45577{
45578 find interpretation(problem,interpretation);
45579 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
45580 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eTypeParameter reference EGenericType");
45581 find mustExist(problem, interpretation, from);
45582 find mustExist(problem, interpretation, to);
45583 find mustInstanceOfEGenericType_class(problem,interpretation,from);
45584 find mustInstanceOfETypeParameter_class(problem,interpretation,to);
45585 find mayInRelationeTypeParameter_reference_EGenericType(problem,interpretation,from,to);
45586 neg find mustInRelationeTypeParameter_reference_EGenericType(problem,interpretation,from,to);
45587}
45588pattern refineRelation_eClassifier_reference_EGenericType(
45589 problem:LogicProblem, interpretation:PartialInterpretation,
45590 relationIterpretation:PartialRelationInterpretation,
45591 from: DefinedElement, to: DefinedElement)
45592{
45593 find interpretation(problem,interpretation);
45594 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
45595 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eClassifier reference EGenericType");
45596 find mustExist(problem, interpretation, from);
45597 find mustExist(problem, interpretation, to);
45598 find mustInstanceOfEGenericType_class(problem,interpretation,from);
45599 find mustInstanceOfEClassifier_class(problem,interpretation,to);
45600 find mayInRelationeClassifier_reference_EGenericType(problem,interpretation,from,to);
45601 neg find mustInRelationeClassifier_reference_EGenericType(problem,interpretation,from,to);
45602}
45603pattern refineRelation_iD_attribute_EAttribute(
45604 problem:LogicProblem, interpretation:PartialInterpretation,
45605 relationIterpretation:PartialRelationInterpretation,
45606 from: DefinedElement, to: DefinedElement)
45607{
45608 find interpretation(problem,interpretation);
45609 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
45610 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"iD attribute EAttribute");
45611 find mustExist(problem, interpretation, from);
45612 find mustExist(problem, interpretation, to);
45613 find mustInstanceOfEAttribute_class(problem,interpretation,from);
45614 BooleanElement(to);
45615 find mayInRelationiD_attribute_EAttribute(problem,interpretation,from,to);
45616 neg find mustInRelationiD_attribute_EAttribute(problem,interpretation,from,to);
45617}
45618pattern refineRelation_source_attribute_EAnnotation(
45619 problem:LogicProblem, interpretation:PartialInterpretation,
45620 relationIterpretation:PartialRelationInterpretation,
45621 from: DefinedElement, to: DefinedElement)
45622{
45623 find interpretation(problem,interpretation);
45624 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
45625 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"source attribute EAnnotation");
45626 find mustExist(problem, interpretation, from);
45627 find mustExist(problem, interpretation, to);
45628 find mustInstanceOfEAnnotation_class(problem,interpretation,from);
45629 StringElement(to);
45630 find mayInRelationsource_attribute_EAnnotation(problem,interpretation,from,to);
45631 neg find mustInRelationsource_attribute_EAnnotation(problem,interpretation,from,to);
45632}
45633pattern refineRelation_abstract_attribute_EClass(
45634 problem:LogicProblem, interpretation:PartialInterpretation,
45635 relationIterpretation:PartialRelationInterpretation,
45636 from: DefinedElement, to: DefinedElement)
45637{
45638 find interpretation(problem,interpretation);
45639 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
45640 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"abstract attribute EClass");
45641 find mustExist(problem, interpretation, from);
45642 find mustExist(problem, interpretation, to);
45643 find mustInstanceOfEClass_class(problem,interpretation,from);
45644 BooleanElement(to);
45645 find mayInRelationabstract_attribute_EClass(problem,interpretation,from,to);
45646 neg find mustInRelationabstract_attribute_EClass(problem,interpretation,from,to);
45647}
45648pattern refineRelation_interface_attribute_EClass(
45649 problem:LogicProblem, interpretation:PartialInterpretation,
45650 relationIterpretation:PartialRelationInterpretation,
45651 from: DefinedElement, to: DefinedElement)
45652{
45653 find interpretation(problem,interpretation);
45654 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
45655 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface attribute EClass");
45656 find mustExist(problem, interpretation, from);
45657 find mustExist(problem, interpretation, to);
45658 find mustInstanceOfEClass_class(problem,interpretation,from);
45659 BooleanElement(to);
45660 find mayInRelationinterface_attribute_EClass(problem,interpretation,from,to);
45661 neg find mustInRelationinterface_attribute_EClass(problem,interpretation,from,to);
45662}
45663pattern refineRelation_instanceClassName_attribute_EClassifier(
45664 problem:LogicProblem, interpretation:PartialInterpretation,
45665 relationIterpretation:PartialRelationInterpretation,
45666 from: DefinedElement, to: DefinedElement)
45667{
45668 find interpretation(problem,interpretation);
45669 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
45670 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"instanceClassName attribute EClassifier");
45671 find mustExist(problem, interpretation, from);
45672 find mustExist(problem, interpretation, to);
45673 find mustInstanceOfEClassifier_class(problem,interpretation,from);
45674 StringElement(to);
45675 find mayInRelationinstanceClassName_attribute_EClassifier(problem,interpretation,from,to);
45676 neg find mustInRelationinstanceClassName_attribute_EClassifier(problem,interpretation,from,to);
45677}
45678pattern refineRelation_instanceTypeName_attribute_EClassifier(
45679 problem:LogicProblem, interpretation:PartialInterpretation,
45680 relationIterpretation:PartialRelationInterpretation,
45681 from: DefinedElement, to: DefinedElement)
45682{
45683 find interpretation(problem,interpretation);
45684 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
45685 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"instanceTypeName attribute EClassifier");
45686 find mustExist(problem, interpretation, from);
45687 find mustExist(problem, interpretation, to);
45688 find mustInstanceOfEClassifier_class(problem,interpretation,from);
45689 StringElement(to);
45690 find mayInRelationinstanceTypeName_attribute_EClassifier(problem,interpretation,from,to);
45691 neg find mustInRelationinstanceTypeName_attribute_EClassifier(problem,interpretation,from,to);
45692}
45693pattern refineRelation_serializable_attribute_EDataType(
45694 problem:LogicProblem, interpretation:PartialInterpretation,
45695 relationIterpretation:PartialRelationInterpretation,
45696 from: DefinedElement, to: DefinedElement)
45697{
45698 find interpretation(problem,interpretation);
45699 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
45700 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"serializable attribute EDataType");
45701 find mustExist(problem, interpretation, from);
45702 find mustExist(problem, interpretation, to);
45703 find mustInstanceOfEDataType_class(problem,interpretation,from);
45704 BooleanElement(to);
45705 find mayInRelationserializable_attribute_EDataType(problem,interpretation,from,to);
45706 neg find mustInRelationserializable_attribute_EDataType(problem,interpretation,from,to);
45707}
45708pattern refineRelation_value_attribute_EEnumLiteral(
45709 problem:LogicProblem, interpretation:PartialInterpretation,
45710 relationIterpretation:PartialRelationInterpretation,
45711 from: DefinedElement, to: DefinedElement)
45712{
45713 find interpretation(problem,interpretation);
45714 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
45715 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"value attribute EEnumLiteral");
45716 find mustExist(problem, interpretation, from);
45717 find mustExist(problem, interpretation, to);
45718 find mustInstanceOfEEnumLiteral_class(problem,interpretation,from);
45719 IntegerElement(to);
45720 find mayInRelationvalue_attribute_EEnumLiteral(problem,interpretation,from,to);
45721 neg find mustInRelationvalue_attribute_EEnumLiteral(problem,interpretation,from,to);
45722}
45723pattern refineRelation_literal_attribute_EEnumLiteral(
45724 problem:LogicProblem, interpretation:PartialInterpretation,
45725 relationIterpretation:PartialRelationInterpretation,
45726 from: DefinedElement, to: DefinedElement)
45727{
45728 find interpretation(problem,interpretation);
45729 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
45730 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"literal attribute EEnumLiteral");
45731 find mustExist(problem, interpretation, from);
45732 find mustExist(problem, interpretation, to);
45733 find mustInstanceOfEEnumLiteral_class(problem,interpretation,from);
45734 StringElement(to);
45735 find mayInRelationliteral_attribute_EEnumLiteral(problem,interpretation,from,to);
45736 neg find mustInRelationliteral_attribute_EEnumLiteral(problem,interpretation,from,to);
45737}
45738pattern refineRelation_name_attribute_ENamedElement(
45739 problem:LogicProblem, interpretation:PartialInterpretation,
45740 relationIterpretation:PartialRelationInterpretation,
45741 from: DefinedElement, to: DefinedElement)
45742{
45743 find interpretation(problem,interpretation);
45744 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
45745 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"name attribute ENamedElement");
45746 find mustExist(problem, interpretation, from);
45747 find mustExist(problem, interpretation, to);
45748 find mustInstanceOfENamedElement_class(problem,interpretation,from);
45749 StringElement(to);
45750 find mayInRelationname_attribute_ENamedElement(problem,interpretation,from,to);
45751 neg find mustInRelationname_attribute_ENamedElement(problem,interpretation,from,to);
45752}
45753pattern refineRelation_nsURI_attribute_EPackage(
45754 problem:LogicProblem, interpretation:PartialInterpretation,
45755 relationIterpretation:PartialRelationInterpretation,
45756 from: DefinedElement, to: DefinedElement)
45757{
45758 find interpretation(problem,interpretation);
45759 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
45760 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"nsURI attribute EPackage");
45761 find mustExist(problem, interpretation, from);
45762 find mustExist(problem, interpretation, to);
45763 find mustInstanceOfEPackage_class(problem,interpretation,from);
45764 StringElement(to);
45765 find mayInRelationnsURI_attribute_EPackage(problem,interpretation,from,to);
45766 neg find mustInRelationnsURI_attribute_EPackage(problem,interpretation,from,to);
45767}
45768pattern refineRelation_nsPrefix_attribute_EPackage(
45769 problem:LogicProblem, interpretation:PartialInterpretation,
45770 relationIterpretation:PartialRelationInterpretation,
45771 from: DefinedElement, to: DefinedElement)
45772{
45773 find interpretation(problem,interpretation);
45774 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
45775 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"nsPrefix attribute EPackage");
45776 find mustExist(problem, interpretation, from);
45777 find mustExist(problem, interpretation, to);
45778 find mustInstanceOfEPackage_class(problem,interpretation,from);
45779 StringElement(to);
45780 find mayInRelationnsPrefix_attribute_EPackage(problem,interpretation,from,to);
45781 neg find mustInRelationnsPrefix_attribute_EPackage(problem,interpretation,from,to);
45782}
45783pattern refineRelation_containment_attribute_EReference(
45784 problem:LogicProblem, interpretation:PartialInterpretation,
45785 relationIterpretation:PartialRelationInterpretation,
45786 from: DefinedElement, to: DefinedElement)
45787{
45788 find interpretation(problem,interpretation);
45789 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
45790 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"containment attribute EReference");
45791 find mustExist(problem, interpretation, from);
45792 find mustExist(problem, interpretation, to);
45793 find mustInstanceOfEReference_class(problem,interpretation,from);
45794 BooleanElement(to);
45795 find mayInRelationcontainment_attribute_EReference(problem,interpretation,from,to);
45796 neg find mustInRelationcontainment_attribute_EReference(problem,interpretation,from,to);
45797}
45798pattern refineRelation_container_attribute_EReference(
45799 problem:LogicProblem, interpretation:PartialInterpretation,
45800 relationIterpretation:PartialRelationInterpretation,
45801 from: DefinedElement, to: DefinedElement)
45802{
45803 find interpretation(problem,interpretation);
45804 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
45805 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"container attribute EReference");
45806 find mustExist(problem, interpretation, from);
45807 find mustExist(problem, interpretation, to);
45808 find mustInstanceOfEReference_class(problem,interpretation,from);
45809 BooleanElement(to);
45810 find mayInRelationcontainer_attribute_EReference(problem,interpretation,from,to);
45811 neg find mustInRelationcontainer_attribute_EReference(problem,interpretation,from,to);
45812}
45813pattern refineRelation_resolveProxies_attribute_EReference(
45814 problem:LogicProblem, interpretation:PartialInterpretation,
45815 relationIterpretation:PartialRelationInterpretation,
45816 from: DefinedElement, to: DefinedElement)
45817{
45818 find interpretation(problem,interpretation);
45819 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
45820 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"resolveProxies attribute EReference");
45821 find mustExist(problem, interpretation, from);
45822 find mustExist(problem, interpretation, to);
45823 find mustInstanceOfEReference_class(problem,interpretation,from);
45824 BooleanElement(to);
45825 find mayInRelationresolveProxies_attribute_EReference(problem,interpretation,from,to);
45826 neg find mustInRelationresolveProxies_attribute_EReference(problem,interpretation,from,to);
45827}
45828pattern refineRelation_changeable_attribute_EStructuralFeature(
45829 problem:LogicProblem, interpretation:PartialInterpretation,
45830 relationIterpretation:PartialRelationInterpretation,
45831 from: DefinedElement, to: DefinedElement)
45832{
45833 find interpretation(problem,interpretation);
45834 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
45835 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"changeable attribute EStructuralFeature");
45836 find mustExist(problem, interpretation, from);
45837 find mustExist(problem, interpretation, to);
45838 find mustInstanceOfEStructuralFeature_class(problem,interpretation,from);
45839 BooleanElement(to);
45840 find mayInRelationchangeable_attribute_EStructuralFeature(problem,interpretation,from,to);
45841 neg find mustInRelationchangeable_attribute_EStructuralFeature(problem,interpretation,from,to);
45842}
45843pattern refineRelation_volatile_attribute_EStructuralFeature(
45844 problem:LogicProblem, interpretation:PartialInterpretation,
45845 relationIterpretation:PartialRelationInterpretation,
45846 from: DefinedElement, to: DefinedElement)
45847{
45848 find interpretation(problem,interpretation);
45849 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
45850 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"volatile attribute EStructuralFeature");
45851 find mustExist(problem, interpretation, from);
45852 find mustExist(problem, interpretation, to);
45853 find mustInstanceOfEStructuralFeature_class(problem,interpretation,from);
45854 BooleanElement(to);
45855 find mayInRelationvolatile_attribute_EStructuralFeature(problem,interpretation,from,to);
45856 neg find mustInRelationvolatile_attribute_EStructuralFeature(problem,interpretation,from,to);
45857}
45858pattern refineRelation_transient_attribute_EStructuralFeature(
45859 problem:LogicProblem, interpretation:PartialInterpretation,
45860 relationIterpretation:PartialRelationInterpretation,
45861 from: DefinedElement, to: DefinedElement)
45862{
45863 find interpretation(problem,interpretation);
45864 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
45865 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"transient attribute EStructuralFeature");
45866 find mustExist(problem, interpretation, from);
45867 find mustExist(problem, interpretation, to);
45868 find mustInstanceOfEStructuralFeature_class(problem,interpretation,from);
45869 BooleanElement(to);
45870 find mayInRelationtransient_attribute_EStructuralFeature(problem,interpretation,from,to);
45871 neg find mustInRelationtransient_attribute_EStructuralFeature(problem,interpretation,from,to);
45872}
45873pattern refineRelation_defaultValueLiteral_attribute_EStructuralFeature(
45874 problem:LogicProblem, interpretation:PartialInterpretation,
45875 relationIterpretation:PartialRelationInterpretation,
45876 from: DefinedElement, to: DefinedElement)
45877{
45878 find interpretation(problem,interpretation);
45879 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
45880 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"defaultValueLiteral attribute EStructuralFeature");
45881 find mustExist(problem, interpretation, from);
45882 find mustExist(problem, interpretation, to);
45883 find mustInstanceOfEStructuralFeature_class(problem,interpretation,from);
45884 StringElement(to);
45885 find mayInRelationdefaultValueLiteral_attribute_EStructuralFeature(problem,interpretation,from,to);
45886 neg find mustInRelationdefaultValueLiteral_attribute_EStructuralFeature(problem,interpretation,from,to);
45887}
45888pattern refineRelation_unsettable_attribute_EStructuralFeature(
45889 problem:LogicProblem, interpretation:PartialInterpretation,
45890 relationIterpretation:PartialRelationInterpretation,
45891 from: DefinedElement, to: DefinedElement)
45892{
45893 find interpretation(problem,interpretation);
45894 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
45895 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"unsettable attribute EStructuralFeature");
45896 find mustExist(problem, interpretation, from);
45897 find mustExist(problem, interpretation, to);
45898 find mustInstanceOfEStructuralFeature_class(problem,interpretation,from);
45899 BooleanElement(to);
45900 find mayInRelationunsettable_attribute_EStructuralFeature(problem,interpretation,from,to);
45901 neg find mustInRelationunsettable_attribute_EStructuralFeature(problem,interpretation,from,to);
45902}
45903pattern refineRelation_derived_attribute_EStructuralFeature(
45904 problem:LogicProblem, interpretation:PartialInterpretation,
45905 relationIterpretation:PartialRelationInterpretation,
45906 from: DefinedElement, to: DefinedElement)
45907{
45908 find interpretation(problem,interpretation);
45909 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
45910 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"derived attribute EStructuralFeature");
45911 find mustExist(problem, interpretation, from);
45912 find mustExist(problem, interpretation, to);
45913 find mustInstanceOfEStructuralFeature_class(problem,interpretation,from);
45914 BooleanElement(to);
45915 find mayInRelationderived_attribute_EStructuralFeature(problem,interpretation,from,to);
45916 neg find mustInRelationderived_attribute_EStructuralFeature(problem,interpretation,from,to);
45917}
45918pattern refineRelation_ordered_attribute_ETypedElement(
45919 problem:LogicProblem, interpretation:PartialInterpretation,
45920 relationIterpretation:PartialRelationInterpretation,
45921 from: DefinedElement, to: DefinedElement)
45922{
45923 find interpretation(problem,interpretation);
45924 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
45925 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"ordered attribute ETypedElement");
45926 find mustExist(problem, interpretation, from);
45927 find mustExist(problem, interpretation, to);
45928 find mustInstanceOfETypedElement_class(problem,interpretation,from);
45929 BooleanElement(to);
45930 find mayInRelationordered_attribute_ETypedElement(problem,interpretation,from,to);
45931 neg find mustInRelationordered_attribute_ETypedElement(problem,interpretation,from,to);
45932}
45933pattern refineRelation_unique_attribute_ETypedElement(
45934 problem:LogicProblem, interpretation:PartialInterpretation,
45935 relationIterpretation:PartialRelationInterpretation,
45936 from: DefinedElement, to: DefinedElement)
45937{
45938 find interpretation(problem,interpretation);
45939 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
45940 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"unique attribute ETypedElement");
45941 find mustExist(problem, interpretation, from);
45942 find mustExist(problem, interpretation, to);
45943 find mustInstanceOfETypedElement_class(problem,interpretation,from);
45944 BooleanElement(to);
45945 find mayInRelationunique_attribute_ETypedElement(problem,interpretation,from,to);
45946 neg find mustInRelationunique_attribute_ETypedElement(problem,interpretation,from,to);
45947}
45948pattern refineRelation_lowerBound_attribute_ETypedElement(
45949 problem:LogicProblem, interpretation:PartialInterpretation,
45950 relationIterpretation:PartialRelationInterpretation,
45951 from: DefinedElement, to: DefinedElement)
45952{
45953 find interpretation(problem,interpretation);
45954 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
45955 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"lowerBound attribute ETypedElement");
45956 find mustExist(problem, interpretation, from);
45957 find mustExist(problem, interpretation, to);
45958 find mustInstanceOfETypedElement_class(problem,interpretation,from);
45959 IntegerElement(to);
45960 find mayInRelationlowerBound_attribute_ETypedElement(problem,interpretation,from,to);
45961 neg find mustInRelationlowerBound_attribute_ETypedElement(problem,interpretation,from,to);
45962}
45963pattern refineRelation_upperBound_attribute_ETypedElement(
45964 problem:LogicProblem, interpretation:PartialInterpretation,
45965 relationIterpretation:PartialRelationInterpretation,
45966 from: DefinedElement, to: DefinedElement)
45967{
45968 find interpretation(problem,interpretation);
45969 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
45970 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"upperBound attribute ETypedElement");
45971 find mustExist(problem, interpretation, from);
45972 find mustExist(problem, interpretation, to);
45973 find mustInstanceOfETypedElement_class(problem,interpretation,from);
45974 IntegerElement(to);
45975 find mayInRelationupperBound_attribute_ETypedElement(problem,interpretation,from,to);
45976 neg find mustInRelationupperBound_attribute_ETypedElement(problem,interpretation,from,to);
45977}
45978pattern refineRelation_many_attribute_ETypedElement(
45979 problem:LogicProblem, interpretation:PartialInterpretation,
45980 relationIterpretation:PartialRelationInterpretation,
45981 from: DefinedElement, to: DefinedElement)
45982{
45983 find interpretation(problem,interpretation);
45984 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
45985 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"many attribute ETypedElement");
45986 find mustExist(problem, interpretation, from);
45987 find mustExist(problem, interpretation, to);
45988 find mustInstanceOfETypedElement_class(problem,interpretation,from);
45989 BooleanElement(to);
45990 find mayInRelationmany_attribute_ETypedElement(problem,interpretation,from,to);
45991 neg find mustInRelationmany_attribute_ETypedElement(problem,interpretation,from,to);
45992}
45993pattern refineRelation_required_attribute_ETypedElement(
45994 problem:LogicProblem, interpretation:PartialInterpretation,
45995 relationIterpretation:PartialRelationInterpretation,
45996 from: DefinedElement, to: DefinedElement)
45997{
45998 find interpretation(problem,interpretation);
45999 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
46000 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"required attribute ETypedElement");
46001 find mustExist(problem, interpretation, from);
46002 find mustExist(problem, interpretation, to);
46003 find mustInstanceOfETypedElement_class(problem,interpretation,from);
46004 BooleanElement(to);
46005 find mayInRelationrequired_attribute_ETypedElement(problem,interpretation,from,to);
46006 neg find mustInRelationrequired_attribute_ETypedElement(problem,interpretation,from,to);
46007}
46008pattern refineRelation_key_attribute_EStringToStringMapEntry(
46009 problem:LogicProblem, interpretation:PartialInterpretation,
46010 relationIterpretation:PartialRelationInterpretation,
46011 from: DefinedElement, to: DefinedElement)
46012{
46013 find interpretation(problem,interpretation);
46014 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
46015 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"key attribute EStringToStringMapEntry");
46016 find mustExist(problem, interpretation, from);
46017 find mustExist(problem, interpretation, to);
46018 find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,from);
46019 StringElement(to);
46020 find mayInRelationkey_attribute_EStringToStringMapEntry(problem,interpretation,from,to);
46021 neg find mustInRelationkey_attribute_EStringToStringMapEntry(problem,interpretation,from,to);
46022}
46023pattern refineRelation_value_attribute_EStringToStringMapEntry(
46024 problem:LogicProblem, interpretation:PartialInterpretation,
46025 relationIterpretation:PartialRelationInterpretation,
46026 from: DefinedElement, to: DefinedElement)
46027{
46028 find interpretation(problem,interpretation);
46029 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
46030 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"value attribute EStringToStringMapEntry");
46031 find mustExist(problem, interpretation, from);
46032 find mustExist(problem, interpretation, to);
46033 find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,from);
46034 StringElement(to);
46035 find mayInRelationvalue_attribute_EStringToStringMapEntry(problem,interpretation,from,to);
46036 neg find mustInRelationvalue_attribute_EStringToStringMapEntry(problem,interpretation,from,to);
46037}
46038import epackage "http://www.bme.hu/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage"
46039import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/problem"
46040import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/language"
46041
46042//////////
46043// 0. Util
46044//////////
46045private pattern interpretation(problem:LogicProblem, interpretation:PartialInterpretation) {
46046 PartialInterpretation.problem(interpretation,problem);
46047}
46048
46049/////////////////////////
46050// 0.1 Existence
46051/////////////////////////
46052private pattern mustExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
46053 find interpretation(problem,interpretation);
46054 LogicProblem.elements(problem,element);
46055} or {
46056 find interpretation(problem,interpretation);
46057 PartialInterpretation.newElements(interpretation,element);
46058}
46059
46060private pattern mayExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
46061 find mustExist(problem,interpretation,element);
46062} or {
46063 find interpretation(problem,interpretation);
46064 neg find elementCloseWorld(element);
46065 PartialInterpretation.openWorldElements(interpretation,element);
46066}
46067
46068private pattern elementCloseWorld(element:DefinedElement) {
46069 PartialInterpretation.openWorldElements(i,element);
46070 PartialInterpretation.maxNewElements(i,0);
46071} or {
46072 Scope.targetTypeInterpretation(scope,interpretation);
46073 PartialTypeInterpratation.elements(interpretation,element);
46074 Scope.maxNewElements(scope,0);
46075}
46076
46077////////////////////////
46078// 0.2 Equivalence
46079////////////////////////
46080pattern mayEquivalent(problem:LogicProblem, interpretation:PartialInterpretation, a: DefinedElement, b: DefinedElement) {
46081 find mayExist(problem,interpretation,a);
46082 find mayExist(problem,interpretation,b);
46083 a == b;
46084}
46085
46086////////////////////////
46087// 0.3 Required Patterns by TypeIndexer
46088////////////////////////
46089private pattern typeInterpretation(problem:LogicProblem, interpretation:PartialInterpretation, type:TypeDeclaration, typeInterpretation:PartialComplexTypeInterpretation) {
46090 find interpretation(problem,interpretation);
46091 LogicProblem.types(problem,type);
46092 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
46093 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
46094}
46095
46096private pattern directInstanceOf(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement, type:Type) {
46097 find interpretation(problem,interpretation);
46098 LogicProblem.types(problem,type);
46099 TypeDefinition.elements(type,element);
46100} or {
46101 find interpretation(problem,interpretation);
46102 find typeInterpretation(problem,interpretation,type,typeInterpretation);
46103 PartialComplexTypeInterpretation.elements(typeInterpretation,element);
46104}
46105
46106private pattern isPrimitive(element: PrimitiveElement) {
46107 PrimitiveElement(element);
46108}
46109
46110//////////
46111// 1. Problem-Specific Base Indexers
46112//////////
46113// 1.1 Type Indexers
46114//////////
46115// 1.1.1 primitive Type Indexers
46116//////////
46117
46118//////////
46119// 1.1.2 domain-specific Type Indexers
46120//////////
46121/**
46122 * An element must be an instance of type "EAttribute class".
46123 */
46124private pattern mustInstanceOfEAttribute_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
46125 Type.name(type,"EAttribute class");
46126 find directInstanceOf(problem,interpretation,element,type);
46127}
46128private pattern scopeDisallowsNewEAttribute_class(problem:LogicProblem, interpretation:PartialInterpretation) {
46129 find interpretation(problem,interpretation);
46130 PartialInterpretation.scopes(interpretation,scope);
46131 Scope.targetTypeInterpretation(scope,typeInterpretation);
46132 Scope.maxNewElements(scope,0);
46133 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
46134 Type.name(type,"EAttribute class");
46135}
46136
46137/**
46138 * An element may be an instance of type "EAttribute class".
46139 */
46140private pattern mayInstanceOfEAttribute_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
46141{
46142 find interpretation(problem,interpretation);
46143 PartialInterpretation.newElements(interpretation,element);
46144 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
46145 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
46146 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
46147 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
46148 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
46149 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
46150 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
46151 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
46152 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
46153 neg find mustInstanceOfEObject_class(problem,interpretation,element);
46154 neg find mustInstanceOfEReference_class(problem,interpretation,element);
46155 neg find scopeDisallowsNewEAttribute_class(problem, interpretation);
46156 neg find isPrimitive(element);
46157} or {
46158 find interpretation(problem,interpretation);
46159 PartialInterpretation.openWorldElements(interpretation,element);
46160 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
46161 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
46162 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
46163 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
46164 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
46165 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
46166 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
46167 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
46168 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
46169 neg find mustInstanceOfEObject_class(problem,interpretation,element);
46170 neg find mustInstanceOfEReference_class(problem,interpretation,element);
46171 neg find scopeDisallowsNewEAttribute_class(problem, interpretation);
46172 neg find isPrimitive(element);
46173} or
46174{ find mustInstanceOfEAttribute_class(problem,interpretation,element); }
46175/**
46176 * An element must be an instance of type "EAnnotation class".
46177 */
46178private pattern mustInstanceOfEAnnotation_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
46179 Type.name(type,"EAnnotation class");
46180 find directInstanceOf(problem,interpretation,element,type);
46181}
46182private pattern scopeDisallowsNewEAnnotation_class(problem:LogicProblem, interpretation:PartialInterpretation) {
46183 find interpretation(problem,interpretation);
46184 PartialInterpretation.scopes(interpretation,scope);
46185 Scope.targetTypeInterpretation(scope,typeInterpretation);
46186 Scope.maxNewElements(scope,0);
46187 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
46188 Type.name(type,"EAnnotation class");
46189}
46190
46191/**
46192 * An element may be an instance of type "EAnnotation class".
46193 */
46194private pattern mayInstanceOfEAnnotation_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
46195{
46196 find interpretation(problem,interpretation);
46197 PartialInterpretation.newElements(interpretation,element);
46198 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
46199 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
46200 neg find mustInstanceOfEObject_class(problem,interpretation,element);
46201 neg find mustInstanceOfENamedElement_class(problem,interpretation,element);
46202 neg find scopeDisallowsNewEAnnotation_class(problem, interpretation);
46203 neg find isPrimitive(element);
46204} or {
46205 find interpretation(problem,interpretation);
46206 PartialInterpretation.openWorldElements(interpretation,element);
46207 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
46208 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
46209 neg find mustInstanceOfEObject_class(problem,interpretation,element);
46210 neg find mustInstanceOfENamedElement_class(problem,interpretation,element);
46211 neg find scopeDisallowsNewEAnnotation_class(problem, interpretation);
46212 neg find isPrimitive(element);
46213} or
46214{ find mustInstanceOfEAnnotation_class(problem,interpretation,element); }
46215/**
46216 * An element must be an instance of type "EClass class".
46217 */
46218private pattern mustInstanceOfEClass_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
46219 Type.name(type,"EClass class");
46220 find directInstanceOf(problem,interpretation,element,type);
46221}
46222private pattern scopeDisallowsNewEClass_class(problem:LogicProblem, interpretation:PartialInterpretation) {
46223 find interpretation(problem,interpretation);
46224 PartialInterpretation.scopes(interpretation,scope);
46225 Scope.targetTypeInterpretation(scope,typeInterpretation);
46226 Scope.maxNewElements(scope,0);
46227 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
46228 Type.name(type,"EClass class");
46229}
46230
46231/**
46232 * An element may be an instance of type "EClass class".
46233 */
46234private pattern mayInstanceOfEClass_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
46235{
46236 find interpretation(problem,interpretation);
46237 PartialInterpretation.newElements(interpretation,element);
46238 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
46239 neg find mustInstanceOfEDataType_class(problem,interpretation,element);
46240 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
46241 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
46242 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
46243 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
46244 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
46245 neg find mustInstanceOfEObject_class(problem,interpretation,element);
46246 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
46247 neg find scopeDisallowsNewEClass_class(problem, interpretation);
46248 neg find isPrimitive(element);
46249} or {
46250 find interpretation(problem,interpretation);
46251 PartialInterpretation.openWorldElements(interpretation,element);
46252 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
46253 neg find mustInstanceOfEDataType_class(problem,interpretation,element);
46254 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
46255 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
46256 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
46257 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
46258 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
46259 neg find mustInstanceOfEObject_class(problem,interpretation,element);
46260 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
46261 neg find scopeDisallowsNewEClass_class(problem, interpretation);
46262 neg find isPrimitive(element);
46263} or
46264{ find mustInstanceOfEClass_class(problem,interpretation,element); }
46265/**
46266 * An element must be an instance of type "EClassifier class".
46267 */
46268private pattern mustInstanceOfEClassifier_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
46269 Type.name(type,"EClassifier class");
46270 find directInstanceOf(problem,interpretation,element,type);
46271}
46272private pattern scopeDisallowsNewEClassifier_class(problem:LogicProblem, interpretation:PartialInterpretation) {
46273 find interpretation(problem,interpretation);
46274 PartialInterpretation.scopes(interpretation,scope);
46275 Scope.targetTypeInterpretation(scope,typeInterpretation);
46276 Scope.maxNewElements(scope,0);
46277 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
46278 Type.name(type,"EClassifier class");
46279}
46280
46281/**
46282 * An element may be an instance of type "EClassifier class".
46283 */
46284private pattern mayInstanceOfEClassifier_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
46285{
46286 find interpretation(problem,interpretation);
46287 PartialInterpretation.newElements(interpretation,element);
46288 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
46289 neg find mustInstanceOfEDataType_class(problem,interpretation,element);
46290 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
46291 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
46292 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
46293 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
46294 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
46295 neg find mustInstanceOfEObject_class(problem,interpretation,element);
46296 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
46297 neg find mustInstanceOfEClass_class(problem,interpretation,element);
46298 neg find scopeDisallowsNewEClassifier_class(problem, interpretation);
46299 neg find isPrimitive(element);
46300} or {
46301 find interpretation(problem,interpretation);
46302 PartialInterpretation.openWorldElements(interpretation,element);
46303 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
46304 neg find mustInstanceOfEDataType_class(problem,interpretation,element);
46305 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
46306 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
46307 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
46308 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
46309 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
46310 neg find mustInstanceOfEObject_class(problem,interpretation,element);
46311 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
46312 neg find mustInstanceOfEClass_class(problem,interpretation,element);
46313 neg find scopeDisallowsNewEClassifier_class(problem, interpretation);
46314 neg find isPrimitive(element);
46315} or
46316{ find mustInstanceOfEClassifier_class(problem,interpretation,element); }
46317/**
46318 * An element must be an instance of type "EDataType class".
46319 */
46320private pattern mustInstanceOfEDataType_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
46321 Type.name(type,"EDataType class");
46322 find directInstanceOf(problem,interpretation,element,type);
46323}
46324private pattern scopeDisallowsNewEDataType_class(problem:LogicProblem, interpretation:PartialInterpretation) {
46325 find interpretation(problem,interpretation);
46326 PartialInterpretation.scopes(interpretation,scope);
46327 Scope.targetTypeInterpretation(scope,typeInterpretation);
46328 Scope.maxNewElements(scope,0);
46329 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
46330 Type.name(type,"EDataType class");
46331}
46332
46333/**
46334 * An element may be an instance of type "EDataType class".
46335 */
46336private pattern mayInstanceOfEDataType_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
46337{
46338 find interpretation(problem,interpretation);
46339 PartialInterpretation.newElements(interpretation,element);
46340 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
46341 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
46342 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
46343 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
46344 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
46345 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
46346 neg find mustInstanceOfEObject_class(problem,interpretation,element);
46347 neg find mustInstanceOfEEnum_class(problem,interpretation,element);
46348 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
46349 neg find mustInstanceOfEClass_class(problem,interpretation,element);
46350 neg find scopeDisallowsNewEDataType_class(problem, interpretation);
46351 neg find isPrimitive(element);
46352} or {
46353 find interpretation(problem,interpretation);
46354 PartialInterpretation.openWorldElements(interpretation,element);
46355 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
46356 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
46357 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
46358 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
46359 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
46360 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
46361 neg find mustInstanceOfEObject_class(problem,interpretation,element);
46362 neg find mustInstanceOfEEnum_class(problem,interpretation,element);
46363 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
46364 neg find mustInstanceOfEClass_class(problem,interpretation,element);
46365 neg find scopeDisallowsNewEDataType_class(problem, interpretation);
46366 neg find isPrimitive(element);
46367} or
46368{ find mustInstanceOfEDataType_class(problem,interpretation,element); }
46369/**
46370 * An element must be an instance of type "EEnum class".
46371 */
46372private pattern mustInstanceOfEEnum_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
46373 Type.name(type,"EEnum class");
46374 find directInstanceOf(problem,interpretation,element,type);
46375}
46376private pattern scopeDisallowsNewEEnum_class(problem:LogicProblem, interpretation:PartialInterpretation) {
46377 find interpretation(problem,interpretation);
46378 PartialInterpretation.scopes(interpretation,scope);
46379 Scope.targetTypeInterpretation(scope,typeInterpretation);
46380 Scope.maxNewElements(scope,0);
46381 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
46382 Type.name(type,"EEnum class");
46383}
46384
46385/**
46386 * An element may be an instance of type "EEnum class".
46387 */
46388private pattern mayInstanceOfEEnum_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
46389{
46390 find interpretation(problem,interpretation);
46391 PartialInterpretation.newElements(interpretation,element);
46392 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
46393 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
46394 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
46395 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
46396 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
46397 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
46398 neg find mustInstanceOfEObject_class(problem,interpretation,element);
46399 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
46400 neg find mustInstanceOfEClass_class(problem,interpretation,element);
46401 neg find scopeDisallowsNewEEnum_class(problem, interpretation);
46402 neg find isPrimitive(element);
46403} or {
46404 find interpretation(problem,interpretation);
46405 PartialInterpretation.openWorldElements(interpretation,element);
46406 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
46407 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
46408 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
46409 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
46410 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
46411 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
46412 neg find mustInstanceOfEObject_class(problem,interpretation,element);
46413 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
46414 neg find mustInstanceOfEClass_class(problem,interpretation,element);
46415 neg find scopeDisallowsNewEEnum_class(problem, interpretation);
46416 neg find isPrimitive(element);
46417} or
46418{ find mustInstanceOfEEnum_class(problem,interpretation,element); }
46419/**
46420 * An element must be an instance of type "EEnumLiteral class".
46421 */
46422private pattern mustInstanceOfEEnumLiteral_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
46423 Type.name(type,"EEnumLiteral class");
46424 find directInstanceOf(problem,interpretation,element,type);
46425}
46426private pattern scopeDisallowsNewEEnumLiteral_class(problem:LogicProblem, interpretation:PartialInterpretation) {
46427 find interpretation(problem,interpretation);
46428 PartialInterpretation.scopes(interpretation,scope);
46429 Scope.targetTypeInterpretation(scope,typeInterpretation);
46430 Scope.maxNewElements(scope,0);
46431 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
46432 Type.name(type,"EEnumLiteral class");
46433}
46434
46435/**
46436 * An element may be an instance of type "EEnumLiteral class".
46437 */
46438private pattern mayInstanceOfEEnumLiteral_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
46439{
46440 find interpretation(problem,interpretation);
46441 PartialInterpretation.newElements(interpretation,element);
46442 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
46443 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
46444 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
46445 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
46446 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
46447 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
46448 neg find mustInstanceOfEObject_class(problem,interpretation,element);
46449 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
46450 neg find scopeDisallowsNewEEnumLiteral_class(problem, interpretation);
46451 neg find isPrimitive(element);
46452} or {
46453 find interpretation(problem,interpretation);
46454 PartialInterpretation.openWorldElements(interpretation,element);
46455 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
46456 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
46457 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
46458 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
46459 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
46460 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
46461 neg find mustInstanceOfEObject_class(problem,interpretation,element);
46462 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
46463 neg find scopeDisallowsNewEEnumLiteral_class(problem, interpretation);
46464 neg find isPrimitive(element);
46465} or
46466{ find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); }
46467/**
46468 * An element must be an instance of type "EModelElement class".
46469 */
46470private pattern mustInstanceOfEModelElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
46471 Type.name(type,"EModelElement class");
46472 find directInstanceOf(problem,interpretation,element,type);
46473}
46474private pattern scopeDisallowsNewEModelElement_class(problem:LogicProblem, interpretation:PartialInterpretation) {
46475 find interpretation(problem,interpretation);
46476 PartialInterpretation.scopes(interpretation,scope);
46477 Scope.targetTypeInterpretation(scope,typeInterpretation);
46478 Scope.maxNewElements(scope,0);
46479 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
46480 Type.name(type,"EModelElement class");
46481}
46482
46483/**
46484 * An element may be an instance of type "EModelElement class".
46485 */
46486private pattern mayInstanceOfEModelElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
46487{
46488 find interpretation(problem,interpretation);
46489 PartialInterpretation.newElements(interpretation,element);
46490 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
46491 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
46492 neg find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,element);
46493 neg find mustInstanceOfEObject_class(problem,interpretation,element);
46494 neg find mustInstanceOfENamedElement_class(problem,interpretation,element);
46495 neg find scopeDisallowsNewEModelElement_class(problem, interpretation);
46496 neg find isPrimitive(element);
46497} or {
46498 find interpretation(problem,interpretation);
46499 PartialInterpretation.openWorldElements(interpretation,element);
46500 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
46501 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
46502 neg find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,element);
46503 neg find mustInstanceOfEObject_class(problem,interpretation,element);
46504 neg find mustInstanceOfENamedElement_class(problem,interpretation,element);
46505 neg find scopeDisallowsNewEModelElement_class(problem, interpretation);
46506 neg find isPrimitive(element);
46507} or
46508{ find mustInstanceOfEModelElement_class(problem,interpretation,element); }
46509/**
46510 * An element must be an instance of type "ENamedElement class".
46511 */
46512private pattern mustInstanceOfENamedElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
46513 Type.name(type,"ENamedElement class");
46514 find directInstanceOf(problem,interpretation,element,type);
46515}
46516private pattern scopeDisallowsNewENamedElement_class(problem:LogicProblem, interpretation:PartialInterpretation) {
46517 find interpretation(problem,interpretation);
46518 PartialInterpretation.scopes(interpretation,scope);
46519 Scope.targetTypeInterpretation(scope,typeInterpretation);
46520 Scope.maxNewElements(scope,0);
46521 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
46522 Type.name(type,"ENamedElement class");
46523}
46524
46525/**
46526 * An element may be an instance of type "ENamedElement class".
46527 */
46528private pattern mayInstanceOfENamedElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
46529{
46530 find interpretation(problem,interpretation);
46531 PartialInterpretation.newElements(interpretation,element);
46532 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
46533 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
46534 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
46535 neg find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,element);
46536 neg find mustInstanceOfEObject_class(problem,interpretation,element);
46537 neg find scopeDisallowsNewENamedElement_class(problem, interpretation);
46538 neg find isPrimitive(element);
46539} or {
46540 find interpretation(problem,interpretation);
46541 PartialInterpretation.openWorldElements(interpretation,element);
46542 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
46543 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
46544 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
46545 neg find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,element);
46546 neg find mustInstanceOfEObject_class(problem,interpretation,element);
46547 neg find scopeDisallowsNewENamedElement_class(problem, interpretation);
46548 neg find isPrimitive(element);
46549} or
46550{ find mustInstanceOfENamedElement_class(problem,interpretation,element); }
46551/**
46552 * An element must be an instance of type "EObject class".
46553 */
46554private pattern mustInstanceOfEObject_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
46555 Type.name(type,"EObject class");
46556 find directInstanceOf(problem,interpretation,element,type);
46557}
46558private pattern scopeDisallowsNewEObject_class(problem:LogicProblem, interpretation:PartialInterpretation) {
46559 find interpretation(problem,interpretation);
46560 PartialInterpretation.scopes(interpretation,scope);
46561 Scope.targetTypeInterpretation(scope,typeInterpretation);
46562 Scope.maxNewElements(scope,0);
46563 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
46564 Type.name(type,"EObject class");
46565}
46566
46567/**
46568 * An element may be an instance of type "EObject class".
46569 */
46570private pattern mayInstanceOfEObject_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
46571{
46572 find interpretation(problem,interpretation);
46573 PartialInterpretation.newElements(interpretation,element);
46574 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
46575 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
46576 neg find mustInstanceOfEModelElement_class(problem,interpretation,element);
46577 neg find scopeDisallowsNewEObject_class(problem, interpretation);
46578 neg find isPrimitive(element);
46579} or {
46580 find interpretation(problem,interpretation);
46581 PartialInterpretation.openWorldElements(interpretation,element);
46582 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
46583 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
46584 neg find mustInstanceOfEModelElement_class(problem,interpretation,element);
46585 neg find scopeDisallowsNewEObject_class(problem, interpretation);
46586 neg find isPrimitive(element);
46587} or
46588{ find mustInstanceOfEObject_class(problem,interpretation,element); }
46589/**
46590 * An element must be an instance of type "EOperation class".
46591 */
46592private pattern mustInstanceOfEOperation_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
46593 Type.name(type,"EOperation class");
46594 find directInstanceOf(problem,interpretation,element,type);
46595}
46596private pattern scopeDisallowsNewEOperation_class(problem:LogicProblem, interpretation:PartialInterpretation) {
46597 find interpretation(problem,interpretation);
46598 PartialInterpretation.scopes(interpretation,scope);
46599 Scope.targetTypeInterpretation(scope,typeInterpretation);
46600 Scope.maxNewElements(scope,0);
46601 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
46602 Type.name(type,"EOperation class");
46603}
46604
46605/**
46606 * An element may be an instance of type "EOperation class".
46607 */
46608private pattern mayInstanceOfEOperation_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
46609{
46610 find interpretation(problem,interpretation);
46611 PartialInterpretation.newElements(interpretation,element);
46612 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
46613 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
46614 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
46615 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
46616 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
46617 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
46618 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
46619 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
46620 neg find mustInstanceOfEObject_class(problem,interpretation,element);
46621 neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element);
46622 neg find scopeDisallowsNewEOperation_class(problem, interpretation);
46623 neg find isPrimitive(element);
46624} or {
46625 find interpretation(problem,interpretation);
46626 PartialInterpretation.openWorldElements(interpretation,element);
46627 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
46628 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
46629 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
46630 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
46631 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
46632 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
46633 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
46634 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
46635 neg find mustInstanceOfEObject_class(problem,interpretation,element);
46636 neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element);
46637 neg find scopeDisallowsNewEOperation_class(problem, interpretation);
46638 neg find isPrimitive(element);
46639} or
46640{ find mustInstanceOfEOperation_class(problem,interpretation,element); }
46641/**
46642 * An element must be an instance of type "EPackage class".
46643 */
46644private pattern mustInstanceOfEPackage_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
46645 Type.name(type,"EPackage class");
46646 find directInstanceOf(problem,interpretation,element,type);
46647}
46648private pattern scopeDisallowsNewEPackage_class(problem:LogicProblem, interpretation:PartialInterpretation) {
46649 find interpretation(problem,interpretation);
46650 PartialInterpretation.scopes(interpretation,scope);
46651 Scope.targetTypeInterpretation(scope,typeInterpretation);
46652 Scope.maxNewElements(scope,0);
46653 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
46654 Type.name(type,"EPackage class");
46655}
46656
46657/**
46658 * An element may be an instance of type "EPackage class".
46659 */
46660private pattern mayInstanceOfEPackage_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
46661{
46662 find interpretation(problem,interpretation);
46663 PartialInterpretation.newElements(interpretation,element);
46664 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
46665 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
46666 neg find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,element);
46667 neg find mustInstanceOfEObject_class(problem,interpretation,element);
46668 neg find scopeDisallowsNewEPackage_class(problem, interpretation);
46669 neg find isPrimitive(element);
46670} or {
46671 find interpretation(problem,interpretation);
46672 PartialInterpretation.openWorldElements(interpretation,element);
46673 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
46674 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
46675 neg find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,element);
46676 neg find mustInstanceOfEObject_class(problem,interpretation,element);
46677 neg find scopeDisallowsNewEPackage_class(problem, interpretation);
46678 neg find isPrimitive(element);
46679} or
46680{ find mustInstanceOfEPackage_class(problem,interpretation,element); }
46681/**
46682 * An element must be an instance of type "EParameter class".
46683 */
46684private pattern mustInstanceOfEParameter_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
46685 Type.name(type,"EParameter class");
46686 find directInstanceOf(problem,interpretation,element,type);
46687}
46688private pattern scopeDisallowsNewEParameter_class(problem:LogicProblem, interpretation:PartialInterpretation) {
46689 find interpretation(problem,interpretation);
46690 PartialInterpretation.scopes(interpretation,scope);
46691 Scope.targetTypeInterpretation(scope,typeInterpretation);
46692 Scope.maxNewElements(scope,0);
46693 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
46694 Type.name(type,"EParameter class");
46695}
46696
46697/**
46698 * An element may be an instance of type "EParameter class".
46699 */
46700private pattern mayInstanceOfEParameter_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
46701{
46702 find interpretation(problem,interpretation);
46703 PartialInterpretation.newElements(interpretation,element);
46704 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
46705 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
46706 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
46707 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
46708 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
46709 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
46710 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
46711 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
46712 neg find mustInstanceOfEObject_class(problem,interpretation,element);
46713 neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element);
46714 neg find scopeDisallowsNewEParameter_class(problem, interpretation);
46715 neg find isPrimitive(element);
46716} or {
46717 find interpretation(problem,interpretation);
46718 PartialInterpretation.openWorldElements(interpretation,element);
46719 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
46720 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
46721 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
46722 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
46723 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
46724 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
46725 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
46726 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
46727 neg find mustInstanceOfEObject_class(problem,interpretation,element);
46728 neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element);
46729 neg find scopeDisallowsNewEParameter_class(problem, interpretation);
46730 neg find isPrimitive(element);
46731} or
46732{ find mustInstanceOfEParameter_class(problem,interpretation,element); }
46733/**
46734 * An element must be an instance of type "EReference class".
46735 */
46736private pattern mustInstanceOfEReference_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
46737 Type.name(type,"EReference class");
46738 find directInstanceOf(problem,interpretation,element,type);
46739}
46740private pattern scopeDisallowsNewEReference_class(problem:LogicProblem, interpretation:PartialInterpretation) {
46741 find interpretation(problem,interpretation);
46742 PartialInterpretation.scopes(interpretation,scope);
46743 Scope.targetTypeInterpretation(scope,typeInterpretation);
46744 Scope.maxNewElements(scope,0);
46745 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
46746 Type.name(type,"EReference class");
46747}
46748
46749/**
46750 * An element may be an instance of type "EReference class".
46751 */
46752private pattern mayInstanceOfEReference_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
46753{
46754 find interpretation(problem,interpretation);
46755 PartialInterpretation.newElements(interpretation,element);
46756 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
46757 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
46758 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
46759 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
46760 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
46761 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
46762 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
46763 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
46764 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
46765 neg find mustInstanceOfEObject_class(problem,interpretation,element);
46766 neg find mustInstanceOfEAttribute_class(problem,interpretation,element);
46767 neg find scopeDisallowsNewEReference_class(problem, interpretation);
46768 neg find isPrimitive(element);
46769} or {
46770 find interpretation(problem,interpretation);
46771 PartialInterpretation.openWorldElements(interpretation,element);
46772 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
46773 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
46774 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
46775 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
46776 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
46777 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
46778 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
46779 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
46780 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
46781 neg find mustInstanceOfEObject_class(problem,interpretation,element);
46782 neg find mustInstanceOfEAttribute_class(problem,interpretation,element);
46783 neg find scopeDisallowsNewEReference_class(problem, interpretation);
46784 neg find isPrimitive(element);
46785} or
46786{ find mustInstanceOfEReference_class(problem,interpretation,element); }
46787/**
46788 * An element must be an instance of type "EStructuralFeature class".
46789 */
46790private pattern mustInstanceOfEStructuralFeature_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
46791 Type.name(type,"EStructuralFeature class");
46792 find directInstanceOf(problem,interpretation,element,type);
46793}
46794private pattern scopeDisallowsNewEStructuralFeature_class(problem:LogicProblem, interpretation:PartialInterpretation) {
46795 find interpretation(problem,interpretation);
46796 PartialInterpretation.scopes(interpretation,scope);
46797 Scope.targetTypeInterpretation(scope,typeInterpretation);
46798 Scope.maxNewElements(scope,0);
46799 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
46800 Type.name(type,"EStructuralFeature class");
46801}
46802
46803/**
46804 * An element may be an instance of type "EStructuralFeature class".
46805 */
46806private pattern mayInstanceOfEStructuralFeature_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
46807{
46808 find interpretation(problem,interpretation);
46809 PartialInterpretation.newElements(interpretation,element);
46810 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
46811 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
46812 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
46813 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
46814 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
46815 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
46816 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
46817 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
46818 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
46819 neg find mustInstanceOfEObject_class(problem,interpretation,element);
46820 neg find mustInstanceOfEReference_class(problem,interpretation,element);
46821 neg find mustInstanceOfEAttribute_class(problem,interpretation,element);
46822 neg find scopeDisallowsNewEStructuralFeature_class(problem, interpretation);
46823 neg find isPrimitive(element);
46824} or {
46825 find interpretation(problem,interpretation);
46826 PartialInterpretation.openWorldElements(interpretation,element);
46827 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
46828 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
46829 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
46830 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
46831 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
46832 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
46833 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
46834 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
46835 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
46836 neg find mustInstanceOfEObject_class(problem,interpretation,element);
46837 neg find mustInstanceOfEReference_class(problem,interpretation,element);
46838 neg find mustInstanceOfEAttribute_class(problem,interpretation,element);
46839 neg find scopeDisallowsNewEStructuralFeature_class(problem, interpretation);
46840 neg find isPrimitive(element);
46841} or
46842{ find mustInstanceOfEStructuralFeature_class(problem,interpretation,element); }
46843/**
46844 * An element must be an instance of type "ETypedElement class".
46845 */
46846private pattern mustInstanceOfETypedElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
46847 Type.name(type,"ETypedElement class");
46848 find directInstanceOf(problem,interpretation,element,type);
46849}
46850private pattern scopeDisallowsNewETypedElement_class(problem:LogicProblem, interpretation:PartialInterpretation) {
46851 find interpretation(problem,interpretation);
46852 PartialInterpretation.scopes(interpretation,scope);
46853 Scope.targetTypeInterpretation(scope,typeInterpretation);
46854 Scope.maxNewElements(scope,0);
46855 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
46856 Type.name(type,"ETypedElement class");
46857}
46858
46859/**
46860 * An element may be an instance of type "ETypedElement class".
46861 */
46862private pattern mayInstanceOfETypedElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
46863{
46864 find interpretation(problem,interpretation);
46865 PartialInterpretation.newElements(interpretation,element);
46866 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
46867 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
46868 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
46869 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
46870 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
46871 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
46872 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
46873 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
46874 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
46875 neg find mustInstanceOfEObject_class(problem,interpretation,element);
46876 neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element);
46877 neg find scopeDisallowsNewETypedElement_class(problem, interpretation);
46878 neg find isPrimitive(element);
46879} or {
46880 find interpretation(problem,interpretation);
46881 PartialInterpretation.openWorldElements(interpretation,element);
46882 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
46883 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
46884 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
46885 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
46886 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
46887 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
46888 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
46889 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
46890 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
46891 neg find mustInstanceOfEObject_class(problem,interpretation,element);
46892 neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element);
46893 neg find scopeDisallowsNewETypedElement_class(problem, interpretation);
46894 neg find isPrimitive(element);
46895} or
46896{ find mustInstanceOfETypedElement_class(problem,interpretation,element); }
46897/**
46898 * An element must be an instance of type "EStringToStringMapEntry class".
46899 */
46900private pattern mustInstanceOfEStringToStringMapEntry_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
46901 Type.name(type,"EStringToStringMapEntry class");
46902 find directInstanceOf(problem,interpretation,element,type);
46903}
46904private pattern scopeDisallowsNewEStringToStringMapEntry_class(problem:LogicProblem, interpretation:PartialInterpretation) {
46905 find interpretation(problem,interpretation);
46906 PartialInterpretation.scopes(interpretation,scope);
46907 Scope.targetTypeInterpretation(scope,typeInterpretation);
46908 Scope.maxNewElements(scope,0);
46909 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
46910 Type.name(type,"EStringToStringMapEntry class");
46911}
46912
46913/**
46914 * An element may be an instance of type "EStringToStringMapEntry class".
46915 */
46916private pattern mayInstanceOfEStringToStringMapEntry_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
46917{
46918 find interpretation(problem,interpretation);
46919 PartialInterpretation.newElements(interpretation,element);
46920 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
46921 neg find mustInstanceOfEModelElement_class(problem,interpretation,element);
46922 neg find mustInstanceOfEObject_class(problem,interpretation,element);
46923 neg find scopeDisallowsNewEStringToStringMapEntry_class(problem, interpretation);
46924 neg find isPrimitive(element);
46925} or {
46926 find interpretation(problem,interpretation);
46927 PartialInterpretation.openWorldElements(interpretation,element);
46928 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
46929 neg find mustInstanceOfEModelElement_class(problem,interpretation,element);
46930 neg find mustInstanceOfEObject_class(problem,interpretation,element);
46931 neg find scopeDisallowsNewEStringToStringMapEntry_class(problem, interpretation);
46932 neg find isPrimitive(element);
46933} or
46934{ find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); }
46935/**
46936 * An element must be an instance of type "EGenericType class".
46937 */
46938private pattern mustInstanceOfEGenericType_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
46939 Type.name(type,"EGenericType class");
46940 find directInstanceOf(problem,interpretation,element,type);
46941}
46942private pattern scopeDisallowsNewEGenericType_class(problem:LogicProblem, interpretation:PartialInterpretation) {
46943 find interpretation(problem,interpretation);
46944 PartialInterpretation.scopes(interpretation,scope);
46945 Scope.targetTypeInterpretation(scope,typeInterpretation);
46946 Scope.maxNewElements(scope,0);
46947 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
46948 Type.name(type,"EGenericType class");
46949}
46950
46951/**
46952 * An element may be an instance of type "EGenericType class".
46953 */
46954private pattern mayInstanceOfEGenericType_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
46955{
46956 find interpretation(problem,interpretation);
46957 PartialInterpretation.newElements(interpretation,element);
46958 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
46959 neg find mustInstanceOfEModelElement_class(problem,interpretation,element);
46960 neg find mustInstanceOfEObject_class(problem,interpretation,element);
46961 neg find scopeDisallowsNewEGenericType_class(problem, interpretation);
46962 neg find isPrimitive(element);
46963} or {
46964 find interpretation(problem,interpretation);
46965 PartialInterpretation.openWorldElements(interpretation,element);
46966 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
46967 neg find mustInstanceOfEModelElement_class(problem,interpretation,element);
46968 neg find mustInstanceOfEObject_class(problem,interpretation,element);
46969 neg find scopeDisallowsNewEGenericType_class(problem, interpretation);
46970 neg find isPrimitive(element);
46971} or
46972{ find mustInstanceOfEGenericType_class(problem,interpretation,element); }
46973/**
46974 * An element must be an instance of type "ETypeParameter class".
46975 */
46976private pattern mustInstanceOfETypeParameter_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
46977 Type.name(type,"ETypeParameter class");
46978 find directInstanceOf(problem,interpretation,element,type);
46979}
46980private pattern scopeDisallowsNewETypeParameter_class(problem:LogicProblem, interpretation:PartialInterpretation) {
46981 find interpretation(problem,interpretation);
46982 PartialInterpretation.scopes(interpretation,scope);
46983 Scope.targetTypeInterpretation(scope,typeInterpretation);
46984 Scope.maxNewElements(scope,0);
46985 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
46986 Type.name(type,"ETypeParameter class");
46987}
46988
46989/**
46990 * An element may be an instance of type "ETypeParameter class".
46991 */
46992private pattern mayInstanceOfETypeParameter_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
46993{
46994 find interpretation(problem,interpretation);
46995 PartialInterpretation.newElements(interpretation,element);
46996 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
46997 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
46998 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
46999 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
47000 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
47001 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
47002 neg find mustInstanceOfEObject_class(problem,interpretation,element);
47003 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
47004 neg find scopeDisallowsNewETypeParameter_class(problem, interpretation);
47005 neg find isPrimitive(element);
47006} or {
47007 find interpretation(problem,interpretation);
47008 PartialInterpretation.openWorldElements(interpretation,element);
47009 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
47010 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
47011 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
47012 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
47013 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
47014 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
47015 neg find mustInstanceOfEObject_class(problem,interpretation,element);
47016 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
47017 neg find scopeDisallowsNewETypeParameter_class(problem, interpretation);
47018 neg find isPrimitive(element);
47019} or
47020{ find mustInstanceOfETypeParameter_class(problem,interpretation,element); }
47021/**
47022 * An element must be an instance of type "EModelElement class DefinedPart".
47023 */
47024private pattern mustInstanceOfEModelElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
47025 Type.name(type,"EModelElement class DefinedPart");
47026 find directInstanceOf(problem,interpretation,element,type);
47027}
47028private pattern scopeDisallowsNewEModelElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) {
47029 find interpretation(problem,interpretation);
47030 PartialInterpretation.scopes(interpretation,scope);
47031 Scope.targetTypeInterpretation(scope,typeInterpretation);
47032 Scope.maxNewElements(scope,0);
47033 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
47034 Type.name(type,"EModelElement class DefinedPart");
47035}
47036
47037/**
47038 * An element may be an instance of type "EModelElement class DefinedPart".
47039 */
47040private pattern mayInstanceOfEModelElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
47041{ find mustInstanceOfEModelElement_class_DefinedPart(problem,interpretation,element); }
47042/**
47043 * An element must be an instance of type "EModelElement class UndefinedPart".
47044 */
47045private pattern mustInstanceOfEModelElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
47046 Type.name(type,"EModelElement class UndefinedPart");
47047 find directInstanceOf(problem,interpretation,element,type);
47048}
47049private pattern scopeDisallowsNewEModelElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) {
47050 find interpretation(problem,interpretation);
47051 PartialInterpretation.scopes(interpretation,scope);
47052 Scope.targetTypeInterpretation(scope,typeInterpretation);
47053 Scope.maxNewElements(scope,0);
47054 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
47055 Type.name(type,"EModelElement class UndefinedPart");
47056}
47057
47058/**
47059 * An element may be an instance of type "EModelElement class UndefinedPart".
47060 */
47061private pattern mayInstanceOfEModelElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
47062{
47063 find interpretation(problem,interpretation);
47064 PartialInterpretation.newElements(interpretation,element);
47065 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
47066 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
47067 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
47068 neg find mustInstanceOfEObject_class(problem,interpretation,element);
47069 neg find mustInstanceOfENamedElement_class(problem,interpretation,element);
47070 neg find scopeDisallowsNewEModelElement_class_UndefinedPart(problem, interpretation);
47071 neg find isPrimitive(element);
47072} or {
47073 find interpretation(problem,interpretation);
47074 PartialInterpretation.openWorldElements(interpretation,element);
47075 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
47076 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
47077 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
47078 neg find mustInstanceOfEObject_class(problem,interpretation,element);
47079 neg find mustInstanceOfENamedElement_class(problem,interpretation,element);
47080 neg find scopeDisallowsNewEModelElement_class_UndefinedPart(problem, interpretation);
47081 neg find isPrimitive(element);
47082} or
47083{ find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,element); }
47084/**
47085 * An element must be an instance of type "ENamedElement class DefinedPart".
47086 */
47087private pattern mustInstanceOfENamedElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
47088 Type.name(type,"ENamedElement class DefinedPart");
47089 find directInstanceOf(problem,interpretation,element,type);
47090}
47091private pattern scopeDisallowsNewENamedElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) {
47092 find interpretation(problem,interpretation);
47093 PartialInterpretation.scopes(interpretation,scope);
47094 Scope.targetTypeInterpretation(scope,typeInterpretation);
47095 Scope.maxNewElements(scope,0);
47096 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
47097 Type.name(type,"ENamedElement class DefinedPart");
47098}
47099
47100/**
47101 * An element may be an instance of type "ENamedElement class DefinedPart".
47102 */
47103private pattern mayInstanceOfENamedElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
47104{ find mustInstanceOfENamedElement_class_DefinedPart(problem,interpretation,element); }
47105/**
47106 * An element must be an instance of type "ENamedElement class UndefinedPart".
47107 */
47108private pattern mustInstanceOfENamedElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
47109 Type.name(type,"ENamedElement class UndefinedPart");
47110 find directInstanceOf(problem,interpretation,element,type);
47111}
47112private pattern scopeDisallowsNewENamedElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) {
47113 find interpretation(problem,interpretation);
47114 PartialInterpretation.scopes(interpretation,scope);
47115 Scope.targetTypeInterpretation(scope,typeInterpretation);
47116 Scope.maxNewElements(scope,0);
47117 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
47118 Type.name(type,"ENamedElement class UndefinedPart");
47119}
47120
47121/**
47122 * An element may be an instance of type "ENamedElement class UndefinedPart".
47123 */
47124private pattern mayInstanceOfENamedElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
47125{
47126 find interpretation(problem,interpretation);
47127 PartialInterpretation.newElements(interpretation,element);
47128 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
47129 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
47130 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
47131 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
47132 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
47133 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
47134 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
47135 neg find mustInstanceOfEObject_class(problem,interpretation,element);
47136 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
47137 neg find scopeDisallowsNewENamedElement_class_UndefinedPart(problem, interpretation);
47138 neg find isPrimitive(element);
47139} or {
47140 find interpretation(problem,interpretation);
47141 PartialInterpretation.openWorldElements(interpretation,element);
47142 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
47143 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
47144 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
47145 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
47146 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
47147 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
47148 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
47149 neg find mustInstanceOfEObject_class(problem,interpretation,element);
47150 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
47151 neg find scopeDisallowsNewENamedElement_class_UndefinedPart(problem, interpretation);
47152 neg find isPrimitive(element);
47153} or
47154{ find mustInstanceOfENamedElement_class_UndefinedPart(problem,interpretation,element); }
47155/**
47156 * An element must be an instance of type "EPackage class DefinedPart".
47157 */
47158private pattern mustInstanceOfEPackage_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
47159 Type.name(type,"EPackage class DefinedPart");
47160 find directInstanceOf(problem,interpretation,element,type);
47161}
47162private pattern scopeDisallowsNewEPackage_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) {
47163 find interpretation(problem,interpretation);
47164 PartialInterpretation.scopes(interpretation,scope);
47165 Scope.targetTypeInterpretation(scope,typeInterpretation);
47166 Scope.maxNewElements(scope,0);
47167 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
47168 Type.name(type,"EPackage class DefinedPart");
47169}
47170
47171/**
47172 * An element may be an instance of type "EPackage class DefinedPart".
47173 */
47174private pattern mayInstanceOfEPackage_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
47175{ find mustInstanceOfEPackage_class_DefinedPart(problem,interpretation,element); }
47176/**
47177 * An element must be an instance of type "EPackage class UndefinedPart".
47178 */
47179private pattern mustInstanceOfEPackage_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
47180 Type.name(type,"EPackage class UndefinedPart");
47181 find directInstanceOf(problem,interpretation,element,type);
47182}
47183private pattern scopeDisallowsNewEPackage_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) {
47184 find interpretation(problem,interpretation);
47185 PartialInterpretation.scopes(interpretation,scope);
47186 Scope.targetTypeInterpretation(scope,typeInterpretation);
47187 Scope.maxNewElements(scope,0);
47188 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
47189 Type.name(type,"EPackage class UndefinedPart");
47190}
47191
47192/**
47193 * An element may be an instance of type "EPackage class UndefinedPart".
47194 */
47195private pattern mayInstanceOfEPackage_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
47196{
47197 find interpretation(problem,interpretation);
47198 PartialInterpretation.newElements(interpretation,element);
47199 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
47200 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
47201 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
47202 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
47203 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
47204 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
47205 neg find mustInstanceOfEObject_class(problem,interpretation,element);
47206 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
47207 neg find scopeDisallowsNewEPackage_class_UndefinedPart(problem, interpretation);
47208 neg find isPrimitive(element);
47209} or {
47210 find interpretation(problem,interpretation);
47211 PartialInterpretation.openWorldElements(interpretation,element);
47212 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
47213 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
47214 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
47215 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
47216 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
47217 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
47218 neg find mustInstanceOfEObject_class(problem,interpretation,element);
47219 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
47220 neg find scopeDisallowsNewEPackage_class_UndefinedPart(problem, interpretation);
47221 neg find isPrimitive(element);
47222} or
47223{ find mustInstanceOfEPackage_class_UndefinedPart(problem,interpretation,element); }
47224
47225//////////
47226// 1.2 Relation Declaration Indexers
47227//////////
47228/**
47229 * Matcher for detecting tuples t where []eAttributeType reference EAttribute(source,target)
47230 */
47231private pattern mustInRelationeAttributeType_reference_EAttribute(
47232 problem:LogicProblem, interpretation:PartialInterpretation,
47233 source: DefinedElement, target:DefinedElement)
47234{
47235 find interpretation(problem,interpretation);
47236 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
47237 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAttributeType reference EAttribute");
47238 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
47239 BinaryElementRelationLink.param1(link,source);
47240 BinaryElementRelationLink.param2(link,target);
47241}
47242/**
47243 * Matcher for detecting tuples t where <>eAttributeType reference EAttribute(source,target)
47244 */
47245private pattern mayInRelationeAttributeType_reference_EAttribute(
47246 problem:LogicProblem, interpretation:PartialInterpretation,
47247 source: DefinedElement, target:DefinedElement)
47248{
47249 find interpretation(problem,interpretation);
47250 // The two endpoint of the link have to exist
47251 find mayExist(problem, interpretation, source);
47252 find mayExist(problem, interpretation, target);
47253 // Type consistency
47254 find mayInstanceOfEAttribute_class(problem,interpretation,source);
47255 find mayInstanceOfEDataType_class(problem,interpretation,target);
47256 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
47257 // the upper bound of the multiplicity should be considered.
47258 numberOfExistingReferences == count find mustInRelationeAttributeType_reference_EAttribute(problem,interpretation,source,_);
47259 check(numberOfExistingReferences < 1);
47260} or {
47261 find mustInRelationeAttributeType_reference_EAttribute(problem,interpretation,source,target);
47262}
47263/**
47264 * Matcher for detecting tuples t where []details reference EAnnotation(source,target)
47265 */
47266private pattern mustInRelationdetails_reference_EAnnotation(
47267 problem:LogicProblem, interpretation:PartialInterpretation,
47268 source: DefinedElement, target:DefinedElement)
47269{
47270 find interpretation(problem,interpretation);
47271 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
47272 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"details reference EAnnotation");
47273 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
47274 BinaryElementRelationLink.param1(link,source);
47275 BinaryElementRelationLink.param2(link,target);
47276}
47277/**
47278 * Matcher for detecting tuples t where <>details reference EAnnotation(source,target)
47279 */
47280private pattern mayInRelationdetails_reference_EAnnotation(
47281 problem:LogicProblem, interpretation:PartialInterpretation,
47282 source: DefinedElement, target:DefinedElement)
47283{
47284 find interpretation(problem,interpretation);
47285 // The two endpoint of the link have to exist
47286 find mayExist(problem, interpretation, source);
47287 find mayExist(problem, interpretation, target);
47288 // Type consistency
47289 find mayInstanceOfEAnnotation_class(problem,interpretation,source);
47290 find mayInstanceOfEStringToStringMapEntry_class(problem,interpretation,target);
47291 // The reference is containment, then a new reference cannot be create if:
47292 // 1. Multiple parents
47293 neg find mustContains4(problem,interpretation,_,target);
47294 // 2. Circle in the containment hierarchy
47295 neg find mustTransitiveContains(source,target);
47296} or {
47297 find mustInRelationdetails_reference_EAnnotation(problem,interpretation,source,target);
47298}
47299/**
47300 * Matcher for detecting tuples t where []eModelElement reference EAnnotation(source,target)
47301 */
47302private pattern mustInRelationeModelElement_reference_EAnnotation(
47303 problem:LogicProblem, interpretation:PartialInterpretation,
47304 source: DefinedElement, target:DefinedElement)
47305{
47306 find interpretation(problem,interpretation);
47307 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
47308 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eModelElement reference EAnnotation");
47309 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
47310 BinaryElementRelationLink.param1(link,source);
47311 BinaryElementRelationLink.param2(link,target);
47312}
47313/**
47314 * Matcher for detecting tuples t where <>eModelElement reference EAnnotation(source,target)
47315 */
47316private pattern mayInRelationeModelElement_reference_EAnnotation(
47317 problem:LogicProblem, interpretation:PartialInterpretation,
47318 source: DefinedElement, target:DefinedElement)
47319{
47320 find interpretation(problem,interpretation);
47321 // The two endpoint of the link have to exist
47322 find mayExist(problem, interpretation, source);
47323 find mayExist(problem, interpretation, target);
47324 // Type consistency
47325 find mayInstanceOfEAnnotation_class(problem,interpretation,source);
47326 find mayInstanceOfEModelElement_class(problem,interpretation,target);
47327 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
47328 // the upper bound of the multiplicity should be considered.
47329 numberOfExistingReferences == count find mustInRelationeModelElement_reference_EAnnotation(problem,interpretation,source,_);
47330 check(numberOfExistingReferences < 1);
47331 // The eOpposite of the reference is containment, then a referene cannot be created if
47332 // 1. Multiple parents
47333 neg find mustContains4(problem,interpretation,source,_);
47334 // 2. Circle in the containment hierarchy
47335 neg find mustTransitiveContains(source,target);
47336} or {
47337 find mustInRelationeModelElement_reference_EAnnotation(problem,interpretation,source,target);
47338}
47339/**
47340 * Matcher for detecting tuples t where []contents reference EAnnotation(source,target)
47341 */
47342private pattern mustInRelationcontents_reference_EAnnotation(
47343 problem:LogicProblem, interpretation:PartialInterpretation,
47344 source: DefinedElement, target:DefinedElement)
47345{
47346 find interpretation(problem,interpretation);
47347 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
47348 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"contents reference EAnnotation");
47349 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
47350 BinaryElementRelationLink.param1(link,source);
47351 BinaryElementRelationLink.param2(link,target);
47352}
47353/**
47354 * Matcher for detecting tuples t where <>contents reference EAnnotation(source,target)
47355 */
47356private pattern mayInRelationcontents_reference_EAnnotation(
47357 problem:LogicProblem, interpretation:PartialInterpretation,
47358 source: DefinedElement, target:DefinedElement)
47359{
47360 find interpretation(problem,interpretation);
47361 // The two endpoint of the link have to exist
47362 find mayExist(problem, interpretation, source);
47363 find mayExist(problem, interpretation, target);
47364 // Type consistency
47365 find mayInstanceOfEAnnotation_class(problem,interpretation,source);
47366 find mayInstanceOfEObject_class(problem,interpretation,target);
47367 // The reference is containment, then a new reference cannot be create if:
47368 // 1. Multiple parents
47369 neg find mustContains4(problem,interpretation,_,target);
47370 // 2. Circle in the containment hierarchy
47371 neg find mustTransitiveContains(source,target);
47372} or {
47373 find mustInRelationcontents_reference_EAnnotation(problem,interpretation,source,target);
47374}
47375/**
47376 * Matcher for detecting tuples t where []references reference EAnnotation(source,target)
47377 */
47378private pattern mustInRelationreferences_reference_EAnnotation(
47379 problem:LogicProblem, interpretation:PartialInterpretation,
47380 source: DefinedElement, target:DefinedElement)
47381{
47382 find interpretation(problem,interpretation);
47383 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
47384 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"references reference EAnnotation");
47385 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
47386 BinaryElementRelationLink.param1(link,source);
47387 BinaryElementRelationLink.param2(link,target);
47388}
47389/**
47390 * Matcher for detecting tuples t where <>references reference EAnnotation(source,target)
47391 */
47392private pattern mayInRelationreferences_reference_EAnnotation(
47393 problem:LogicProblem, interpretation:PartialInterpretation,
47394 source: DefinedElement, target:DefinedElement)
47395{
47396 find interpretation(problem,interpretation);
47397 // The two endpoint of the link have to exist
47398 find mayExist(problem, interpretation, source);
47399 find mayExist(problem, interpretation, target);
47400 // Type consistency
47401 find mayInstanceOfEAnnotation_class(problem,interpretation,source);
47402 find mayInstanceOfEObject_class(problem,interpretation,target);
47403} or {
47404 find mustInRelationreferences_reference_EAnnotation(problem,interpretation,source,target);
47405}
47406/**
47407 * Matcher for detecting tuples t where []eSuperTypes reference EClass(source,target)
47408 */
47409private pattern mustInRelationeSuperTypes_reference_EClass(
47410 problem:LogicProblem, interpretation:PartialInterpretation,
47411 source: DefinedElement, target:DefinedElement)
47412{
47413 find interpretation(problem,interpretation);
47414 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
47415 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eSuperTypes reference EClass");
47416 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
47417 BinaryElementRelationLink.param1(link,source);
47418 BinaryElementRelationLink.param2(link,target);
47419}
47420/**
47421 * Matcher for detecting tuples t where <>eSuperTypes reference EClass(source,target)
47422 */
47423private pattern mayInRelationeSuperTypes_reference_EClass(
47424 problem:LogicProblem, interpretation:PartialInterpretation,
47425 source: DefinedElement, target:DefinedElement)
47426{
47427 find interpretation(problem,interpretation);
47428 // The two endpoint of the link have to exist
47429 find mayExist(problem, interpretation, source);
47430 find mayExist(problem, interpretation, target);
47431 // Type consistency
47432 find mayInstanceOfEClass_class(problem,interpretation,source);
47433 find mayInstanceOfEClass_class(problem,interpretation,target);
47434} or {
47435 find mustInRelationeSuperTypes_reference_EClass(problem,interpretation,source,target);
47436}
47437/**
47438 * Matcher for detecting tuples t where []eOperations reference EClass(source,target)
47439 */
47440private pattern mustInRelationeOperations_reference_EClass(
47441 problem:LogicProblem, interpretation:PartialInterpretation,
47442 source: DefinedElement, target:DefinedElement)
47443{
47444 find interpretation(problem,interpretation);
47445 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
47446 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eOperations reference EClass");
47447 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
47448 BinaryElementRelationLink.param1(link,source);
47449 BinaryElementRelationLink.param2(link,target);
47450}
47451/**
47452 * Matcher for detecting tuples t where <>eOperations reference EClass(source,target)
47453 */
47454private pattern mayInRelationeOperations_reference_EClass(
47455 problem:LogicProblem, interpretation:PartialInterpretation,
47456 source: DefinedElement, target:DefinedElement)
47457{
47458 find interpretation(problem,interpretation);
47459 // The two endpoint of the link have to exist
47460 find mayExist(problem, interpretation, source);
47461 find mayExist(problem, interpretation, target);
47462 // Type consistency
47463 find mayInstanceOfEClass_class(problem,interpretation,source);
47464 find mayInstanceOfEOperation_class(problem,interpretation,target);
47465 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
47466 // the upper bound of the opposite reference multiplicity should be considered.
47467 numberOfExistingOppositeReferences == count find mustInRelationeContainingClass_reference_EOperation(problem,interpretation,target,_);
47468 check(numberOfExistingOppositeReferences < 1);
47469 // The reference is containment, then a new reference cannot be create if:
47470 // 1. Multiple parents
47471 neg find mustContains4(problem,interpretation,_,target);
47472 // 2. Circle in the containment hierarchy
47473 neg find mustTransitiveContains(source,target);
47474} or {
47475 find mustInRelationeOperations_reference_EClass(problem,interpretation,source,target);
47476}
47477/**
47478 * Matcher for detecting tuples t where []eAllAttributes reference EClass(source,target)
47479 */
47480private pattern mustInRelationeAllAttributes_reference_EClass(
47481 problem:LogicProblem, interpretation:PartialInterpretation,
47482 source: DefinedElement, target:DefinedElement)
47483{
47484 find interpretation(problem,interpretation);
47485 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
47486 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllAttributes reference EClass");
47487 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
47488 BinaryElementRelationLink.param1(link,source);
47489 BinaryElementRelationLink.param2(link,target);
47490}
47491/**
47492 * Matcher for detecting tuples t where <>eAllAttributes reference EClass(source,target)
47493 */
47494private pattern mayInRelationeAllAttributes_reference_EClass(
47495 problem:LogicProblem, interpretation:PartialInterpretation,
47496 source: DefinedElement, target:DefinedElement)
47497{
47498 find interpretation(problem,interpretation);
47499 // The two endpoint of the link have to exist
47500 find mayExist(problem, interpretation, source);
47501 find mayExist(problem, interpretation, target);
47502 // Type consistency
47503 find mayInstanceOfEClass_class(problem,interpretation,source);
47504 find mayInstanceOfEAttribute_class(problem,interpretation,target);
47505} or {
47506 find mustInRelationeAllAttributes_reference_EClass(problem,interpretation,source,target);
47507}
47508/**
47509 * Matcher for detecting tuples t where []eAllReferences reference EClass(source,target)
47510 */
47511private pattern mustInRelationeAllReferences_reference_EClass(
47512 problem:LogicProblem, interpretation:PartialInterpretation,
47513 source: DefinedElement, target:DefinedElement)
47514{
47515 find interpretation(problem,interpretation);
47516 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
47517 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllReferences reference EClass");
47518 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
47519 BinaryElementRelationLink.param1(link,source);
47520 BinaryElementRelationLink.param2(link,target);
47521}
47522/**
47523 * Matcher for detecting tuples t where <>eAllReferences reference EClass(source,target)
47524 */
47525private pattern mayInRelationeAllReferences_reference_EClass(
47526 problem:LogicProblem, interpretation:PartialInterpretation,
47527 source: DefinedElement, target:DefinedElement)
47528{
47529 find interpretation(problem,interpretation);
47530 // The two endpoint of the link have to exist
47531 find mayExist(problem, interpretation, source);
47532 find mayExist(problem, interpretation, target);
47533 // Type consistency
47534 find mayInstanceOfEClass_class(problem,interpretation,source);
47535 find mayInstanceOfEReference_class(problem,interpretation,target);
47536} or {
47537 find mustInRelationeAllReferences_reference_EClass(problem,interpretation,source,target);
47538}
47539/**
47540 * Matcher for detecting tuples t where []eReferences reference EClass(source,target)
47541 */
47542private pattern mustInRelationeReferences_reference_EClass(
47543 problem:LogicProblem, interpretation:PartialInterpretation,
47544 source: DefinedElement, target:DefinedElement)
47545{
47546 find interpretation(problem,interpretation);
47547 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
47548 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eReferences reference EClass");
47549 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
47550 BinaryElementRelationLink.param1(link,source);
47551 BinaryElementRelationLink.param2(link,target);
47552}
47553/**
47554 * Matcher for detecting tuples t where <>eReferences reference EClass(source,target)
47555 */
47556private pattern mayInRelationeReferences_reference_EClass(
47557 problem:LogicProblem, interpretation:PartialInterpretation,
47558 source: DefinedElement, target:DefinedElement)
47559{
47560 find interpretation(problem,interpretation);
47561 // The two endpoint of the link have to exist
47562 find mayExist(problem, interpretation, source);
47563 find mayExist(problem, interpretation, target);
47564 // Type consistency
47565 find mayInstanceOfEClass_class(problem,interpretation,source);
47566 find mayInstanceOfEReference_class(problem,interpretation,target);
47567} or {
47568 find mustInRelationeReferences_reference_EClass(problem,interpretation,source,target);
47569}
47570/**
47571 * Matcher for detecting tuples t where []eAttributes reference EClass(source,target)
47572 */
47573private pattern mustInRelationeAttributes_reference_EClass(
47574 problem:LogicProblem, interpretation:PartialInterpretation,
47575 source: DefinedElement, target:DefinedElement)
47576{
47577 find interpretation(problem,interpretation);
47578 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
47579 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAttributes reference EClass");
47580 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
47581 BinaryElementRelationLink.param1(link,source);
47582 BinaryElementRelationLink.param2(link,target);
47583}
47584/**
47585 * Matcher for detecting tuples t where <>eAttributes reference EClass(source,target)
47586 */
47587private pattern mayInRelationeAttributes_reference_EClass(
47588 problem:LogicProblem, interpretation:PartialInterpretation,
47589 source: DefinedElement, target:DefinedElement)
47590{
47591 find interpretation(problem,interpretation);
47592 // The two endpoint of the link have to exist
47593 find mayExist(problem, interpretation, source);
47594 find mayExist(problem, interpretation, target);
47595 // Type consistency
47596 find mayInstanceOfEClass_class(problem,interpretation,source);
47597 find mayInstanceOfEAttribute_class(problem,interpretation,target);
47598} or {
47599 find mustInRelationeAttributes_reference_EClass(problem,interpretation,source,target);
47600}
47601/**
47602 * Matcher for detecting tuples t where []eAllContainments reference EClass(source,target)
47603 */
47604private pattern mustInRelationeAllContainments_reference_EClass(
47605 problem:LogicProblem, interpretation:PartialInterpretation,
47606 source: DefinedElement, target:DefinedElement)
47607{
47608 find interpretation(problem,interpretation);
47609 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
47610 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllContainments reference EClass");
47611 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
47612 BinaryElementRelationLink.param1(link,source);
47613 BinaryElementRelationLink.param2(link,target);
47614}
47615/**
47616 * Matcher for detecting tuples t where <>eAllContainments reference EClass(source,target)
47617 */
47618private pattern mayInRelationeAllContainments_reference_EClass(
47619 problem:LogicProblem, interpretation:PartialInterpretation,
47620 source: DefinedElement, target:DefinedElement)
47621{
47622 find interpretation(problem,interpretation);
47623 // The two endpoint of the link have to exist
47624 find mayExist(problem, interpretation, source);
47625 find mayExist(problem, interpretation, target);
47626 // Type consistency
47627 find mayInstanceOfEClass_class(problem,interpretation,source);
47628 find mayInstanceOfEReference_class(problem,interpretation,target);
47629} or {
47630 find mustInRelationeAllContainments_reference_EClass(problem,interpretation,source,target);
47631}
47632/**
47633 * Matcher for detecting tuples t where []eAllOperations reference EClass(source,target)
47634 */
47635private pattern mustInRelationeAllOperations_reference_EClass(
47636 problem:LogicProblem, interpretation:PartialInterpretation,
47637 source: DefinedElement, target:DefinedElement)
47638{
47639 find interpretation(problem,interpretation);
47640 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
47641 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllOperations reference EClass");
47642 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
47643 BinaryElementRelationLink.param1(link,source);
47644 BinaryElementRelationLink.param2(link,target);
47645}
47646/**
47647 * Matcher for detecting tuples t where <>eAllOperations reference EClass(source,target)
47648 */
47649private pattern mayInRelationeAllOperations_reference_EClass(
47650 problem:LogicProblem, interpretation:PartialInterpretation,
47651 source: DefinedElement, target:DefinedElement)
47652{
47653 find interpretation(problem,interpretation);
47654 // The two endpoint of the link have to exist
47655 find mayExist(problem, interpretation, source);
47656 find mayExist(problem, interpretation, target);
47657 // Type consistency
47658 find mayInstanceOfEClass_class(problem,interpretation,source);
47659 find mayInstanceOfEOperation_class(problem,interpretation,target);
47660} or {
47661 find mustInRelationeAllOperations_reference_EClass(problem,interpretation,source,target);
47662}
47663/**
47664 * Matcher for detecting tuples t where []eAllStructuralFeatures reference EClass(source,target)
47665 */
47666private pattern mustInRelationeAllStructuralFeatures_reference_EClass(
47667 problem:LogicProblem, interpretation:PartialInterpretation,
47668 source: DefinedElement, target:DefinedElement)
47669{
47670 find interpretation(problem,interpretation);
47671 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
47672 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllStructuralFeatures reference EClass");
47673 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
47674 BinaryElementRelationLink.param1(link,source);
47675 BinaryElementRelationLink.param2(link,target);
47676}
47677/**
47678 * Matcher for detecting tuples t where <>eAllStructuralFeatures reference EClass(source,target)
47679 */
47680private pattern mayInRelationeAllStructuralFeatures_reference_EClass(
47681 problem:LogicProblem, interpretation:PartialInterpretation,
47682 source: DefinedElement, target:DefinedElement)
47683{
47684 find interpretation(problem,interpretation);
47685 // The two endpoint of the link have to exist
47686 find mayExist(problem, interpretation, source);
47687 find mayExist(problem, interpretation, target);
47688 // Type consistency
47689 find mayInstanceOfEClass_class(problem,interpretation,source);
47690 find mayInstanceOfEStructuralFeature_class(problem,interpretation,target);
47691} or {
47692 find mustInRelationeAllStructuralFeatures_reference_EClass(problem,interpretation,source,target);
47693}
47694/**
47695 * Matcher for detecting tuples t where []eAllSuperTypes reference EClass(source,target)
47696 */
47697private pattern mustInRelationeAllSuperTypes_reference_EClass(
47698 problem:LogicProblem, interpretation:PartialInterpretation,
47699 source: DefinedElement, target:DefinedElement)
47700{
47701 find interpretation(problem,interpretation);
47702 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
47703 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllSuperTypes reference EClass");
47704 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
47705 BinaryElementRelationLink.param1(link,source);
47706 BinaryElementRelationLink.param2(link,target);
47707}
47708/**
47709 * Matcher for detecting tuples t where <>eAllSuperTypes reference EClass(source,target)
47710 */
47711private pattern mayInRelationeAllSuperTypes_reference_EClass(
47712 problem:LogicProblem, interpretation:PartialInterpretation,
47713 source: DefinedElement, target:DefinedElement)
47714{
47715 find interpretation(problem,interpretation);
47716 // The two endpoint of the link have to exist
47717 find mayExist(problem, interpretation, source);
47718 find mayExist(problem, interpretation, target);
47719 // Type consistency
47720 find mayInstanceOfEClass_class(problem,interpretation,source);
47721 find mayInstanceOfEClass_class(problem,interpretation,target);
47722} or {
47723 find mustInRelationeAllSuperTypes_reference_EClass(problem,interpretation,source,target);
47724}
47725/**
47726 * Matcher for detecting tuples t where []eIDAttribute reference EClass(source,target)
47727 */
47728private pattern mustInRelationeIDAttribute_reference_EClass(
47729 problem:LogicProblem, interpretation:PartialInterpretation,
47730 source: DefinedElement, target:DefinedElement)
47731{
47732 find interpretation(problem,interpretation);
47733 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
47734 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eIDAttribute reference EClass");
47735 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
47736 BinaryElementRelationLink.param1(link,source);
47737 BinaryElementRelationLink.param2(link,target);
47738}
47739/**
47740 * Matcher for detecting tuples t where <>eIDAttribute reference EClass(source,target)
47741 */
47742private pattern mayInRelationeIDAttribute_reference_EClass(
47743 problem:LogicProblem, interpretation:PartialInterpretation,
47744 source: DefinedElement, target:DefinedElement)
47745{
47746 find interpretation(problem,interpretation);
47747 // The two endpoint of the link have to exist
47748 find mayExist(problem, interpretation, source);
47749 find mayExist(problem, interpretation, target);
47750 // Type consistency
47751 find mayInstanceOfEClass_class(problem,interpretation,source);
47752 find mayInstanceOfEAttribute_class(problem,interpretation,target);
47753 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
47754 // the upper bound of the multiplicity should be considered.
47755 numberOfExistingReferences == count find mustInRelationeIDAttribute_reference_EClass(problem,interpretation,source,_);
47756 check(numberOfExistingReferences < 1);
47757} or {
47758 find mustInRelationeIDAttribute_reference_EClass(problem,interpretation,source,target);
47759}
47760/**
47761 * Matcher for detecting tuples t where []eStructuralFeatures reference EClass(source,target)
47762 */
47763private pattern mustInRelationeStructuralFeatures_reference_EClass(
47764 problem:LogicProblem, interpretation:PartialInterpretation,
47765 source: DefinedElement, target:DefinedElement)
47766{
47767 find interpretation(problem,interpretation);
47768 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
47769 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eStructuralFeatures reference EClass");
47770 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
47771 BinaryElementRelationLink.param1(link,source);
47772 BinaryElementRelationLink.param2(link,target);
47773}
47774/**
47775 * Matcher for detecting tuples t where <>eStructuralFeatures reference EClass(source,target)
47776 */
47777private pattern mayInRelationeStructuralFeatures_reference_EClass(
47778 problem:LogicProblem, interpretation:PartialInterpretation,
47779 source: DefinedElement, target:DefinedElement)
47780{
47781 find interpretation(problem,interpretation);
47782 // The two endpoint of the link have to exist
47783 find mayExist(problem, interpretation, source);
47784 find mayExist(problem, interpretation, target);
47785 // Type consistency
47786 find mayInstanceOfEClass_class(problem,interpretation,source);
47787 find mayInstanceOfEStructuralFeature_class(problem,interpretation,target);
47788 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
47789 // the upper bound of the opposite reference multiplicity should be considered.
47790 numberOfExistingOppositeReferences == count find mustInRelationeContainingClass_reference_EStructuralFeature(problem,interpretation,target,_);
47791 check(numberOfExistingOppositeReferences < 1);
47792 // The reference is containment, then a new reference cannot be create if:
47793 // 1. Multiple parents
47794 neg find mustContains4(problem,interpretation,_,target);
47795 // 2. Circle in the containment hierarchy
47796 neg find mustTransitiveContains(source,target);
47797} or {
47798 find mustInRelationeStructuralFeatures_reference_EClass(problem,interpretation,source,target);
47799}
47800/**
47801 * Matcher for detecting tuples t where []eGenericSuperTypes reference EClass(source,target)
47802 */
47803private pattern mustInRelationeGenericSuperTypes_reference_EClass(
47804 problem:LogicProblem, interpretation:PartialInterpretation,
47805 source: DefinedElement, target:DefinedElement)
47806{
47807 find interpretation(problem,interpretation);
47808 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
47809 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eGenericSuperTypes reference EClass");
47810 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
47811 BinaryElementRelationLink.param1(link,source);
47812 BinaryElementRelationLink.param2(link,target);
47813}
47814/**
47815 * Matcher for detecting tuples t where <>eGenericSuperTypes reference EClass(source,target)
47816 */
47817private pattern mayInRelationeGenericSuperTypes_reference_EClass(
47818 problem:LogicProblem, interpretation:PartialInterpretation,
47819 source: DefinedElement, target:DefinedElement)
47820{
47821 find interpretation(problem,interpretation);
47822 // The two endpoint of the link have to exist
47823 find mayExist(problem, interpretation, source);
47824 find mayExist(problem, interpretation, target);
47825 // Type consistency
47826 find mayInstanceOfEClass_class(problem,interpretation,source);
47827 find mayInstanceOfEGenericType_class(problem,interpretation,target);
47828 // The reference is containment, then a new reference cannot be create if:
47829 // 1. Multiple parents
47830 neg find mustContains4(problem,interpretation,_,target);
47831 // 2. Circle in the containment hierarchy
47832 neg find mustTransitiveContains(source,target);
47833} or {
47834 find mustInRelationeGenericSuperTypes_reference_EClass(problem,interpretation,source,target);
47835}
47836/**
47837 * Matcher for detecting tuples t where []eAllGenericSuperTypes reference EClass(source,target)
47838 */
47839private pattern mustInRelationeAllGenericSuperTypes_reference_EClass(
47840 problem:LogicProblem, interpretation:PartialInterpretation,
47841 source: DefinedElement, target:DefinedElement)
47842{
47843 find interpretation(problem,interpretation);
47844 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
47845 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllGenericSuperTypes reference EClass");
47846 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
47847 BinaryElementRelationLink.param1(link,source);
47848 BinaryElementRelationLink.param2(link,target);
47849}
47850/**
47851 * Matcher for detecting tuples t where <>eAllGenericSuperTypes reference EClass(source,target)
47852 */
47853private pattern mayInRelationeAllGenericSuperTypes_reference_EClass(
47854 problem:LogicProblem, interpretation:PartialInterpretation,
47855 source: DefinedElement, target:DefinedElement)
47856{
47857 find interpretation(problem,interpretation);
47858 // The two endpoint of the link have to exist
47859 find mayExist(problem, interpretation, source);
47860 find mayExist(problem, interpretation, target);
47861 // Type consistency
47862 find mayInstanceOfEClass_class(problem,interpretation,source);
47863 find mayInstanceOfEGenericType_class(problem,interpretation,target);
47864} or {
47865 find mustInRelationeAllGenericSuperTypes_reference_EClass(problem,interpretation,source,target);
47866}
47867/**
47868 * Matcher for detecting tuples t where []ePackage reference EClassifier(source,target)
47869 */
47870private pattern mustInRelationePackage_reference_EClassifier(
47871 problem:LogicProblem, interpretation:PartialInterpretation,
47872 source: DefinedElement, target:DefinedElement)
47873{
47874 find interpretation(problem,interpretation);
47875 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
47876 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"ePackage reference EClassifier");
47877 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
47878 BinaryElementRelationLink.param1(link,source);
47879 BinaryElementRelationLink.param2(link,target);
47880}
47881/**
47882 * Matcher for detecting tuples t where <>ePackage reference EClassifier(source,target)
47883 */
47884private pattern mayInRelationePackage_reference_EClassifier(
47885 problem:LogicProblem, interpretation:PartialInterpretation,
47886 source: DefinedElement, target:DefinedElement)
47887{
47888 find interpretation(problem,interpretation);
47889 // The two endpoint of the link have to exist
47890 find mayExist(problem, interpretation, source);
47891 find mayExist(problem, interpretation, target);
47892 // Type consistency
47893 find mayInstanceOfEClassifier_class(problem,interpretation,source);
47894 find mayInstanceOfEPackage_class(problem,interpretation,target);
47895 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
47896 // the upper bound of the multiplicity should be considered.
47897 numberOfExistingReferences == count find mustInRelationePackage_reference_EClassifier(problem,interpretation,source,_);
47898 check(numberOfExistingReferences < 1);
47899 // The eOpposite of the reference is containment, then a referene cannot be created if
47900 // 1. Multiple parents
47901 neg find mustContains4(problem,interpretation,source,_);
47902 // 2. Circle in the containment hierarchy
47903 neg find mustTransitiveContains(source,target);
47904} or {
47905 find mustInRelationePackage_reference_EClassifier(problem,interpretation,source,target);
47906}
47907/**
47908 * Matcher for detecting tuples t where []eTypeParameters reference EClassifier(source,target)
47909 */
47910private pattern mustInRelationeTypeParameters_reference_EClassifier(
47911 problem:LogicProblem, interpretation:PartialInterpretation,
47912 source: DefinedElement, target:DefinedElement)
47913{
47914 find interpretation(problem,interpretation);
47915 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
47916 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eTypeParameters reference EClassifier");
47917 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
47918 BinaryElementRelationLink.param1(link,source);
47919 BinaryElementRelationLink.param2(link,target);
47920}
47921/**
47922 * Matcher for detecting tuples t where <>eTypeParameters reference EClassifier(source,target)
47923 */
47924private pattern mayInRelationeTypeParameters_reference_EClassifier(
47925 problem:LogicProblem, interpretation:PartialInterpretation,
47926 source: DefinedElement, target:DefinedElement)
47927{
47928 find interpretation(problem,interpretation);
47929 // The two endpoint of the link have to exist
47930 find mayExist(problem, interpretation, source);
47931 find mayExist(problem, interpretation, target);
47932 // Type consistency
47933 find mayInstanceOfEClassifier_class(problem,interpretation,source);
47934 find mayInstanceOfETypeParameter_class(problem,interpretation,target);
47935 // The reference is containment, then a new reference cannot be create if:
47936 // 1. Multiple parents
47937 neg find mustContains4(problem,interpretation,_,target);
47938 // 2. Circle in the containment hierarchy
47939 neg find mustTransitiveContains(source,target);
47940} or {
47941 find mustInRelationeTypeParameters_reference_EClassifier(problem,interpretation,source,target);
47942}
47943/**
47944 * Matcher for detecting tuples t where []eLiterals reference EEnum(source,target)
47945 */
47946private pattern mustInRelationeLiterals_reference_EEnum(
47947 problem:LogicProblem, interpretation:PartialInterpretation,
47948 source: DefinedElement, target:DefinedElement)
47949{
47950 find interpretation(problem,interpretation);
47951 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
47952 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eLiterals reference EEnum");
47953 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
47954 BinaryElementRelationLink.param1(link,source);
47955 BinaryElementRelationLink.param2(link,target);
47956}
47957/**
47958 * Matcher for detecting tuples t where <>eLiterals reference EEnum(source,target)
47959 */
47960private pattern mayInRelationeLiterals_reference_EEnum(
47961 problem:LogicProblem, interpretation:PartialInterpretation,
47962 source: DefinedElement, target:DefinedElement)
47963{
47964 find interpretation(problem,interpretation);
47965 // The two endpoint of the link have to exist
47966 find mayExist(problem, interpretation, source);
47967 find mayExist(problem, interpretation, target);
47968 // Type consistency
47969 find mayInstanceOfEEnum_class(problem,interpretation,source);
47970 find mayInstanceOfEEnumLiteral_class(problem,interpretation,target);
47971 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
47972 // the upper bound of the opposite reference multiplicity should be considered.
47973 numberOfExistingOppositeReferences == count find mustInRelationeEnum_reference_EEnumLiteral(problem,interpretation,target,_);
47974 check(numberOfExistingOppositeReferences < 1);
47975 // The reference is containment, then a new reference cannot be create if:
47976 // 1. Multiple parents
47977 neg find mustContains4(problem,interpretation,_,target);
47978 // 2. Circle in the containment hierarchy
47979 neg find mustTransitiveContains(source,target);
47980} or {
47981 find mustInRelationeLiterals_reference_EEnum(problem,interpretation,source,target);
47982}
47983/**
47984 * Matcher for detecting tuples t where []eEnum reference EEnumLiteral(source,target)
47985 */
47986private pattern mustInRelationeEnum_reference_EEnumLiteral(
47987 problem:LogicProblem, interpretation:PartialInterpretation,
47988 source: DefinedElement, target:DefinedElement)
47989{
47990 find interpretation(problem,interpretation);
47991 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
47992 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eEnum reference EEnumLiteral");
47993 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
47994 BinaryElementRelationLink.param1(link,source);
47995 BinaryElementRelationLink.param2(link,target);
47996}
47997/**
47998 * Matcher for detecting tuples t where <>eEnum reference EEnumLiteral(source,target)
47999 */
48000private pattern mayInRelationeEnum_reference_EEnumLiteral(
48001 problem:LogicProblem, interpretation:PartialInterpretation,
48002 source: DefinedElement, target:DefinedElement)
48003{
48004 find interpretation(problem,interpretation);
48005 // The two endpoint of the link have to exist
48006 find mayExist(problem, interpretation, source);
48007 find mayExist(problem, interpretation, target);
48008 // Type consistency
48009 find mayInstanceOfEEnumLiteral_class(problem,interpretation,source);
48010 find mayInstanceOfEEnum_class(problem,interpretation,target);
48011 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
48012 // the upper bound of the multiplicity should be considered.
48013 numberOfExistingReferences == count find mustInRelationeEnum_reference_EEnumLiteral(problem,interpretation,source,_);
48014 check(numberOfExistingReferences < 1);
48015 // The eOpposite of the reference is containment, then a referene cannot be created if
48016 // 1. Multiple parents
48017 neg find mustContains4(problem,interpretation,source,_);
48018 // 2. Circle in the containment hierarchy
48019 neg find mustTransitiveContains(source,target);
48020} or {
48021 find mustInRelationeEnum_reference_EEnumLiteral(problem,interpretation,source,target);
48022}
48023/**
48024 * Matcher for detecting tuples t where []eAnnotations reference EModelElement(source,target)
48025 */
48026private pattern mustInRelationeAnnotations_reference_EModelElement(
48027 problem:LogicProblem, interpretation:PartialInterpretation,
48028 source: DefinedElement, target:DefinedElement)
48029{
48030 find interpretation(problem,interpretation);
48031 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
48032 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAnnotations reference EModelElement");
48033 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
48034 BinaryElementRelationLink.param1(link,source);
48035 BinaryElementRelationLink.param2(link,target);
48036}
48037/**
48038 * Matcher for detecting tuples t where <>eAnnotations reference EModelElement(source,target)
48039 */
48040private pattern mayInRelationeAnnotations_reference_EModelElement(
48041 problem:LogicProblem, interpretation:PartialInterpretation,
48042 source: DefinedElement, target:DefinedElement)
48043{
48044 find interpretation(problem,interpretation);
48045 // The two endpoint of the link have to exist
48046 find mayExist(problem, interpretation, source);
48047 find mayExist(problem, interpretation, target);
48048 // Type consistency
48049 find mayInstanceOfEModelElement_class(problem,interpretation,source);
48050 find mayInstanceOfEAnnotation_class(problem,interpretation,target);
48051 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
48052 // the upper bound of the opposite reference multiplicity should be considered.
48053 numberOfExistingOppositeReferences == count find mustInRelationeModelElement_reference_EAnnotation(problem,interpretation,target,_);
48054 check(numberOfExistingOppositeReferences < 1);
48055 // The reference is containment, then a new reference cannot be create if:
48056 // 1. Multiple parents
48057 neg find mustContains4(problem,interpretation,_,target);
48058 // 2. Circle in the containment hierarchy
48059 neg find mustTransitiveContains(source,target);
48060} or {
48061 find mustInRelationeAnnotations_reference_EModelElement(problem,interpretation,source,target);
48062}
48063/**
48064 * Matcher for detecting tuples t where []eContainingClass reference EOperation(source,target)
48065 */
48066private pattern mustInRelationeContainingClass_reference_EOperation(
48067 problem:LogicProblem, interpretation:PartialInterpretation,
48068 source: DefinedElement, target:DefinedElement)
48069{
48070 find interpretation(problem,interpretation);
48071 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
48072 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eContainingClass reference EOperation");
48073 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
48074 BinaryElementRelationLink.param1(link,source);
48075 BinaryElementRelationLink.param2(link,target);
48076}
48077/**
48078 * Matcher for detecting tuples t where <>eContainingClass reference EOperation(source,target)
48079 */
48080private pattern mayInRelationeContainingClass_reference_EOperation(
48081 problem:LogicProblem, interpretation:PartialInterpretation,
48082 source: DefinedElement, target:DefinedElement)
48083{
48084 find interpretation(problem,interpretation);
48085 // The two endpoint of the link have to exist
48086 find mayExist(problem, interpretation, source);
48087 find mayExist(problem, interpretation, target);
48088 // Type consistency
48089 find mayInstanceOfEOperation_class(problem,interpretation,source);
48090 find mayInstanceOfEClass_class(problem,interpretation,target);
48091 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
48092 // the upper bound of the multiplicity should be considered.
48093 numberOfExistingReferences == count find mustInRelationeContainingClass_reference_EOperation(problem,interpretation,source,_);
48094 check(numberOfExistingReferences < 1);
48095 // The eOpposite of the reference is containment, then a referene cannot be created if
48096 // 1. Multiple parents
48097 neg find mustContains4(problem,interpretation,source,_);
48098 // 2. Circle in the containment hierarchy
48099 neg find mustTransitiveContains(source,target);
48100} or {
48101 find mustInRelationeContainingClass_reference_EOperation(problem,interpretation,source,target);
48102}
48103/**
48104 * Matcher for detecting tuples t where []eTypeParameters reference EOperation(source,target)
48105 */
48106private pattern mustInRelationeTypeParameters_reference_EOperation(
48107 problem:LogicProblem, interpretation:PartialInterpretation,
48108 source: DefinedElement, target:DefinedElement)
48109{
48110 find interpretation(problem,interpretation);
48111 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
48112 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eTypeParameters reference EOperation");
48113 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
48114 BinaryElementRelationLink.param1(link,source);
48115 BinaryElementRelationLink.param2(link,target);
48116}
48117/**
48118 * Matcher for detecting tuples t where <>eTypeParameters reference EOperation(source,target)
48119 */
48120private pattern mayInRelationeTypeParameters_reference_EOperation(
48121 problem:LogicProblem, interpretation:PartialInterpretation,
48122 source: DefinedElement, target:DefinedElement)
48123{
48124 find interpretation(problem,interpretation);
48125 // The two endpoint of the link have to exist
48126 find mayExist(problem, interpretation, source);
48127 find mayExist(problem, interpretation, target);
48128 // Type consistency
48129 find mayInstanceOfEOperation_class(problem,interpretation,source);
48130 find mayInstanceOfETypeParameter_class(problem,interpretation,target);
48131 // The reference is containment, then a new reference cannot be create if:
48132 // 1. Multiple parents
48133 neg find mustContains4(problem,interpretation,_,target);
48134 // 2. Circle in the containment hierarchy
48135 neg find mustTransitiveContains(source,target);
48136} or {
48137 find mustInRelationeTypeParameters_reference_EOperation(problem,interpretation,source,target);
48138}
48139/**
48140 * Matcher for detecting tuples t where []eParameters reference EOperation(source,target)
48141 */
48142private pattern mustInRelationeParameters_reference_EOperation(
48143 problem:LogicProblem, interpretation:PartialInterpretation,
48144 source: DefinedElement, target:DefinedElement)
48145{
48146 find interpretation(problem,interpretation);
48147 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
48148 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eParameters reference EOperation");
48149 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
48150 BinaryElementRelationLink.param1(link,source);
48151 BinaryElementRelationLink.param2(link,target);
48152}
48153/**
48154 * Matcher for detecting tuples t where <>eParameters reference EOperation(source,target)
48155 */
48156private pattern mayInRelationeParameters_reference_EOperation(
48157 problem:LogicProblem, interpretation:PartialInterpretation,
48158 source: DefinedElement, target:DefinedElement)
48159{
48160 find interpretation(problem,interpretation);
48161 // The two endpoint of the link have to exist
48162 find mayExist(problem, interpretation, source);
48163 find mayExist(problem, interpretation, target);
48164 // Type consistency
48165 find mayInstanceOfEOperation_class(problem,interpretation,source);
48166 find mayInstanceOfEParameter_class(problem,interpretation,target);
48167 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
48168 // the upper bound of the opposite reference multiplicity should be considered.
48169 numberOfExistingOppositeReferences == count find mustInRelationeOperation_reference_EParameter(problem,interpretation,target,_);
48170 check(numberOfExistingOppositeReferences < 1);
48171 // The reference is containment, then a new reference cannot be create if:
48172 // 1. Multiple parents
48173 neg find mustContains4(problem,interpretation,_,target);
48174 // 2. Circle in the containment hierarchy
48175 neg find mustTransitiveContains(source,target);
48176} or {
48177 find mustInRelationeParameters_reference_EOperation(problem,interpretation,source,target);
48178}
48179/**
48180 * Matcher for detecting tuples t where []eExceptions reference EOperation(source,target)
48181 */
48182private pattern mustInRelationeExceptions_reference_EOperation(
48183 problem:LogicProblem, interpretation:PartialInterpretation,
48184 source: DefinedElement, target:DefinedElement)
48185{
48186 find interpretation(problem,interpretation);
48187 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
48188 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eExceptions reference EOperation");
48189 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
48190 BinaryElementRelationLink.param1(link,source);
48191 BinaryElementRelationLink.param2(link,target);
48192}
48193/**
48194 * Matcher for detecting tuples t where <>eExceptions reference EOperation(source,target)
48195 */
48196private pattern mayInRelationeExceptions_reference_EOperation(
48197 problem:LogicProblem, interpretation:PartialInterpretation,
48198 source: DefinedElement, target:DefinedElement)
48199{
48200 find interpretation(problem,interpretation);
48201 // The two endpoint of the link have to exist
48202 find mayExist(problem, interpretation, source);
48203 find mayExist(problem, interpretation, target);
48204 // Type consistency
48205 find mayInstanceOfEOperation_class(problem,interpretation,source);
48206 find mayInstanceOfEClassifier_class(problem,interpretation,target);
48207} or {
48208 find mustInRelationeExceptions_reference_EOperation(problem,interpretation,source,target);
48209}
48210/**
48211 * Matcher for detecting tuples t where []eGenericExceptions reference EOperation(source,target)
48212 */
48213private pattern mustInRelationeGenericExceptions_reference_EOperation(
48214 problem:LogicProblem, interpretation:PartialInterpretation,
48215 source: DefinedElement, target:DefinedElement)
48216{
48217 find interpretation(problem,interpretation);
48218 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
48219 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eGenericExceptions reference EOperation");
48220 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
48221 BinaryElementRelationLink.param1(link,source);
48222 BinaryElementRelationLink.param2(link,target);
48223}
48224/**
48225 * Matcher for detecting tuples t where <>eGenericExceptions reference EOperation(source,target)
48226 */
48227private pattern mayInRelationeGenericExceptions_reference_EOperation(
48228 problem:LogicProblem, interpretation:PartialInterpretation,
48229 source: DefinedElement, target:DefinedElement)
48230{
48231 find interpretation(problem,interpretation);
48232 // The two endpoint of the link have to exist
48233 find mayExist(problem, interpretation, source);
48234 find mayExist(problem, interpretation, target);
48235 // Type consistency
48236 find mayInstanceOfEOperation_class(problem,interpretation,source);
48237 find mayInstanceOfEGenericType_class(problem,interpretation,target);
48238 // The reference is containment, then a new reference cannot be create if:
48239 // 1. Multiple parents
48240 neg find mustContains4(problem,interpretation,_,target);
48241 // 2. Circle in the containment hierarchy
48242 neg find mustTransitiveContains(source,target);
48243} or {
48244 find mustInRelationeGenericExceptions_reference_EOperation(problem,interpretation,source,target);
48245}
48246/**
48247 * Matcher for detecting tuples t where []eClassifiers reference EPackage(source,target)
48248 */
48249private pattern mustInRelationeClassifiers_reference_EPackage(
48250 problem:LogicProblem, interpretation:PartialInterpretation,
48251 source: DefinedElement, target:DefinedElement)
48252{
48253 find interpretation(problem,interpretation);
48254 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
48255 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eClassifiers reference EPackage");
48256 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
48257 BinaryElementRelationLink.param1(link,source);
48258 BinaryElementRelationLink.param2(link,target);
48259}
48260/**
48261 * Matcher for detecting tuples t where <>eClassifiers reference EPackage(source,target)
48262 */
48263private pattern mayInRelationeClassifiers_reference_EPackage(
48264 problem:LogicProblem, interpretation:PartialInterpretation,
48265 source: DefinedElement, target:DefinedElement)
48266{
48267 find interpretation(problem,interpretation);
48268 // The two endpoint of the link have to exist
48269 find mayExist(problem, interpretation, source);
48270 find mayExist(problem, interpretation, target);
48271 // Type consistency
48272 find mayInstanceOfEPackage_class(problem,interpretation,source);
48273 find mayInstanceOfEClassifier_class(problem,interpretation,target);
48274 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
48275 // the upper bound of the opposite reference multiplicity should be considered.
48276 numberOfExistingOppositeReferences == count find mustInRelationePackage_reference_EClassifier(problem,interpretation,target,_);
48277 check(numberOfExistingOppositeReferences < 1);
48278 // The reference is containment, then a new reference cannot be create if:
48279 // 1. Multiple parents
48280 neg find mustContains4(problem,interpretation,_,target);
48281 // 2. Circle in the containment hierarchy
48282 neg find mustTransitiveContains(source,target);
48283} or {
48284 find mustInRelationeClassifiers_reference_EPackage(problem,interpretation,source,target);
48285}
48286/**
48287 * Matcher for detecting tuples t where []eSubpackages reference EPackage(source,target)
48288 */
48289private pattern mustInRelationeSubpackages_reference_EPackage(
48290 problem:LogicProblem, interpretation:PartialInterpretation,
48291 source: DefinedElement, target:DefinedElement)
48292{
48293 find interpretation(problem,interpretation);
48294 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
48295 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eSubpackages reference EPackage");
48296 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
48297 BinaryElementRelationLink.param1(link,source);
48298 BinaryElementRelationLink.param2(link,target);
48299}
48300/**
48301 * Matcher for detecting tuples t where <>eSubpackages reference EPackage(source,target)
48302 */
48303private pattern mayInRelationeSubpackages_reference_EPackage(
48304 problem:LogicProblem, interpretation:PartialInterpretation,
48305 source: DefinedElement, target:DefinedElement)
48306{
48307 find interpretation(problem,interpretation);
48308 // The two endpoint of the link have to exist
48309 find mayExist(problem, interpretation, source);
48310 find mayExist(problem, interpretation, target);
48311 // Type consistency
48312 find mayInstanceOfEPackage_class(problem,interpretation,source);
48313 find mayInstanceOfEPackage_class(problem,interpretation,target);
48314 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
48315 // the upper bound of the opposite reference multiplicity should be considered.
48316 numberOfExistingOppositeReferences == count find mustInRelationeSuperPackage_reference_EPackage(problem,interpretation,target,_);
48317 check(numberOfExistingOppositeReferences < 1);
48318 // The reference is containment, then a new reference cannot be create if:
48319 // 1. Multiple parents
48320 neg find mustContains4(problem,interpretation,_,target);
48321 // 2. Circle in the containment hierarchy
48322 neg find mustTransitiveContains(source,target);
48323} or {
48324 find mustInRelationeSubpackages_reference_EPackage(problem,interpretation,source,target);
48325}
48326/**
48327 * Matcher for detecting tuples t where []eSuperPackage reference EPackage(source,target)
48328 */
48329private pattern mustInRelationeSuperPackage_reference_EPackage(
48330 problem:LogicProblem, interpretation:PartialInterpretation,
48331 source: DefinedElement, target:DefinedElement)
48332{
48333 find interpretation(problem,interpretation);
48334 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
48335 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eSuperPackage reference EPackage");
48336 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
48337 BinaryElementRelationLink.param1(link,source);
48338 BinaryElementRelationLink.param2(link,target);
48339}
48340/**
48341 * Matcher for detecting tuples t where <>eSuperPackage reference EPackage(source,target)
48342 */
48343private pattern mayInRelationeSuperPackage_reference_EPackage(
48344 problem:LogicProblem, interpretation:PartialInterpretation,
48345 source: DefinedElement, target:DefinedElement)
48346{
48347 find interpretation(problem,interpretation);
48348 // The two endpoint of the link have to exist
48349 find mayExist(problem, interpretation, source);
48350 find mayExist(problem, interpretation, target);
48351 // Type consistency
48352 find mayInstanceOfEPackage_class(problem,interpretation,source);
48353 find mayInstanceOfEPackage_class(problem,interpretation,target);
48354 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
48355 // the upper bound of the multiplicity should be considered.
48356 numberOfExistingReferences == count find mustInRelationeSuperPackage_reference_EPackage(problem,interpretation,source,_);
48357 check(numberOfExistingReferences < 1);
48358 // The eOpposite of the reference is containment, then a referene cannot be created if
48359 // 1. Multiple parents
48360 neg find mustContains4(problem,interpretation,source,_);
48361 // 2. Circle in the containment hierarchy
48362 neg find mustTransitiveContains(source,target);
48363} or {
48364 find mustInRelationeSuperPackage_reference_EPackage(problem,interpretation,source,target);
48365}
48366/**
48367 * Matcher for detecting tuples t where []eOperation reference EParameter(source,target)
48368 */
48369private pattern mustInRelationeOperation_reference_EParameter(
48370 problem:LogicProblem, interpretation:PartialInterpretation,
48371 source: DefinedElement, target:DefinedElement)
48372{
48373 find interpretation(problem,interpretation);
48374 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
48375 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eOperation reference EParameter");
48376 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
48377 BinaryElementRelationLink.param1(link,source);
48378 BinaryElementRelationLink.param2(link,target);
48379}
48380/**
48381 * Matcher for detecting tuples t where <>eOperation reference EParameter(source,target)
48382 */
48383private pattern mayInRelationeOperation_reference_EParameter(
48384 problem:LogicProblem, interpretation:PartialInterpretation,
48385 source: DefinedElement, target:DefinedElement)
48386{
48387 find interpretation(problem,interpretation);
48388 // The two endpoint of the link have to exist
48389 find mayExist(problem, interpretation, source);
48390 find mayExist(problem, interpretation, target);
48391 // Type consistency
48392 find mayInstanceOfEParameter_class(problem,interpretation,source);
48393 find mayInstanceOfEOperation_class(problem,interpretation,target);
48394 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
48395 // the upper bound of the multiplicity should be considered.
48396 numberOfExistingReferences == count find mustInRelationeOperation_reference_EParameter(problem,interpretation,source,_);
48397 check(numberOfExistingReferences < 1);
48398 // The eOpposite of the reference is containment, then a referene cannot be created if
48399 // 1. Multiple parents
48400 neg find mustContains4(problem,interpretation,source,_);
48401 // 2. Circle in the containment hierarchy
48402 neg find mustTransitiveContains(source,target);
48403} or {
48404 find mustInRelationeOperation_reference_EParameter(problem,interpretation,source,target);
48405}
48406/**
48407 * Matcher for detecting tuples t where []eOpposite reference EReference(source,target)
48408 */
48409private pattern mustInRelationeOpposite_reference_EReference(
48410 problem:LogicProblem, interpretation:PartialInterpretation,
48411 source: DefinedElement, target:DefinedElement)
48412{
48413 find interpretation(problem,interpretation);
48414 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
48415 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eOpposite reference EReference");
48416 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
48417 BinaryElementRelationLink.param1(link,source);
48418 BinaryElementRelationLink.param2(link,target);
48419}
48420/**
48421 * Matcher for detecting tuples t where <>eOpposite reference EReference(source,target)
48422 */
48423private pattern mayInRelationeOpposite_reference_EReference(
48424 problem:LogicProblem, interpretation:PartialInterpretation,
48425 source: DefinedElement, target:DefinedElement)
48426{
48427 find interpretation(problem,interpretation);
48428 // The two endpoint of the link have to exist
48429 find mayExist(problem, interpretation, source);
48430 find mayExist(problem, interpretation, target);
48431 // Type consistency
48432 find mayInstanceOfEReference_class(problem,interpretation,source);
48433 find mayInstanceOfEReference_class(problem,interpretation,target);
48434 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
48435 // the upper bound of the multiplicity should be considered.
48436 numberOfExistingReferences == count find mustInRelationeOpposite_reference_EReference(problem,interpretation,source,_);
48437 check(numberOfExistingReferences < 1);
48438} or {
48439 find mustInRelationeOpposite_reference_EReference(problem,interpretation,source,target);
48440}
48441/**
48442 * Matcher for detecting tuples t where []eReferenceType reference EReference(source,target)
48443 */
48444private pattern mustInRelationeReferenceType_reference_EReference(
48445 problem:LogicProblem, interpretation:PartialInterpretation,
48446 source: DefinedElement, target:DefinedElement)
48447{
48448 find interpretation(problem,interpretation);
48449 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
48450 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eReferenceType reference EReference");
48451 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
48452 BinaryElementRelationLink.param1(link,source);
48453 BinaryElementRelationLink.param2(link,target);
48454}
48455/**
48456 * Matcher for detecting tuples t where <>eReferenceType reference EReference(source,target)
48457 */
48458private pattern mayInRelationeReferenceType_reference_EReference(
48459 problem:LogicProblem, interpretation:PartialInterpretation,
48460 source: DefinedElement, target:DefinedElement)
48461{
48462 find interpretation(problem,interpretation);
48463 // The two endpoint of the link have to exist
48464 find mayExist(problem, interpretation, source);
48465 find mayExist(problem, interpretation, target);
48466 // Type consistency
48467 find mayInstanceOfEReference_class(problem,interpretation,source);
48468 find mayInstanceOfEClass_class(problem,interpretation,target);
48469 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
48470 // the upper bound of the multiplicity should be considered.
48471 numberOfExistingReferences == count find mustInRelationeReferenceType_reference_EReference(problem,interpretation,source,_);
48472 check(numberOfExistingReferences < 1);
48473} or {
48474 find mustInRelationeReferenceType_reference_EReference(problem,interpretation,source,target);
48475}
48476/**
48477 * Matcher for detecting tuples t where []eKeys reference EReference(source,target)
48478 */
48479private pattern mustInRelationeKeys_reference_EReference(
48480 problem:LogicProblem, interpretation:PartialInterpretation,
48481 source: DefinedElement, target:DefinedElement)
48482{
48483 find interpretation(problem,interpretation);
48484 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
48485 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eKeys reference EReference");
48486 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
48487 BinaryElementRelationLink.param1(link,source);
48488 BinaryElementRelationLink.param2(link,target);
48489}
48490/**
48491 * Matcher for detecting tuples t where <>eKeys reference EReference(source,target)
48492 */
48493private pattern mayInRelationeKeys_reference_EReference(
48494 problem:LogicProblem, interpretation:PartialInterpretation,
48495 source: DefinedElement, target:DefinedElement)
48496{
48497 find interpretation(problem,interpretation);
48498 // The two endpoint of the link have to exist
48499 find mayExist(problem, interpretation, source);
48500 find mayExist(problem, interpretation, target);
48501 // Type consistency
48502 find mayInstanceOfEReference_class(problem,interpretation,source);
48503 find mayInstanceOfEAttribute_class(problem,interpretation,target);
48504} or {
48505 find mustInRelationeKeys_reference_EReference(problem,interpretation,source,target);
48506}
48507/**
48508 * Matcher for detecting tuples t where []eContainingClass reference EStructuralFeature(source,target)
48509 */
48510private pattern mustInRelationeContainingClass_reference_EStructuralFeature(
48511 problem:LogicProblem, interpretation:PartialInterpretation,
48512 source: DefinedElement, target:DefinedElement)
48513{
48514 find interpretation(problem,interpretation);
48515 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
48516 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eContainingClass reference EStructuralFeature");
48517 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
48518 BinaryElementRelationLink.param1(link,source);
48519 BinaryElementRelationLink.param2(link,target);
48520}
48521/**
48522 * Matcher for detecting tuples t where <>eContainingClass reference EStructuralFeature(source,target)
48523 */
48524private pattern mayInRelationeContainingClass_reference_EStructuralFeature(
48525 problem:LogicProblem, interpretation:PartialInterpretation,
48526 source: DefinedElement, target:DefinedElement)
48527{
48528 find interpretation(problem,interpretation);
48529 // The two endpoint of the link have to exist
48530 find mayExist(problem, interpretation, source);
48531 find mayExist(problem, interpretation, target);
48532 // Type consistency
48533 find mayInstanceOfEStructuralFeature_class(problem,interpretation,source);
48534 find mayInstanceOfEClass_class(problem,interpretation,target);
48535 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
48536 // the upper bound of the multiplicity should be considered.
48537 numberOfExistingReferences == count find mustInRelationeContainingClass_reference_EStructuralFeature(problem,interpretation,source,_);
48538 check(numberOfExistingReferences < 1);
48539 // The eOpposite of the reference is containment, then a referene cannot be created if
48540 // 1. Multiple parents
48541 neg find mustContains4(problem,interpretation,source,_);
48542 // 2. Circle in the containment hierarchy
48543 neg find mustTransitiveContains(source,target);
48544} or {
48545 find mustInRelationeContainingClass_reference_EStructuralFeature(problem,interpretation,source,target);
48546}
48547/**
48548 * Matcher for detecting tuples t where []eType reference ETypedElement(source,target)
48549 */
48550private pattern mustInRelationeType_reference_ETypedElement(
48551 problem:LogicProblem, interpretation:PartialInterpretation,
48552 source: DefinedElement, target:DefinedElement)
48553{
48554 find interpretation(problem,interpretation);
48555 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
48556 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eType reference ETypedElement");
48557 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
48558 BinaryElementRelationLink.param1(link,source);
48559 BinaryElementRelationLink.param2(link,target);
48560}
48561/**
48562 * Matcher for detecting tuples t where <>eType reference ETypedElement(source,target)
48563 */
48564private pattern mayInRelationeType_reference_ETypedElement(
48565 problem:LogicProblem, interpretation:PartialInterpretation,
48566 source: DefinedElement, target:DefinedElement)
48567{
48568 find interpretation(problem,interpretation);
48569 // The two endpoint of the link have to exist
48570 find mayExist(problem, interpretation, source);
48571 find mayExist(problem, interpretation, target);
48572 // Type consistency
48573 find mayInstanceOfETypedElement_class(problem,interpretation,source);
48574 find mayInstanceOfEClassifier_class(problem,interpretation,target);
48575 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
48576 // the upper bound of the multiplicity should be considered.
48577 numberOfExistingReferences == count find mustInRelationeType_reference_ETypedElement(problem,interpretation,source,_);
48578 check(numberOfExistingReferences < 1);
48579} or {
48580 find mustInRelationeType_reference_ETypedElement(problem,interpretation,source,target);
48581}
48582/**
48583 * Matcher for detecting tuples t where []eGenericType reference ETypedElement(source,target)
48584 */
48585private pattern mustInRelationeGenericType_reference_ETypedElement(
48586 problem:LogicProblem, interpretation:PartialInterpretation,
48587 source: DefinedElement, target:DefinedElement)
48588{
48589 find interpretation(problem,interpretation);
48590 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
48591 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eGenericType reference ETypedElement");
48592 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
48593 BinaryElementRelationLink.param1(link,source);
48594 BinaryElementRelationLink.param2(link,target);
48595}
48596/**
48597 * Matcher for detecting tuples t where <>eGenericType reference ETypedElement(source,target)
48598 */
48599private pattern mayInRelationeGenericType_reference_ETypedElement(
48600 problem:LogicProblem, interpretation:PartialInterpretation,
48601 source: DefinedElement, target:DefinedElement)
48602{
48603 find interpretation(problem,interpretation);
48604 // The two endpoint of the link have to exist
48605 find mayExist(problem, interpretation, source);
48606 find mayExist(problem, interpretation, target);
48607 // Type consistency
48608 find mayInstanceOfETypedElement_class(problem,interpretation,source);
48609 find mayInstanceOfEGenericType_class(problem,interpretation,target);
48610 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
48611 // the upper bound of the multiplicity should be considered.
48612 numberOfExistingReferences == count find mustInRelationeGenericType_reference_ETypedElement(problem,interpretation,source,_);
48613 check(numberOfExistingReferences < 1);
48614 // The reference is containment, then a new reference cannot be create if:
48615 // 1. Multiple parents
48616 neg find mustContains4(problem,interpretation,_,target);
48617 // 2. Circle in the containment hierarchy
48618 neg find mustTransitiveContains(source,target);
48619} or {
48620 find mustInRelationeGenericType_reference_ETypedElement(problem,interpretation,source,target);
48621}
48622/**
48623 * Matcher for detecting tuples t where []eUpperBound reference EGenericType(source,target)
48624 */
48625private pattern mustInRelationeUpperBound_reference_EGenericType(
48626 problem:LogicProblem, interpretation:PartialInterpretation,
48627 source: DefinedElement, target:DefinedElement)
48628{
48629 find interpretation(problem,interpretation);
48630 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
48631 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eUpperBound reference EGenericType");
48632 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
48633 BinaryElementRelationLink.param1(link,source);
48634 BinaryElementRelationLink.param2(link,target);
48635}
48636/**
48637 * Matcher for detecting tuples t where <>eUpperBound reference EGenericType(source,target)
48638 */
48639private pattern mayInRelationeUpperBound_reference_EGenericType(
48640 problem:LogicProblem, interpretation:PartialInterpretation,
48641 source: DefinedElement, target:DefinedElement)
48642{
48643 find interpretation(problem,interpretation);
48644 // The two endpoint of the link have to exist
48645 find mayExist(problem, interpretation, source);
48646 find mayExist(problem, interpretation, target);
48647 // Type consistency
48648 find mayInstanceOfEGenericType_class(problem,interpretation,source);
48649 find mayInstanceOfEGenericType_class(problem,interpretation,target);
48650 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
48651 // the upper bound of the multiplicity should be considered.
48652 numberOfExistingReferences == count find mustInRelationeUpperBound_reference_EGenericType(problem,interpretation,source,_);
48653 check(numberOfExistingReferences < 1);
48654 // The reference is containment, then a new reference cannot be create if:
48655 // 1. Multiple parents
48656 neg find mustContains4(problem,interpretation,_,target);
48657 // 2. Circle in the containment hierarchy
48658 neg find mustTransitiveContains(source,target);
48659} or {
48660 find mustInRelationeUpperBound_reference_EGenericType(problem,interpretation,source,target);
48661}
48662/**
48663 * Matcher for detecting tuples t where []eTypeArguments reference EGenericType(source,target)
48664 */
48665private pattern mustInRelationeTypeArguments_reference_EGenericType(
48666 problem:LogicProblem, interpretation:PartialInterpretation,
48667 source: DefinedElement, target:DefinedElement)
48668{
48669 find interpretation(problem,interpretation);
48670 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
48671 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eTypeArguments reference EGenericType");
48672 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
48673 BinaryElementRelationLink.param1(link,source);
48674 BinaryElementRelationLink.param2(link,target);
48675}
48676/**
48677 * Matcher for detecting tuples t where <>eTypeArguments reference EGenericType(source,target)
48678 */
48679private pattern mayInRelationeTypeArguments_reference_EGenericType(
48680 problem:LogicProblem, interpretation:PartialInterpretation,
48681 source: DefinedElement, target:DefinedElement)
48682{
48683 find interpretation(problem,interpretation);
48684 // The two endpoint of the link have to exist
48685 find mayExist(problem, interpretation, source);
48686 find mayExist(problem, interpretation, target);
48687 // Type consistency
48688 find mayInstanceOfEGenericType_class(problem,interpretation,source);
48689 find mayInstanceOfEGenericType_class(problem,interpretation,target);
48690 // The reference is containment, then a new reference cannot be create if:
48691 // 1. Multiple parents
48692 neg find mustContains4(problem,interpretation,_,target);
48693 // 2. Circle in the containment hierarchy
48694 neg find mustTransitiveContains(source,target);
48695} or {
48696 find mustInRelationeTypeArguments_reference_EGenericType(problem,interpretation,source,target);
48697}
48698/**
48699 * Matcher for detecting tuples t where []eRawType reference EGenericType(source,target)
48700 */
48701private pattern mustInRelationeRawType_reference_EGenericType(
48702 problem:LogicProblem, interpretation:PartialInterpretation,
48703 source: DefinedElement, target:DefinedElement)
48704{
48705 find interpretation(problem,interpretation);
48706 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
48707 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eRawType reference EGenericType");
48708 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
48709 BinaryElementRelationLink.param1(link,source);
48710 BinaryElementRelationLink.param2(link,target);
48711}
48712/**
48713 * Matcher for detecting tuples t where <>eRawType reference EGenericType(source,target)
48714 */
48715private pattern mayInRelationeRawType_reference_EGenericType(
48716 problem:LogicProblem, interpretation:PartialInterpretation,
48717 source: DefinedElement, target:DefinedElement)
48718{
48719 find interpretation(problem,interpretation);
48720 // The two endpoint of the link have to exist
48721 find mayExist(problem, interpretation, source);
48722 find mayExist(problem, interpretation, target);
48723 // Type consistency
48724 find mayInstanceOfEGenericType_class(problem,interpretation,source);
48725 find mayInstanceOfEClassifier_class(problem,interpretation,target);
48726 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
48727 // the upper bound of the multiplicity should be considered.
48728 numberOfExistingReferences == count find mustInRelationeRawType_reference_EGenericType(problem,interpretation,source,_);
48729 check(numberOfExistingReferences < 1);
48730} or {
48731 find mustInRelationeRawType_reference_EGenericType(problem,interpretation,source,target);
48732}
48733/**
48734 * Matcher for detecting tuples t where []eLowerBound reference EGenericType(source,target)
48735 */
48736private pattern mustInRelationeLowerBound_reference_EGenericType(
48737 problem:LogicProblem, interpretation:PartialInterpretation,
48738 source: DefinedElement, target:DefinedElement)
48739{
48740 find interpretation(problem,interpretation);
48741 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
48742 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eLowerBound reference EGenericType");
48743 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
48744 BinaryElementRelationLink.param1(link,source);
48745 BinaryElementRelationLink.param2(link,target);
48746}
48747/**
48748 * Matcher for detecting tuples t where <>eLowerBound reference EGenericType(source,target)
48749 */
48750private pattern mayInRelationeLowerBound_reference_EGenericType(
48751 problem:LogicProblem, interpretation:PartialInterpretation,
48752 source: DefinedElement, target:DefinedElement)
48753{
48754 find interpretation(problem,interpretation);
48755 // The two endpoint of the link have to exist
48756 find mayExist(problem, interpretation, source);
48757 find mayExist(problem, interpretation, target);
48758 // Type consistency
48759 find mayInstanceOfEGenericType_class(problem,interpretation,source);
48760 find mayInstanceOfEGenericType_class(problem,interpretation,target);
48761 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
48762 // the upper bound of the multiplicity should be considered.
48763 numberOfExistingReferences == count find mustInRelationeLowerBound_reference_EGenericType(problem,interpretation,source,_);
48764 check(numberOfExistingReferences < 1);
48765 // The reference is containment, then a new reference cannot be create if:
48766 // 1. Multiple parents
48767 neg find mustContains4(problem,interpretation,_,target);
48768 // 2. Circle in the containment hierarchy
48769 neg find mustTransitiveContains(source,target);
48770} or {
48771 find mustInRelationeLowerBound_reference_EGenericType(problem,interpretation,source,target);
48772}
48773/**
48774 * Matcher for detecting tuples t where []eTypeParameter reference EGenericType(source,target)
48775 */
48776private pattern mustInRelationeTypeParameter_reference_EGenericType(
48777 problem:LogicProblem, interpretation:PartialInterpretation,
48778 source: DefinedElement, target:DefinedElement)
48779{
48780 find interpretation(problem,interpretation);
48781 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
48782 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eTypeParameter reference EGenericType");
48783 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
48784 BinaryElementRelationLink.param1(link,source);
48785 BinaryElementRelationLink.param2(link,target);
48786}
48787/**
48788 * Matcher for detecting tuples t where <>eTypeParameter reference EGenericType(source,target)
48789 */
48790private pattern mayInRelationeTypeParameter_reference_EGenericType(
48791 problem:LogicProblem, interpretation:PartialInterpretation,
48792 source: DefinedElement, target:DefinedElement)
48793{
48794 find interpretation(problem,interpretation);
48795 // The two endpoint of the link have to exist
48796 find mayExist(problem, interpretation, source);
48797 find mayExist(problem, interpretation, target);
48798 // Type consistency
48799 find mayInstanceOfEGenericType_class(problem,interpretation,source);
48800 find mayInstanceOfETypeParameter_class(problem,interpretation,target);
48801 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
48802 // the upper bound of the multiplicity should be considered.
48803 numberOfExistingReferences == count find mustInRelationeTypeParameter_reference_EGenericType(problem,interpretation,source,_);
48804 check(numberOfExistingReferences < 1);
48805} or {
48806 find mustInRelationeTypeParameter_reference_EGenericType(problem,interpretation,source,target);
48807}
48808/**
48809 * Matcher for detecting tuples t where []eClassifier reference EGenericType(source,target)
48810 */
48811private pattern mustInRelationeClassifier_reference_EGenericType(
48812 problem:LogicProblem, interpretation:PartialInterpretation,
48813 source: DefinedElement, target:DefinedElement)
48814{
48815 find interpretation(problem,interpretation);
48816 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
48817 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eClassifier reference EGenericType");
48818 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
48819 BinaryElementRelationLink.param1(link,source);
48820 BinaryElementRelationLink.param2(link,target);
48821}
48822/**
48823 * Matcher for detecting tuples t where <>eClassifier reference EGenericType(source,target)
48824 */
48825private pattern mayInRelationeClassifier_reference_EGenericType(
48826 problem:LogicProblem, interpretation:PartialInterpretation,
48827 source: DefinedElement, target:DefinedElement)
48828{
48829 find interpretation(problem,interpretation);
48830 // The two endpoint of the link have to exist
48831 find mayExist(problem, interpretation, source);
48832 find mayExist(problem, interpretation, target);
48833 // Type consistency
48834 find mayInstanceOfEGenericType_class(problem,interpretation,source);
48835 find mayInstanceOfEClassifier_class(problem,interpretation,target);
48836 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
48837 // the upper bound of the multiplicity should be considered.
48838 numberOfExistingReferences == count find mustInRelationeClassifier_reference_EGenericType(problem,interpretation,source,_);
48839 check(numberOfExistingReferences < 1);
48840} or {
48841 find mustInRelationeClassifier_reference_EGenericType(problem,interpretation,source,target);
48842}
48843/**
48844 * Matcher for detecting tuples t where []eBounds reference ETypeParameter(source,target)
48845 */
48846private pattern mustInRelationeBounds_reference_ETypeParameter(
48847 problem:LogicProblem, interpretation:PartialInterpretation,
48848 source: DefinedElement, target:DefinedElement)
48849{
48850 find interpretation(problem,interpretation);
48851 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
48852 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eBounds reference ETypeParameter");
48853 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
48854 BinaryElementRelationLink.param1(link,source);
48855 BinaryElementRelationLink.param2(link,target);
48856}
48857/**
48858 * Matcher for detecting tuples t where <>eBounds reference ETypeParameter(source,target)
48859 */
48860private pattern mayInRelationeBounds_reference_ETypeParameter(
48861 problem:LogicProblem, interpretation:PartialInterpretation,
48862 source: DefinedElement, target:DefinedElement)
48863{
48864 find interpretation(problem,interpretation);
48865 // The two endpoint of the link have to exist
48866 find mayExist(problem, interpretation, source);
48867 find mayExist(problem, interpretation, target);
48868 // Type consistency
48869 find mayInstanceOfETypeParameter_class(problem,interpretation,source);
48870 find mayInstanceOfEGenericType_class(problem,interpretation,target);
48871 // The reference is containment, then a new reference cannot be create if:
48872 // 1. Multiple parents
48873 neg find mustContains4(problem,interpretation,_,target);
48874 // 2. Circle in the containment hierarchy
48875 neg find mustTransitiveContains(source,target);
48876} or {
48877 find mustInRelationeBounds_reference_ETypeParameter(problem,interpretation,source,target);
48878}
48879/**
48880 * Matcher for detecting tuples t where []iD attribute EAttribute(source,target)
48881 */
48882private pattern mustInRelationiD_attribute_EAttribute(
48883 problem:LogicProblem, interpretation:PartialInterpretation,
48884 source: DefinedElement, target:DefinedElement)
48885{
48886 find interpretation(problem,interpretation);
48887 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
48888 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"iD attribute EAttribute");
48889 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
48890 BinaryElementRelationLink.param1(link,source);
48891 BinaryElementRelationLink.param2(link,target);
48892}
48893/**
48894 * Matcher for detecting tuples t where <>iD attribute EAttribute(source,target)
48895 */
48896private pattern mayInRelationiD_attribute_EAttribute(
48897 problem:LogicProblem, interpretation:PartialInterpretation,
48898 source: DefinedElement, target:DefinedElement)
48899{
48900 find interpretation(problem,interpretation);
48901 // The two endpoint of the link have to exist
48902 find mayExist(problem, interpretation, source);
48903 find mayExist(problem, interpretation, target);
48904 // Type consistency
48905 find mayInstanceOfEAttribute_class(problem,interpretation,source);
48906 BooleanElement(target);
48907 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
48908 // the upper bound of the multiplicity should be considered.
48909 numberOfExistingReferences == count find mustInRelationiD_attribute_EAttribute(problem,interpretation,source,_);
48910 check(numberOfExistingReferences < 1);
48911} or {
48912 find mustInRelationiD_attribute_EAttribute(problem,interpretation,source,target);
48913}
48914/**
48915 * Matcher for detecting tuples t where []source attribute EAnnotation(source,target)
48916 */
48917private pattern mustInRelationsource_attribute_EAnnotation(
48918 problem:LogicProblem, interpretation:PartialInterpretation,
48919 source: DefinedElement, target:DefinedElement)
48920{
48921 find interpretation(problem,interpretation);
48922 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
48923 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"source attribute EAnnotation");
48924 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
48925 BinaryElementRelationLink.param1(link,source);
48926 BinaryElementRelationLink.param2(link,target);
48927}
48928/**
48929 * Matcher for detecting tuples t where <>source attribute EAnnotation(source,target)
48930 */
48931private pattern mayInRelationsource_attribute_EAnnotation(
48932 problem:LogicProblem, interpretation:PartialInterpretation,
48933 source: DefinedElement, target:DefinedElement)
48934{
48935 find interpretation(problem,interpretation);
48936 // The two endpoint of the link have to exist
48937 find mayExist(problem, interpretation, source);
48938 find mayExist(problem, interpretation, target);
48939 // Type consistency
48940 find mayInstanceOfEAnnotation_class(problem,interpretation,source);
48941 StringElement(target);
48942 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
48943 // the upper bound of the multiplicity should be considered.
48944 numberOfExistingReferences == count find mustInRelationsource_attribute_EAnnotation(problem,interpretation,source,_);
48945 check(numberOfExistingReferences < 1);
48946} or {
48947 find mustInRelationsource_attribute_EAnnotation(problem,interpretation,source,target);
48948}
48949/**
48950 * Matcher for detecting tuples t where []abstract attribute EClass(source,target)
48951 */
48952private pattern mustInRelationabstract_attribute_EClass(
48953 problem:LogicProblem, interpretation:PartialInterpretation,
48954 source: DefinedElement, target:DefinedElement)
48955{
48956 find interpretation(problem,interpretation);
48957 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
48958 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"abstract attribute EClass");
48959 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
48960 BinaryElementRelationLink.param1(link,source);
48961 BinaryElementRelationLink.param2(link,target);
48962}
48963/**
48964 * Matcher for detecting tuples t where <>abstract attribute EClass(source,target)
48965 */
48966private pattern mayInRelationabstract_attribute_EClass(
48967 problem:LogicProblem, interpretation:PartialInterpretation,
48968 source: DefinedElement, target:DefinedElement)
48969{
48970 find interpretation(problem,interpretation);
48971 // The two endpoint of the link have to exist
48972 find mayExist(problem, interpretation, source);
48973 find mayExist(problem, interpretation, target);
48974 // Type consistency
48975 find mayInstanceOfEClass_class(problem,interpretation,source);
48976 BooleanElement(target);
48977 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
48978 // the upper bound of the multiplicity should be considered.
48979 numberOfExistingReferences == count find mustInRelationabstract_attribute_EClass(problem,interpretation,source,_);
48980 check(numberOfExistingReferences < 1);
48981} or {
48982 find mustInRelationabstract_attribute_EClass(problem,interpretation,source,target);
48983}
48984/**
48985 * Matcher for detecting tuples t where []interface attribute EClass(source,target)
48986 */
48987private pattern mustInRelationinterface_attribute_EClass(
48988 problem:LogicProblem, interpretation:PartialInterpretation,
48989 source: DefinedElement, target:DefinedElement)
48990{
48991 find interpretation(problem,interpretation);
48992 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
48993 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface attribute EClass");
48994 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
48995 BinaryElementRelationLink.param1(link,source);
48996 BinaryElementRelationLink.param2(link,target);
48997}
48998/**
48999 * Matcher for detecting tuples t where <>interface attribute EClass(source,target)
49000 */
49001private pattern mayInRelationinterface_attribute_EClass(
49002 problem:LogicProblem, interpretation:PartialInterpretation,
49003 source: DefinedElement, target:DefinedElement)
49004{
49005 find interpretation(problem,interpretation);
49006 // The two endpoint of the link have to exist
49007 find mayExist(problem, interpretation, source);
49008 find mayExist(problem, interpretation, target);
49009 // Type consistency
49010 find mayInstanceOfEClass_class(problem,interpretation,source);
49011 BooleanElement(target);
49012 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
49013 // the upper bound of the multiplicity should be considered.
49014 numberOfExistingReferences == count find mustInRelationinterface_attribute_EClass(problem,interpretation,source,_);
49015 check(numberOfExistingReferences < 1);
49016} or {
49017 find mustInRelationinterface_attribute_EClass(problem,interpretation,source,target);
49018}
49019/**
49020 * Matcher for detecting tuples t where []instanceClassName attribute EClassifier(source,target)
49021 */
49022private pattern mustInRelationinstanceClassName_attribute_EClassifier(
49023 problem:LogicProblem, interpretation:PartialInterpretation,
49024 source: DefinedElement, target:DefinedElement)
49025{
49026 find interpretation(problem,interpretation);
49027 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
49028 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"instanceClassName attribute EClassifier");
49029 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
49030 BinaryElementRelationLink.param1(link,source);
49031 BinaryElementRelationLink.param2(link,target);
49032}
49033/**
49034 * Matcher for detecting tuples t where <>instanceClassName attribute EClassifier(source,target)
49035 */
49036private pattern mayInRelationinstanceClassName_attribute_EClassifier(
49037 problem:LogicProblem, interpretation:PartialInterpretation,
49038 source: DefinedElement, target:DefinedElement)
49039{
49040 find interpretation(problem,interpretation);
49041 // The two endpoint of the link have to exist
49042 find mayExist(problem, interpretation, source);
49043 find mayExist(problem, interpretation, target);
49044 // Type consistency
49045 find mayInstanceOfEClassifier_class(problem,interpretation,source);
49046 StringElement(target);
49047 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
49048 // the upper bound of the multiplicity should be considered.
49049 numberOfExistingReferences == count find mustInRelationinstanceClassName_attribute_EClassifier(problem,interpretation,source,_);
49050 check(numberOfExistingReferences < 1);
49051} or {
49052 find mustInRelationinstanceClassName_attribute_EClassifier(problem,interpretation,source,target);
49053}
49054/**
49055 * Matcher for detecting tuples t where []instanceTypeName attribute EClassifier(source,target)
49056 */
49057private pattern mustInRelationinstanceTypeName_attribute_EClassifier(
49058 problem:LogicProblem, interpretation:PartialInterpretation,
49059 source: DefinedElement, target:DefinedElement)
49060{
49061 find interpretation(problem,interpretation);
49062 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
49063 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"instanceTypeName attribute EClassifier");
49064 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
49065 BinaryElementRelationLink.param1(link,source);
49066 BinaryElementRelationLink.param2(link,target);
49067}
49068/**
49069 * Matcher for detecting tuples t where <>instanceTypeName attribute EClassifier(source,target)
49070 */
49071private pattern mayInRelationinstanceTypeName_attribute_EClassifier(
49072 problem:LogicProblem, interpretation:PartialInterpretation,
49073 source: DefinedElement, target:DefinedElement)
49074{
49075 find interpretation(problem,interpretation);
49076 // The two endpoint of the link have to exist
49077 find mayExist(problem, interpretation, source);
49078 find mayExist(problem, interpretation, target);
49079 // Type consistency
49080 find mayInstanceOfEClassifier_class(problem,interpretation,source);
49081 StringElement(target);
49082 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
49083 // the upper bound of the multiplicity should be considered.
49084 numberOfExistingReferences == count find mustInRelationinstanceTypeName_attribute_EClassifier(problem,interpretation,source,_);
49085 check(numberOfExistingReferences < 1);
49086} or {
49087 find mustInRelationinstanceTypeName_attribute_EClassifier(problem,interpretation,source,target);
49088}
49089/**
49090 * Matcher for detecting tuples t where []serializable attribute EDataType(source,target)
49091 */
49092private pattern mustInRelationserializable_attribute_EDataType(
49093 problem:LogicProblem, interpretation:PartialInterpretation,
49094 source: DefinedElement, target:DefinedElement)
49095{
49096 find interpretation(problem,interpretation);
49097 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
49098 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"serializable attribute EDataType");
49099 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
49100 BinaryElementRelationLink.param1(link,source);
49101 BinaryElementRelationLink.param2(link,target);
49102}
49103/**
49104 * Matcher for detecting tuples t where <>serializable attribute EDataType(source,target)
49105 */
49106private pattern mayInRelationserializable_attribute_EDataType(
49107 problem:LogicProblem, interpretation:PartialInterpretation,
49108 source: DefinedElement, target:DefinedElement)
49109{
49110 find interpretation(problem,interpretation);
49111 // The two endpoint of the link have to exist
49112 find mayExist(problem, interpretation, source);
49113 find mayExist(problem, interpretation, target);
49114 // Type consistency
49115 find mayInstanceOfEDataType_class(problem,interpretation,source);
49116 BooleanElement(target);
49117 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
49118 // the upper bound of the multiplicity should be considered.
49119 numberOfExistingReferences == count find mustInRelationserializable_attribute_EDataType(problem,interpretation,source,_);
49120 check(numberOfExistingReferences < 1);
49121} or {
49122 find mustInRelationserializable_attribute_EDataType(problem,interpretation,source,target);
49123}
49124/**
49125 * Matcher for detecting tuples t where []value attribute EEnumLiteral(source,target)
49126 */
49127private pattern mustInRelationvalue_attribute_EEnumLiteral(
49128 problem:LogicProblem, interpretation:PartialInterpretation,
49129 source: DefinedElement, target:DefinedElement)
49130{
49131 find interpretation(problem,interpretation);
49132 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
49133 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"value attribute EEnumLiteral");
49134 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
49135 BinaryElementRelationLink.param1(link,source);
49136 BinaryElementRelationLink.param2(link,target);
49137}
49138/**
49139 * Matcher for detecting tuples t where <>value attribute EEnumLiteral(source,target)
49140 */
49141private pattern mayInRelationvalue_attribute_EEnumLiteral(
49142 problem:LogicProblem, interpretation:PartialInterpretation,
49143 source: DefinedElement, target:DefinedElement)
49144{
49145 find interpretation(problem,interpretation);
49146 // The two endpoint of the link have to exist
49147 find mayExist(problem, interpretation, source);
49148 find mayExist(problem, interpretation, target);
49149 // Type consistency
49150 find mayInstanceOfEEnumLiteral_class(problem,interpretation,source);
49151 IntegerElement(target);
49152 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
49153 // the upper bound of the multiplicity should be considered.
49154 numberOfExistingReferences == count find mustInRelationvalue_attribute_EEnumLiteral(problem,interpretation,source,_);
49155 check(numberOfExistingReferences < 1);
49156} or {
49157 find mustInRelationvalue_attribute_EEnumLiteral(problem,interpretation,source,target);
49158}
49159/**
49160 * Matcher for detecting tuples t where []literal attribute EEnumLiteral(source,target)
49161 */
49162private pattern mustInRelationliteral_attribute_EEnumLiteral(
49163 problem:LogicProblem, interpretation:PartialInterpretation,
49164 source: DefinedElement, target:DefinedElement)
49165{
49166 find interpretation(problem,interpretation);
49167 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
49168 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"literal attribute EEnumLiteral");
49169 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
49170 BinaryElementRelationLink.param1(link,source);
49171 BinaryElementRelationLink.param2(link,target);
49172}
49173/**
49174 * Matcher for detecting tuples t where <>literal attribute EEnumLiteral(source,target)
49175 */
49176private pattern mayInRelationliteral_attribute_EEnumLiteral(
49177 problem:LogicProblem, interpretation:PartialInterpretation,
49178 source: DefinedElement, target:DefinedElement)
49179{
49180 find interpretation(problem,interpretation);
49181 // The two endpoint of the link have to exist
49182 find mayExist(problem, interpretation, source);
49183 find mayExist(problem, interpretation, target);
49184 // Type consistency
49185 find mayInstanceOfEEnumLiteral_class(problem,interpretation,source);
49186 StringElement(target);
49187 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
49188 // the upper bound of the multiplicity should be considered.
49189 numberOfExistingReferences == count find mustInRelationliteral_attribute_EEnumLiteral(problem,interpretation,source,_);
49190 check(numberOfExistingReferences < 1);
49191} or {
49192 find mustInRelationliteral_attribute_EEnumLiteral(problem,interpretation,source,target);
49193}
49194/**
49195 * Matcher for detecting tuples t where []name attribute ENamedElement(source,target)
49196 */
49197private pattern mustInRelationname_attribute_ENamedElement(
49198 problem:LogicProblem, interpretation:PartialInterpretation,
49199 source: DefinedElement, target:DefinedElement)
49200{
49201 find interpretation(problem,interpretation);
49202 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
49203 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"name attribute ENamedElement");
49204 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
49205 BinaryElementRelationLink.param1(link,source);
49206 BinaryElementRelationLink.param2(link,target);
49207}
49208/**
49209 * Matcher for detecting tuples t where <>name attribute ENamedElement(source,target)
49210 */
49211private pattern mayInRelationname_attribute_ENamedElement(
49212 problem:LogicProblem, interpretation:PartialInterpretation,
49213 source: DefinedElement, target:DefinedElement)
49214{
49215 find interpretation(problem,interpretation);
49216 // The two endpoint of the link have to exist
49217 find mayExist(problem, interpretation, source);
49218 find mayExist(problem, interpretation, target);
49219 // Type consistency
49220 find mayInstanceOfENamedElement_class(problem,interpretation,source);
49221 StringElement(target);
49222 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
49223 // the upper bound of the multiplicity should be considered.
49224 numberOfExistingReferences == count find mustInRelationname_attribute_ENamedElement(problem,interpretation,source,_);
49225 check(numberOfExistingReferences < 1);
49226} or {
49227 find mustInRelationname_attribute_ENamedElement(problem,interpretation,source,target);
49228}
49229/**
49230 * Matcher for detecting tuples t where []nsURI attribute EPackage(source,target)
49231 */
49232private pattern mustInRelationnsURI_attribute_EPackage(
49233 problem:LogicProblem, interpretation:PartialInterpretation,
49234 source: DefinedElement, target:DefinedElement)
49235{
49236 find interpretation(problem,interpretation);
49237 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
49238 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"nsURI attribute EPackage");
49239 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
49240 BinaryElementRelationLink.param1(link,source);
49241 BinaryElementRelationLink.param2(link,target);
49242}
49243/**
49244 * Matcher for detecting tuples t where <>nsURI attribute EPackage(source,target)
49245 */
49246private pattern mayInRelationnsURI_attribute_EPackage(
49247 problem:LogicProblem, interpretation:PartialInterpretation,
49248 source: DefinedElement, target:DefinedElement)
49249{
49250 find interpretation(problem,interpretation);
49251 // The two endpoint of the link have to exist
49252 find mayExist(problem, interpretation, source);
49253 find mayExist(problem, interpretation, target);
49254 // Type consistency
49255 find mayInstanceOfEPackage_class(problem,interpretation,source);
49256 StringElement(target);
49257 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
49258 // the upper bound of the multiplicity should be considered.
49259 numberOfExistingReferences == count find mustInRelationnsURI_attribute_EPackage(problem,interpretation,source,_);
49260 check(numberOfExistingReferences < 1);
49261} or {
49262 find mustInRelationnsURI_attribute_EPackage(problem,interpretation,source,target);
49263}
49264/**
49265 * Matcher for detecting tuples t where []nsPrefix attribute EPackage(source,target)
49266 */
49267private pattern mustInRelationnsPrefix_attribute_EPackage(
49268 problem:LogicProblem, interpretation:PartialInterpretation,
49269 source: DefinedElement, target:DefinedElement)
49270{
49271 find interpretation(problem,interpretation);
49272 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
49273 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"nsPrefix attribute EPackage");
49274 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
49275 BinaryElementRelationLink.param1(link,source);
49276 BinaryElementRelationLink.param2(link,target);
49277}
49278/**
49279 * Matcher for detecting tuples t where <>nsPrefix attribute EPackage(source,target)
49280 */
49281private pattern mayInRelationnsPrefix_attribute_EPackage(
49282 problem:LogicProblem, interpretation:PartialInterpretation,
49283 source: DefinedElement, target:DefinedElement)
49284{
49285 find interpretation(problem,interpretation);
49286 // The two endpoint of the link have to exist
49287 find mayExist(problem, interpretation, source);
49288 find mayExist(problem, interpretation, target);
49289 // Type consistency
49290 find mayInstanceOfEPackage_class(problem,interpretation,source);
49291 StringElement(target);
49292 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
49293 // the upper bound of the multiplicity should be considered.
49294 numberOfExistingReferences == count find mustInRelationnsPrefix_attribute_EPackage(problem,interpretation,source,_);
49295 check(numberOfExistingReferences < 1);
49296} or {
49297 find mustInRelationnsPrefix_attribute_EPackage(problem,interpretation,source,target);
49298}
49299/**
49300 * Matcher for detecting tuples t where []containment attribute EReference(source,target)
49301 */
49302private pattern mustInRelationcontainment_attribute_EReference(
49303 problem:LogicProblem, interpretation:PartialInterpretation,
49304 source: DefinedElement, target:DefinedElement)
49305{
49306 find interpretation(problem,interpretation);
49307 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
49308 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"containment attribute EReference");
49309 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
49310 BinaryElementRelationLink.param1(link,source);
49311 BinaryElementRelationLink.param2(link,target);
49312}
49313/**
49314 * Matcher for detecting tuples t where <>containment attribute EReference(source,target)
49315 */
49316private pattern mayInRelationcontainment_attribute_EReference(
49317 problem:LogicProblem, interpretation:PartialInterpretation,
49318 source: DefinedElement, target:DefinedElement)
49319{
49320 find interpretation(problem,interpretation);
49321 // The two endpoint of the link have to exist
49322 find mayExist(problem, interpretation, source);
49323 find mayExist(problem, interpretation, target);
49324 // Type consistency
49325 find mayInstanceOfEReference_class(problem,interpretation,source);
49326 BooleanElement(target);
49327 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
49328 // the upper bound of the multiplicity should be considered.
49329 numberOfExistingReferences == count find mustInRelationcontainment_attribute_EReference(problem,interpretation,source,_);
49330 check(numberOfExistingReferences < 1);
49331} or {
49332 find mustInRelationcontainment_attribute_EReference(problem,interpretation,source,target);
49333}
49334/**
49335 * Matcher for detecting tuples t where []container attribute EReference(source,target)
49336 */
49337private pattern mustInRelationcontainer_attribute_EReference(
49338 problem:LogicProblem, interpretation:PartialInterpretation,
49339 source: DefinedElement, target:DefinedElement)
49340{
49341 find interpretation(problem,interpretation);
49342 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
49343 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"container attribute EReference");
49344 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
49345 BinaryElementRelationLink.param1(link,source);
49346 BinaryElementRelationLink.param2(link,target);
49347}
49348/**
49349 * Matcher for detecting tuples t where <>container attribute EReference(source,target)
49350 */
49351private pattern mayInRelationcontainer_attribute_EReference(
49352 problem:LogicProblem, interpretation:PartialInterpretation,
49353 source: DefinedElement, target:DefinedElement)
49354{
49355 find interpretation(problem,interpretation);
49356 // The two endpoint of the link have to exist
49357 find mayExist(problem, interpretation, source);
49358 find mayExist(problem, interpretation, target);
49359 // Type consistency
49360 find mayInstanceOfEReference_class(problem,interpretation,source);
49361 BooleanElement(target);
49362 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
49363 // the upper bound of the multiplicity should be considered.
49364 numberOfExistingReferences == count find mustInRelationcontainer_attribute_EReference(problem,interpretation,source,_);
49365 check(numberOfExistingReferences < 1);
49366} or {
49367 find mustInRelationcontainer_attribute_EReference(problem,interpretation,source,target);
49368}
49369/**
49370 * Matcher for detecting tuples t where []resolveProxies attribute EReference(source,target)
49371 */
49372private pattern mustInRelationresolveProxies_attribute_EReference(
49373 problem:LogicProblem, interpretation:PartialInterpretation,
49374 source: DefinedElement, target:DefinedElement)
49375{
49376 find interpretation(problem,interpretation);
49377 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
49378 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"resolveProxies attribute EReference");
49379 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
49380 BinaryElementRelationLink.param1(link,source);
49381 BinaryElementRelationLink.param2(link,target);
49382}
49383/**
49384 * Matcher for detecting tuples t where <>resolveProxies attribute EReference(source,target)
49385 */
49386private pattern mayInRelationresolveProxies_attribute_EReference(
49387 problem:LogicProblem, interpretation:PartialInterpretation,
49388 source: DefinedElement, target:DefinedElement)
49389{
49390 find interpretation(problem,interpretation);
49391 // The two endpoint of the link have to exist
49392 find mayExist(problem, interpretation, source);
49393 find mayExist(problem, interpretation, target);
49394 // Type consistency
49395 find mayInstanceOfEReference_class(problem,interpretation,source);
49396 BooleanElement(target);
49397 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
49398 // the upper bound of the multiplicity should be considered.
49399 numberOfExistingReferences == count find mustInRelationresolveProxies_attribute_EReference(problem,interpretation,source,_);
49400 check(numberOfExistingReferences < 1);
49401} or {
49402 find mustInRelationresolveProxies_attribute_EReference(problem,interpretation,source,target);
49403}
49404/**
49405 * Matcher for detecting tuples t where []changeable attribute EStructuralFeature(source,target)
49406 */
49407private pattern mustInRelationchangeable_attribute_EStructuralFeature(
49408 problem:LogicProblem, interpretation:PartialInterpretation,
49409 source: DefinedElement, target:DefinedElement)
49410{
49411 find interpretation(problem,interpretation);
49412 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
49413 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"changeable attribute EStructuralFeature");
49414 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
49415 BinaryElementRelationLink.param1(link,source);
49416 BinaryElementRelationLink.param2(link,target);
49417}
49418/**
49419 * Matcher for detecting tuples t where <>changeable attribute EStructuralFeature(source,target)
49420 */
49421private pattern mayInRelationchangeable_attribute_EStructuralFeature(
49422 problem:LogicProblem, interpretation:PartialInterpretation,
49423 source: DefinedElement, target:DefinedElement)
49424{
49425 find interpretation(problem,interpretation);
49426 // The two endpoint of the link have to exist
49427 find mayExist(problem, interpretation, source);
49428 find mayExist(problem, interpretation, target);
49429 // Type consistency
49430 find mayInstanceOfEStructuralFeature_class(problem,interpretation,source);
49431 BooleanElement(target);
49432 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
49433 // the upper bound of the multiplicity should be considered.
49434 numberOfExistingReferences == count find mustInRelationchangeable_attribute_EStructuralFeature(problem,interpretation,source,_);
49435 check(numberOfExistingReferences < 1);
49436} or {
49437 find mustInRelationchangeable_attribute_EStructuralFeature(problem,interpretation,source,target);
49438}
49439/**
49440 * Matcher for detecting tuples t where []volatile attribute EStructuralFeature(source,target)
49441 */
49442private pattern mustInRelationvolatile_attribute_EStructuralFeature(
49443 problem:LogicProblem, interpretation:PartialInterpretation,
49444 source: DefinedElement, target:DefinedElement)
49445{
49446 find interpretation(problem,interpretation);
49447 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
49448 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"volatile attribute EStructuralFeature");
49449 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
49450 BinaryElementRelationLink.param1(link,source);
49451 BinaryElementRelationLink.param2(link,target);
49452}
49453/**
49454 * Matcher for detecting tuples t where <>volatile attribute EStructuralFeature(source,target)
49455 */
49456private pattern mayInRelationvolatile_attribute_EStructuralFeature(
49457 problem:LogicProblem, interpretation:PartialInterpretation,
49458 source: DefinedElement, target:DefinedElement)
49459{
49460 find interpretation(problem,interpretation);
49461 // The two endpoint of the link have to exist
49462 find mayExist(problem, interpretation, source);
49463 find mayExist(problem, interpretation, target);
49464 // Type consistency
49465 find mayInstanceOfEStructuralFeature_class(problem,interpretation,source);
49466 BooleanElement(target);
49467 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
49468 // the upper bound of the multiplicity should be considered.
49469 numberOfExistingReferences == count find mustInRelationvolatile_attribute_EStructuralFeature(problem,interpretation,source,_);
49470 check(numberOfExistingReferences < 1);
49471} or {
49472 find mustInRelationvolatile_attribute_EStructuralFeature(problem,interpretation,source,target);
49473}
49474/**
49475 * Matcher for detecting tuples t where []transient attribute EStructuralFeature(source,target)
49476 */
49477private pattern mustInRelationtransient_attribute_EStructuralFeature(
49478 problem:LogicProblem, interpretation:PartialInterpretation,
49479 source: DefinedElement, target:DefinedElement)
49480{
49481 find interpretation(problem,interpretation);
49482 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
49483 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"transient attribute EStructuralFeature");
49484 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
49485 BinaryElementRelationLink.param1(link,source);
49486 BinaryElementRelationLink.param2(link,target);
49487}
49488/**
49489 * Matcher for detecting tuples t where <>transient attribute EStructuralFeature(source,target)
49490 */
49491private pattern mayInRelationtransient_attribute_EStructuralFeature(
49492 problem:LogicProblem, interpretation:PartialInterpretation,
49493 source: DefinedElement, target:DefinedElement)
49494{
49495 find interpretation(problem,interpretation);
49496 // The two endpoint of the link have to exist
49497 find mayExist(problem, interpretation, source);
49498 find mayExist(problem, interpretation, target);
49499 // Type consistency
49500 find mayInstanceOfEStructuralFeature_class(problem,interpretation,source);
49501 BooleanElement(target);
49502 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
49503 // the upper bound of the multiplicity should be considered.
49504 numberOfExistingReferences == count find mustInRelationtransient_attribute_EStructuralFeature(problem,interpretation,source,_);
49505 check(numberOfExistingReferences < 1);
49506} or {
49507 find mustInRelationtransient_attribute_EStructuralFeature(problem,interpretation,source,target);
49508}
49509/**
49510 * Matcher for detecting tuples t where []defaultValueLiteral attribute EStructuralFeature(source,target)
49511 */
49512private pattern mustInRelationdefaultValueLiteral_attribute_EStructuralFeature(
49513 problem:LogicProblem, interpretation:PartialInterpretation,
49514 source: DefinedElement, target:DefinedElement)
49515{
49516 find interpretation(problem,interpretation);
49517 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
49518 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"defaultValueLiteral attribute EStructuralFeature");
49519 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
49520 BinaryElementRelationLink.param1(link,source);
49521 BinaryElementRelationLink.param2(link,target);
49522}
49523/**
49524 * Matcher for detecting tuples t where <>defaultValueLiteral attribute EStructuralFeature(source,target)
49525 */
49526private pattern mayInRelationdefaultValueLiteral_attribute_EStructuralFeature(
49527 problem:LogicProblem, interpretation:PartialInterpretation,
49528 source: DefinedElement, target:DefinedElement)
49529{
49530 find interpretation(problem,interpretation);
49531 // The two endpoint of the link have to exist
49532 find mayExist(problem, interpretation, source);
49533 find mayExist(problem, interpretation, target);
49534 // Type consistency
49535 find mayInstanceOfEStructuralFeature_class(problem,interpretation,source);
49536 StringElement(target);
49537 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
49538 // the upper bound of the multiplicity should be considered.
49539 numberOfExistingReferences == count find mustInRelationdefaultValueLiteral_attribute_EStructuralFeature(problem,interpretation,source,_);
49540 check(numberOfExistingReferences < 1);
49541} or {
49542 find mustInRelationdefaultValueLiteral_attribute_EStructuralFeature(problem,interpretation,source,target);
49543}
49544/**
49545 * Matcher for detecting tuples t where []unsettable attribute EStructuralFeature(source,target)
49546 */
49547private pattern mustInRelationunsettable_attribute_EStructuralFeature(
49548 problem:LogicProblem, interpretation:PartialInterpretation,
49549 source: DefinedElement, target:DefinedElement)
49550{
49551 find interpretation(problem,interpretation);
49552 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
49553 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"unsettable attribute EStructuralFeature");
49554 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
49555 BinaryElementRelationLink.param1(link,source);
49556 BinaryElementRelationLink.param2(link,target);
49557}
49558/**
49559 * Matcher for detecting tuples t where <>unsettable attribute EStructuralFeature(source,target)
49560 */
49561private pattern mayInRelationunsettable_attribute_EStructuralFeature(
49562 problem:LogicProblem, interpretation:PartialInterpretation,
49563 source: DefinedElement, target:DefinedElement)
49564{
49565 find interpretation(problem,interpretation);
49566 // The two endpoint of the link have to exist
49567 find mayExist(problem, interpretation, source);
49568 find mayExist(problem, interpretation, target);
49569 // Type consistency
49570 find mayInstanceOfEStructuralFeature_class(problem,interpretation,source);
49571 BooleanElement(target);
49572 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
49573 // the upper bound of the multiplicity should be considered.
49574 numberOfExistingReferences == count find mustInRelationunsettable_attribute_EStructuralFeature(problem,interpretation,source,_);
49575 check(numberOfExistingReferences < 1);
49576} or {
49577 find mustInRelationunsettable_attribute_EStructuralFeature(problem,interpretation,source,target);
49578}
49579/**
49580 * Matcher for detecting tuples t where []derived attribute EStructuralFeature(source,target)
49581 */
49582private pattern mustInRelationderived_attribute_EStructuralFeature(
49583 problem:LogicProblem, interpretation:PartialInterpretation,
49584 source: DefinedElement, target:DefinedElement)
49585{
49586 find interpretation(problem,interpretation);
49587 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
49588 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"derived attribute EStructuralFeature");
49589 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
49590 BinaryElementRelationLink.param1(link,source);
49591 BinaryElementRelationLink.param2(link,target);
49592}
49593/**
49594 * Matcher for detecting tuples t where <>derived attribute EStructuralFeature(source,target)
49595 */
49596private pattern mayInRelationderived_attribute_EStructuralFeature(
49597 problem:LogicProblem, interpretation:PartialInterpretation,
49598 source: DefinedElement, target:DefinedElement)
49599{
49600 find interpretation(problem,interpretation);
49601 // The two endpoint of the link have to exist
49602 find mayExist(problem, interpretation, source);
49603 find mayExist(problem, interpretation, target);
49604 // Type consistency
49605 find mayInstanceOfEStructuralFeature_class(problem,interpretation,source);
49606 BooleanElement(target);
49607 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
49608 // the upper bound of the multiplicity should be considered.
49609 numberOfExistingReferences == count find mustInRelationderived_attribute_EStructuralFeature(problem,interpretation,source,_);
49610 check(numberOfExistingReferences < 1);
49611} or {
49612 find mustInRelationderived_attribute_EStructuralFeature(problem,interpretation,source,target);
49613}
49614/**
49615 * Matcher for detecting tuples t where []ordered attribute ETypedElement(source,target)
49616 */
49617private pattern mustInRelationordered_attribute_ETypedElement(
49618 problem:LogicProblem, interpretation:PartialInterpretation,
49619 source: DefinedElement, target:DefinedElement)
49620{
49621 find interpretation(problem,interpretation);
49622 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
49623 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"ordered attribute ETypedElement");
49624 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
49625 BinaryElementRelationLink.param1(link,source);
49626 BinaryElementRelationLink.param2(link,target);
49627}
49628/**
49629 * Matcher for detecting tuples t where <>ordered attribute ETypedElement(source,target)
49630 */
49631private pattern mayInRelationordered_attribute_ETypedElement(
49632 problem:LogicProblem, interpretation:PartialInterpretation,
49633 source: DefinedElement, target:DefinedElement)
49634{
49635 find interpretation(problem,interpretation);
49636 // The two endpoint of the link have to exist
49637 find mayExist(problem, interpretation, source);
49638 find mayExist(problem, interpretation, target);
49639 // Type consistency
49640 find mayInstanceOfETypedElement_class(problem,interpretation,source);
49641 BooleanElement(target);
49642 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
49643 // the upper bound of the multiplicity should be considered.
49644 numberOfExistingReferences == count find mustInRelationordered_attribute_ETypedElement(problem,interpretation,source,_);
49645 check(numberOfExistingReferences < 1);
49646} or {
49647 find mustInRelationordered_attribute_ETypedElement(problem,interpretation,source,target);
49648}
49649/**
49650 * Matcher for detecting tuples t where []unique attribute ETypedElement(source,target)
49651 */
49652private pattern mustInRelationunique_attribute_ETypedElement(
49653 problem:LogicProblem, interpretation:PartialInterpretation,
49654 source: DefinedElement, target:DefinedElement)
49655{
49656 find interpretation(problem,interpretation);
49657 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
49658 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"unique attribute ETypedElement");
49659 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
49660 BinaryElementRelationLink.param1(link,source);
49661 BinaryElementRelationLink.param2(link,target);
49662}
49663/**
49664 * Matcher for detecting tuples t where <>unique attribute ETypedElement(source,target)
49665 */
49666private pattern mayInRelationunique_attribute_ETypedElement(
49667 problem:LogicProblem, interpretation:PartialInterpretation,
49668 source: DefinedElement, target:DefinedElement)
49669{
49670 find interpretation(problem,interpretation);
49671 // The two endpoint of the link have to exist
49672 find mayExist(problem, interpretation, source);
49673 find mayExist(problem, interpretation, target);
49674 // Type consistency
49675 find mayInstanceOfETypedElement_class(problem,interpretation,source);
49676 BooleanElement(target);
49677 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
49678 // the upper bound of the multiplicity should be considered.
49679 numberOfExistingReferences == count find mustInRelationunique_attribute_ETypedElement(problem,interpretation,source,_);
49680 check(numberOfExistingReferences < 1);
49681} or {
49682 find mustInRelationunique_attribute_ETypedElement(problem,interpretation,source,target);
49683}
49684/**
49685 * Matcher for detecting tuples t where []lowerBound attribute ETypedElement(source,target)
49686 */
49687private pattern mustInRelationlowerBound_attribute_ETypedElement(
49688 problem:LogicProblem, interpretation:PartialInterpretation,
49689 source: DefinedElement, target:DefinedElement)
49690{
49691 find interpretation(problem,interpretation);
49692 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
49693 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"lowerBound attribute ETypedElement");
49694 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
49695 BinaryElementRelationLink.param1(link,source);
49696 BinaryElementRelationLink.param2(link,target);
49697}
49698/**
49699 * Matcher for detecting tuples t where <>lowerBound attribute ETypedElement(source,target)
49700 */
49701private pattern mayInRelationlowerBound_attribute_ETypedElement(
49702 problem:LogicProblem, interpretation:PartialInterpretation,
49703 source: DefinedElement, target:DefinedElement)
49704{
49705 find interpretation(problem,interpretation);
49706 // The two endpoint of the link have to exist
49707 find mayExist(problem, interpretation, source);
49708 find mayExist(problem, interpretation, target);
49709 // Type consistency
49710 find mayInstanceOfETypedElement_class(problem,interpretation,source);
49711 IntegerElement(target);
49712 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
49713 // the upper bound of the multiplicity should be considered.
49714 numberOfExistingReferences == count find mustInRelationlowerBound_attribute_ETypedElement(problem,interpretation,source,_);
49715 check(numberOfExistingReferences < 1);
49716} or {
49717 find mustInRelationlowerBound_attribute_ETypedElement(problem,interpretation,source,target);
49718}
49719/**
49720 * Matcher for detecting tuples t where []upperBound attribute ETypedElement(source,target)
49721 */
49722private pattern mustInRelationupperBound_attribute_ETypedElement(
49723 problem:LogicProblem, interpretation:PartialInterpretation,
49724 source: DefinedElement, target:DefinedElement)
49725{
49726 find interpretation(problem,interpretation);
49727 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
49728 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"upperBound attribute ETypedElement");
49729 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
49730 BinaryElementRelationLink.param1(link,source);
49731 BinaryElementRelationLink.param2(link,target);
49732}
49733/**
49734 * Matcher for detecting tuples t where <>upperBound attribute ETypedElement(source,target)
49735 */
49736private pattern mayInRelationupperBound_attribute_ETypedElement(
49737 problem:LogicProblem, interpretation:PartialInterpretation,
49738 source: DefinedElement, target:DefinedElement)
49739{
49740 find interpretation(problem,interpretation);
49741 // The two endpoint of the link have to exist
49742 find mayExist(problem, interpretation, source);
49743 find mayExist(problem, interpretation, target);
49744 // Type consistency
49745 find mayInstanceOfETypedElement_class(problem,interpretation,source);
49746 IntegerElement(target);
49747 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
49748 // the upper bound of the multiplicity should be considered.
49749 numberOfExistingReferences == count find mustInRelationupperBound_attribute_ETypedElement(problem,interpretation,source,_);
49750 check(numberOfExistingReferences < 1);
49751} or {
49752 find mustInRelationupperBound_attribute_ETypedElement(problem,interpretation,source,target);
49753}
49754/**
49755 * Matcher for detecting tuples t where []many attribute ETypedElement(source,target)
49756 */
49757private pattern mustInRelationmany_attribute_ETypedElement(
49758 problem:LogicProblem, interpretation:PartialInterpretation,
49759 source: DefinedElement, target:DefinedElement)
49760{
49761 find interpretation(problem,interpretation);
49762 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
49763 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"many attribute ETypedElement");
49764 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
49765 BinaryElementRelationLink.param1(link,source);
49766 BinaryElementRelationLink.param2(link,target);
49767}
49768/**
49769 * Matcher for detecting tuples t where <>many attribute ETypedElement(source,target)
49770 */
49771private pattern mayInRelationmany_attribute_ETypedElement(
49772 problem:LogicProblem, interpretation:PartialInterpretation,
49773 source: DefinedElement, target:DefinedElement)
49774{
49775 find interpretation(problem,interpretation);
49776 // The two endpoint of the link have to exist
49777 find mayExist(problem, interpretation, source);
49778 find mayExist(problem, interpretation, target);
49779 // Type consistency
49780 find mayInstanceOfETypedElement_class(problem,interpretation,source);
49781 BooleanElement(target);
49782 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
49783 // the upper bound of the multiplicity should be considered.
49784 numberOfExistingReferences == count find mustInRelationmany_attribute_ETypedElement(problem,interpretation,source,_);
49785 check(numberOfExistingReferences < 1);
49786} or {
49787 find mustInRelationmany_attribute_ETypedElement(problem,interpretation,source,target);
49788}
49789/**
49790 * Matcher for detecting tuples t where []required attribute ETypedElement(source,target)
49791 */
49792private pattern mustInRelationrequired_attribute_ETypedElement(
49793 problem:LogicProblem, interpretation:PartialInterpretation,
49794 source: DefinedElement, target:DefinedElement)
49795{
49796 find interpretation(problem,interpretation);
49797 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
49798 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"required attribute ETypedElement");
49799 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
49800 BinaryElementRelationLink.param1(link,source);
49801 BinaryElementRelationLink.param2(link,target);
49802}
49803/**
49804 * Matcher for detecting tuples t where <>required attribute ETypedElement(source,target)
49805 */
49806private pattern mayInRelationrequired_attribute_ETypedElement(
49807 problem:LogicProblem, interpretation:PartialInterpretation,
49808 source: DefinedElement, target:DefinedElement)
49809{
49810 find interpretation(problem,interpretation);
49811 // The two endpoint of the link have to exist
49812 find mayExist(problem, interpretation, source);
49813 find mayExist(problem, interpretation, target);
49814 // Type consistency
49815 find mayInstanceOfETypedElement_class(problem,interpretation,source);
49816 BooleanElement(target);
49817 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
49818 // the upper bound of the multiplicity should be considered.
49819 numberOfExistingReferences == count find mustInRelationrequired_attribute_ETypedElement(problem,interpretation,source,_);
49820 check(numberOfExistingReferences < 1);
49821} or {
49822 find mustInRelationrequired_attribute_ETypedElement(problem,interpretation,source,target);
49823}
49824/**
49825 * Matcher for detecting tuples t where []key attribute EStringToStringMapEntry(source,target)
49826 */
49827private pattern mustInRelationkey_attribute_EStringToStringMapEntry(
49828 problem:LogicProblem, interpretation:PartialInterpretation,
49829 source: DefinedElement, target:DefinedElement)
49830{
49831 find interpretation(problem,interpretation);
49832 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
49833 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"key attribute EStringToStringMapEntry");
49834 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
49835 BinaryElementRelationLink.param1(link,source);
49836 BinaryElementRelationLink.param2(link,target);
49837}
49838/**
49839 * Matcher for detecting tuples t where <>key attribute EStringToStringMapEntry(source,target)
49840 */
49841private pattern mayInRelationkey_attribute_EStringToStringMapEntry(
49842 problem:LogicProblem, interpretation:PartialInterpretation,
49843 source: DefinedElement, target:DefinedElement)
49844{
49845 find interpretation(problem,interpretation);
49846 // The two endpoint of the link have to exist
49847 find mayExist(problem, interpretation, source);
49848 find mayExist(problem, interpretation, target);
49849 // Type consistency
49850 find mayInstanceOfEStringToStringMapEntry_class(problem,interpretation,source);
49851 StringElement(target);
49852 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
49853 // the upper bound of the multiplicity should be considered.
49854 numberOfExistingReferences == count find mustInRelationkey_attribute_EStringToStringMapEntry(problem,interpretation,source,_);
49855 check(numberOfExistingReferences < 1);
49856} or {
49857 find mustInRelationkey_attribute_EStringToStringMapEntry(problem,interpretation,source,target);
49858}
49859/**
49860 * Matcher for detecting tuples t where []value attribute EStringToStringMapEntry(source,target)
49861 */
49862private pattern mustInRelationvalue_attribute_EStringToStringMapEntry(
49863 problem:LogicProblem, interpretation:PartialInterpretation,
49864 source: DefinedElement, target:DefinedElement)
49865{
49866 find interpretation(problem,interpretation);
49867 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
49868 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"value attribute EStringToStringMapEntry");
49869 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
49870 BinaryElementRelationLink.param1(link,source);
49871 BinaryElementRelationLink.param2(link,target);
49872}
49873/**
49874 * Matcher for detecting tuples t where <>value attribute EStringToStringMapEntry(source,target)
49875 */
49876private pattern mayInRelationvalue_attribute_EStringToStringMapEntry(
49877 problem:LogicProblem, interpretation:PartialInterpretation,
49878 source: DefinedElement, target:DefinedElement)
49879{
49880 find interpretation(problem,interpretation);
49881 // The two endpoint of the link have to exist
49882 find mayExist(problem, interpretation, source);
49883 find mayExist(problem, interpretation, target);
49884 // Type consistency
49885 find mayInstanceOfEStringToStringMapEntry_class(problem,interpretation,source);
49886 StringElement(target);
49887 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
49888 // the upper bound of the multiplicity should be considered.
49889 numberOfExistingReferences == count find mustInRelationvalue_attribute_EStringToStringMapEntry(problem,interpretation,source,_);
49890 check(numberOfExistingReferences < 1);
49891} or {
49892 find mustInRelationvalue_attribute_EStringToStringMapEntry(problem,interpretation,source,target);
49893}
49894
49895//////////
49896// 1.3 Relation Definition Indexers
49897//////////
49898
49899//////////
49900// 1.4 Containment Indexer
49901//////////
49902private pattern mustContains2(source: DefinedElement, target: DefinedElement) {
49903 find mustContains4(_,_,source,target);
49904}
49905
49906private pattern mustContains4(problem:LogicProblem, interpretation:PartialInterpretation,
49907 source: DefinedElement, target: DefinedElement)
49908 { find mustInRelationdetails_reference_EAnnotation(problem,interpretation,source,target); }or
49909
49910 { find mustInRelationcontents_reference_EAnnotation(problem,interpretation,source,target); }or
49911
49912 { find mustInRelationeOperations_reference_EClass(problem,interpretation,source,target); }or
49913
49914 { find mustInRelationeStructuralFeatures_reference_EClass(problem,interpretation,source,target); }or
49915
49916 { find mustInRelationeGenericSuperTypes_reference_EClass(problem,interpretation,source,target); }or
49917
49918 { find mustInRelationeTypeParameters_reference_EClassifier(problem,interpretation,source,target); }or
49919
49920 { find mustInRelationeLiterals_reference_EEnum(problem,interpretation,source,target); }or
49921
49922 { find mustInRelationeAnnotations_reference_EModelElement(problem,interpretation,source,target); }or
49923
49924 { find mustInRelationeTypeParameters_reference_EOperation(problem,interpretation,source,target); }or
49925
49926 { find mustInRelationeParameters_reference_EOperation(problem,interpretation,source,target); }or
49927
49928 { find mustInRelationeGenericExceptions_reference_EOperation(problem,interpretation,source,target); }or
49929
49930 { find mustInRelationeClassifiers_reference_EPackage(problem,interpretation,source,target); }or
49931
49932 { find mustInRelationeSubpackages_reference_EPackage(problem,interpretation,source,target); }or
49933
49934 { find mustInRelationeGenericType_reference_ETypedElement(problem,interpretation,source,target); }or
49935
49936 { find mustInRelationeUpperBound_reference_EGenericType(problem,interpretation,source,target); }or
49937
49938 { find mustInRelationeTypeArguments_reference_EGenericType(problem,interpretation,source,target); }or
49939
49940 { find mustInRelationeLowerBound_reference_EGenericType(problem,interpretation,source,target); }or
49941
49942 { find mustInRelationeBounds_reference_ETypeParameter(problem,interpretation,source,target); }
49943
49944private pattern mustTransitiveContains(source,target) {
49945 find mustContains2+(source,target);
49946}
49947
49948//////////
49949// 2. Invalidation Indexers
49950//////////
49951// 2.1 Invalidated by WF Queries
49952//////////
49953
49954//////////
49955// 3. Unfinishedness Indexers
49956//////////
49957// 3.1 Unfinishedness Measured by Multiplicity
49958//////////
49959pattern unfinishedLowerMultiplicity_eAttributeType_reference_EAttribute(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) {
49960 find interpretation(problem,interpretation);
49961 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
49962 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAttributeType reference EAttribute");
49963 find mustInstanceOfEAttribute_class(problem,interpretation,object);
49964 numberOfExistingReferences == count find mustInRelationeAttributeType_reference_EAttribute(problem,interpretation,object,_);
49965 check(numberOfExistingReferences < 1);
49966 missingMultiplicity == eval(1-numberOfExistingReferences);
49967}
49968pattern unfinishedLowerMultiplicity_eReferenceType_reference_EReference(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) {
49969 find interpretation(problem,interpretation);
49970 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
49971 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eReferenceType reference EReference");
49972 find mustInstanceOfEReference_class(problem,interpretation,object);
49973 numberOfExistingReferences == count find mustInRelationeReferenceType_reference_EReference(problem,interpretation,object,_);
49974 check(numberOfExistingReferences < 1);
49975 missingMultiplicity == eval(1-numberOfExistingReferences);
49976}
49977pattern unfinishedLowerMultiplicity_eRawType_reference_EGenericType(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) {
49978 find interpretation(problem,interpretation);
49979 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
49980 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eRawType reference EGenericType");
49981 find mustInstanceOfEGenericType_class(problem,interpretation,object);
49982 numberOfExistingReferences == count find mustInRelationeRawType_reference_EGenericType(problem,interpretation,object,_);
49983 check(numberOfExistingReferences < 1);
49984 missingMultiplicity == eval(1-numberOfExistingReferences);
49985}
49986
49987//////////
49988// 3.2 Unfinishedness Measured by WF Queries
49989//////////
49990
49991//////////
49992// 4. Refinement Indexers
49993//////////
49994// 4.1 Object constructors
49995//////////
49996private pattern hasElementInContainment(problem:LogicProblem, interpretation:PartialInterpretation)
49997{
49998 find interpretation(problem,interpretation);
49999 find mustInstanceOfEOperation_class(problem,interpretation,root);
50000 find mustExist(problem, interpretation, root);
50001}or{
50002 find interpretation(problem,interpretation);
50003 find mustInstanceOfENamedElement_class(problem,interpretation,root);
50004 find mustExist(problem, interpretation, root);
50005}or{
50006 find interpretation(problem,interpretation);
50007 find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,root);
50008 find mustExist(problem, interpretation, root);
50009}or{
50010 find interpretation(problem,interpretation);
50011 find mustInstanceOfEEnumLiteral_class(problem,interpretation,root);
50012 find mustExist(problem, interpretation, root);
50013}or{
50014 find interpretation(problem,interpretation);
50015 find mustInstanceOfEGenericType_class(problem,interpretation,root);
50016 find mustExist(problem, interpretation, root);
50017}or{
50018 find interpretation(problem,interpretation);
50019 find mustInstanceOfEObject_class(problem,interpretation,root);
50020 find mustExist(problem, interpretation, root);
50021}or{
50022 find interpretation(problem,interpretation);
50023 find mustInstanceOfEAttribute_class(problem,interpretation,root);
50024 find mustExist(problem, interpretation, root);
50025}or{
50026 find interpretation(problem,interpretation);
50027 find mustInstanceOfEPackage_class(problem,interpretation,root);
50028 find mustExist(problem, interpretation, root);
50029}or{
50030 find interpretation(problem,interpretation);
50031 find mustInstanceOfEParameter_class(problem,interpretation,root);
50032 find mustExist(problem, interpretation, root);
50033}or{
50034 find interpretation(problem,interpretation);
50035 find mustInstanceOfEDataType_class(problem,interpretation,root);
50036 find mustExist(problem, interpretation, root);
50037}or{
50038 find interpretation(problem,interpretation);
50039 find mustInstanceOfEClassifier_class(problem,interpretation,root);
50040 find mustExist(problem, interpretation, root);
50041}or{
50042 find interpretation(problem,interpretation);
50043 find mustInstanceOfEStructuralFeature_class(problem,interpretation,root);
50044 find mustExist(problem, interpretation, root);
50045}or{
50046 find interpretation(problem,interpretation);
50047 find mustInstanceOfEModelElement_class(problem,interpretation,root);
50048 find mustExist(problem, interpretation, root);
50049}or{
50050 find interpretation(problem,interpretation);
50051 find mustInstanceOfEAnnotation_class(problem,interpretation,root);
50052 find mustExist(problem, interpretation, root);
50053}or{
50054 find interpretation(problem,interpretation);
50055 find mustInstanceOfETypeParameter_class(problem,interpretation,root);
50056 find mustExist(problem, interpretation, root);
50057}or{
50058 find interpretation(problem,interpretation);
50059 find mustInstanceOfEReference_class(problem,interpretation,root);
50060 find mustExist(problem, interpretation, root);
50061}or{
50062 find interpretation(problem,interpretation);
50063 find mustInstanceOfEEnum_class(problem,interpretation,root);
50064 find mustExist(problem, interpretation, root);
50065}or{
50066 find interpretation(problem,interpretation);
50067 find mustInstanceOfETypedElement_class(problem,interpretation,root);
50068 find mustExist(problem, interpretation, root);
50069}or{
50070 find interpretation(problem,interpretation);
50071 find mustInstanceOfEClass_class(problem,interpretation,root);
50072 find mustExist(problem, interpretation, root);
50073}or{
50074 find interpretation(problem,interpretation);
50075 find mustInstanceOfEModelElement_class_DefinedPart(problem,interpretation,root);
50076 find mustExist(problem, interpretation, root);
50077}or{
50078 find interpretation(problem,interpretation);
50079 find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,root);
50080 find mustExist(problem, interpretation, root);
50081}or{
50082 find interpretation(problem,interpretation);
50083 find mustInstanceOfENamedElement_class_DefinedPart(problem,interpretation,root);
50084 find mustExist(problem, interpretation, root);
50085}or{
50086 find interpretation(problem,interpretation);
50087 find mustInstanceOfENamedElement_class_UndefinedPart(problem,interpretation,root);
50088 find mustExist(problem, interpretation, root);
50089}or{
50090 find interpretation(problem,interpretation);
50091 find mustInstanceOfEPackage_class_DefinedPart(problem,interpretation,root);
50092 find mustExist(problem, interpretation, root);
50093}or{
50094 find interpretation(problem,interpretation);
50095 find mustInstanceOfEPackage_class_UndefinedPart(problem,interpretation,root);
50096 find mustExist(problem, interpretation, root);
50097}
50098pattern createObject_EStringToStringMapEntry_class_by_details_reference_EAnnotation(
50099 problem:LogicProblem, interpretation:PartialInterpretation,
50100 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
50101 container:DefinedElement)
50102{
50103 find interpretation(problem,interpretation);
50104 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
50105 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EStringToStringMapEntry class");
50106 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
50107 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"details reference EAnnotation");
50108 find mustInstanceOfEAnnotation_class(problem,interpretation,container);
50109 find mayInstanceOfEStringToStringMapEntry_class(problem,interpretation,newObject);
50110 find mayInRelationdetails_reference_EAnnotation(problem,interpretation,container,newObject);
50111 find mustExist(problem, interpretation, container);
50112 neg find mustExist(problem, interpretation, newObject);
50113}
50114pattern createObject_EStringToStringMapEntry_class(
50115 problem:LogicProblem, interpretation:PartialInterpretation,
50116 typeInterpretation:PartialComplexTypeInterpretation)
50117{
50118 find interpretation(problem,interpretation);
50119 neg find hasElementInContainment(problem,interpretation);
50120 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
50121 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EStringToStringMapEntry class");
50122 find mayInstanceOfEStringToStringMapEntry_class(problem,interpretation,newObject);
50123 find mayExist(problem, interpretation, newObject);
50124 neg find mustExist(problem, interpretation, newObject);
50125}
50126pattern createObject_EGenericType_class_by_eGenericSuperTypes_reference_EClass(
50127 problem:LogicProblem, interpretation:PartialInterpretation,
50128 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
50129 container:DefinedElement)
50130{
50131 find interpretation(problem,interpretation);
50132 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
50133 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class");
50134 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
50135 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eGenericSuperTypes reference EClass");
50136 find mustInstanceOfEClass_class(problem,interpretation,container);
50137 find mayInstanceOfEGenericType_class(problem,interpretation,newObject);
50138 find mayInRelationeGenericSuperTypes_reference_EClass(problem,interpretation,container,newObject);
50139 find mustExist(problem, interpretation, container);
50140 neg find mustExist(problem, interpretation, newObject);
50141}
50142pattern createObject_EGenericType_class_by_eGenericExceptions_reference_EOperation(
50143 problem:LogicProblem, interpretation:PartialInterpretation,
50144 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
50145 container:DefinedElement)
50146{
50147 find interpretation(problem,interpretation);
50148 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
50149 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class");
50150 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
50151 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eGenericExceptions reference EOperation");
50152 find mustInstanceOfEOperation_class(problem,interpretation,container);
50153 find mayInstanceOfEGenericType_class(problem,interpretation,newObject);
50154 find mayInRelationeGenericExceptions_reference_EOperation(problem,interpretation,container,newObject);
50155 find mustExist(problem, interpretation, container);
50156 neg find mustExist(problem, interpretation, newObject);
50157}
50158pattern createObject_EGenericType_class_by_eGenericType_reference_ETypedElement(
50159 problem:LogicProblem, interpretation:PartialInterpretation,
50160 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
50161 container:DefinedElement)
50162{
50163 find interpretation(problem,interpretation);
50164 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
50165 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class");
50166 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
50167 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eGenericType reference ETypedElement");
50168 find mustInstanceOfETypedElement_class(problem,interpretation,container);
50169 find mayInstanceOfEGenericType_class(problem,interpretation,newObject);
50170 find mayInRelationeGenericType_reference_ETypedElement(problem,interpretation,container,newObject);
50171 find mustExist(problem, interpretation, container);
50172 neg find mustExist(problem, interpretation, newObject);
50173}
50174pattern createObject_EGenericType_class_by_eUpperBound_reference_EGenericType(
50175 problem:LogicProblem, interpretation:PartialInterpretation,
50176 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
50177 container:DefinedElement)
50178{
50179 find interpretation(problem,interpretation);
50180 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
50181 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class");
50182 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
50183 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eUpperBound reference EGenericType");
50184 find mustInstanceOfEGenericType_class(problem,interpretation,container);
50185 find mayInstanceOfEGenericType_class(problem,interpretation,newObject);
50186 find mayInRelationeUpperBound_reference_EGenericType(problem,interpretation,container,newObject);
50187 find mustExist(problem, interpretation, container);
50188 neg find mustExist(problem, interpretation, newObject);
50189}
50190pattern createObject_EGenericType_class_by_eTypeArguments_reference_EGenericType(
50191 problem:LogicProblem, interpretation:PartialInterpretation,
50192 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
50193 container:DefinedElement)
50194{
50195 find interpretation(problem,interpretation);
50196 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
50197 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class");
50198 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
50199 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eTypeArguments reference EGenericType");
50200 find mustInstanceOfEGenericType_class(problem,interpretation,container);
50201 find mayInstanceOfEGenericType_class(problem,interpretation,newObject);
50202 find mayInRelationeTypeArguments_reference_EGenericType(problem,interpretation,container,newObject);
50203 find mustExist(problem, interpretation, container);
50204 neg find mustExist(problem, interpretation, newObject);
50205}
50206pattern createObject_EGenericType_class_by_eLowerBound_reference_EGenericType(
50207 problem:LogicProblem, interpretation:PartialInterpretation,
50208 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
50209 container:DefinedElement)
50210{
50211 find interpretation(problem,interpretation);
50212 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
50213 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class");
50214 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
50215 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eLowerBound reference EGenericType");
50216 find mustInstanceOfEGenericType_class(problem,interpretation,container);
50217 find mayInstanceOfEGenericType_class(problem,interpretation,newObject);
50218 find mayInRelationeLowerBound_reference_EGenericType(problem,interpretation,container,newObject);
50219 find mustExist(problem, interpretation, container);
50220 neg find mustExist(problem, interpretation, newObject);
50221}
50222pattern createObject_EGenericType_class_by_eBounds_reference_ETypeParameter(
50223 problem:LogicProblem, interpretation:PartialInterpretation,
50224 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
50225 container:DefinedElement)
50226{
50227 find interpretation(problem,interpretation);
50228 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
50229 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class");
50230 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
50231 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eBounds reference ETypeParameter");
50232 find mustInstanceOfETypeParameter_class(problem,interpretation,container);
50233 find mayInstanceOfEGenericType_class(problem,interpretation,newObject);
50234 find mayInRelationeBounds_reference_ETypeParameter(problem,interpretation,container,newObject);
50235 find mustExist(problem, interpretation, container);
50236 neg find mustExist(problem, interpretation, newObject);
50237}
50238pattern createObject_EGenericType_class(
50239 problem:LogicProblem, interpretation:PartialInterpretation,
50240 typeInterpretation:PartialComplexTypeInterpretation)
50241{
50242 find interpretation(problem,interpretation);
50243 neg find hasElementInContainment(problem,interpretation);
50244 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
50245 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class");
50246 find mayInstanceOfEGenericType_class(problem,interpretation,newObject);
50247 find mayExist(problem, interpretation, newObject);
50248 neg find mustExist(problem, interpretation, newObject);
50249}
50250pattern createObject_EEnumLiteral_class_by_eLiterals_reference_EEnum_with_eEnum_reference_EEnumLiteral(
50251 problem:LogicProblem, interpretation:PartialInterpretation,
50252 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
50253 container:DefinedElement)
50254{
50255 find interpretation(problem,interpretation);
50256 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
50257 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EEnumLiteral class");
50258 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
50259 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eLiterals reference EEnum");
50260 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
50261 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"eEnum reference EEnumLiteral");
50262 find mustInstanceOfEEnum_class(problem,interpretation,container);
50263 find mayInstanceOfEEnumLiteral_class(problem,interpretation,newObject);
50264 find mayInRelationeLiterals_reference_EEnum(problem,interpretation,container,newObject);
50265 find mustExist(problem, interpretation, container);
50266 neg find mustExist(problem, interpretation, newObject);
50267}
50268pattern createObject_EEnumLiteral_class(
50269 problem:LogicProblem, interpretation:PartialInterpretation,
50270 typeInterpretation:PartialComplexTypeInterpretation)
50271{
50272 find interpretation(problem,interpretation);
50273 neg find hasElementInContainment(problem,interpretation);
50274 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
50275 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EEnumLiteral class");
50276 find mayInstanceOfEEnumLiteral_class(problem,interpretation,newObject);
50277 find mayExist(problem, interpretation, newObject);
50278 neg find mustExist(problem, interpretation, newObject);
50279}
50280pattern createObject_ETypeParameter_class_by_eTypeParameters_reference_EClassifier(
50281 problem:LogicProblem, interpretation:PartialInterpretation,
50282 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
50283 container:DefinedElement)
50284{
50285 find interpretation(problem,interpretation);
50286 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
50287 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"ETypeParameter class");
50288 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
50289 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eTypeParameters reference EClassifier");
50290 find mustInstanceOfEClassifier_class(problem,interpretation,container);
50291 find mayInstanceOfETypeParameter_class(problem,interpretation,newObject);
50292 find mayInRelationeTypeParameters_reference_EClassifier(problem,interpretation,container,newObject);
50293 find mustExist(problem, interpretation, container);
50294 neg find mustExist(problem, interpretation, newObject);
50295}
50296pattern createObject_ETypeParameter_class_by_eTypeParameters_reference_EOperation(
50297 problem:LogicProblem, interpretation:PartialInterpretation,
50298 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
50299 container:DefinedElement)
50300{
50301 find interpretation(problem,interpretation);
50302 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
50303 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"ETypeParameter class");
50304 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
50305 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eTypeParameters reference EOperation");
50306 find mustInstanceOfEOperation_class(problem,interpretation,container);
50307 find mayInstanceOfETypeParameter_class(problem,interpretation,newObject);
50308 find mayInRelationeTypeParameters_reference_EOperation(problem,interpretation,container,newObject);
50309 find mustExist(problem, interpretation, container);
50310 neg find mustExist(problem, interpretation, newObject);
50311}
50312pattern createObject_ETypeParameter_class(
50313 problem:LogicProblem, interpretation:PartialInterpretation,
50314 typeInterpretation:PartialComplexTypeInterpretation)
50315{
50316 find interpretation(problem,interpretation);
50317 neg find hasElementInContainment(problem,interpretation);
50318 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
50319 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"ETypeParameter class");
50320 find mayInstanceOfETypeParameter_class(problem,interpretation,newObject);
50321 find mayExist(problem, interpretation, newObject);
50322 neg find mustExist(problem, interpretation, newObject);
50323}
50324pattern createObject_EAttribute_class_by_eStructuralFeatures_reference_EClass_with_eContainingClass_reference_EStructuralFeature(
50325 problem:LogicProblem, interpretation:PartialInterpretation,
50326 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
50327 container:DefinedElement)
50328{
50329 find interpretation(problem,interpretation);
50330 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
50331 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EAttribute class");
50332 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
50333 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eStructuralFeatures reference EClass");
50334 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
50335 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"eContainingClass reference EStructuralFeature");
50336 find mustInstanceOfEClass_class(problem,interpretation,container);
50337 find mayInstanceOfEAttribute_class(problem,interpretation,newObject);
50338 find mayInRelationeStructuralFeatures_reference_EClass(problem,interpretation,container,newObject);
50339 find mustExist(problem, interpretation, container);
50340 neg find mustExist(problem, interpretation, newObject);
50341}
50342pattern createObject_EAttribute_class(
50343 problem:LogicProblem, interpretation:PartialInterpretation,
50344 typeInterpretation:PartialComplexTypeInterpretation)
50345{
50346 find interpretation(problem,interpretation);
50347 neg find hasElementInContainment(problem,interpretation);
50348 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
50349 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EAttribute class");
50350 find mayInstanceOfEAttribute_class(problem,interpretation,newObject);
50351 find mayExist(problem, interpretation, newObject);
50352 neg find mustExist(problem, interpretation, newObject);
50353}
50354pattern createObject_EClass_class_by_eClassifiers_reference_EPackage_with_ePackage_reference_EClassifier(
50355 problem:LogicProblem, interpretation:PartialInterpretation,
50356 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
50357 container:DefinedElement)
50358{
50359 find interpretation(problem,interpretation);
50360 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
50361 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EClass class");
50362 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
50363 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eClassifiers reference EPackage");
50364 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
50365 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"ePackage reference EClassifier");
50366 find mustInstanceOfEPackage_class(problem,interpretation,container);
50367 find mayInstanceOfEClass_class(problem,interpretation,newObject);
50368 find mayInRelationeClassifiers_reference_EPackage(problem,interpretation,container,newObject);
50369 find mustExist(problem, interpretation, container);
50370 neg find mustExist(problem, interpretation, newObject);
50371}
50372pattern createObject_EClass_class(
50373 problem:LogicProblem, interpretation:PartialInterpretation,
50374 typeInterpretation:PartialComplexTypeInterpretation)
50375{
50376 find interpretation(problem,interpretation);
50377 neg find hasElementInContainment(problem,interpretation);
50378 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
50379 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EClass class");
50380 find mayInstanceOfEClass_class(problem,interpretation,newObject);
50381 find mayExist(problem, interpretation, newObject);
50382 neg find mustExist(problem, interpretation, newObject);
50383}
50384pattern createObject_EDataType_class_by_eClassifiers_reference_EPackage_with_ePackage_reference_EClassifier(
50385 problem:LogicProblem, interpretation:PartialInterpretation,
50386 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
50387 container:DefinedElement)
50388{
50389 find interpretation(problem,interpretation);
50390 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
50391 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EDataType class");
50392 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
50393 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eClassifiers reference EPackage");
50394 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
50395 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"ePackage reference EClassifier");
50396 find mustInstanceOfEPackage_class(problem,interpretation,container);
50397 find mayInstanceOfEDataType_class(problem,interpretation,newObject);
50398 find mayInRelationeClassifiers_reference_EPackage(problem,interpretation,container,newObject);
50399 find mustExist(problem, interpretation, container);
50400 neg find mustExist(problem, interpretation, newObject);
50401}
50402pattern createObject_EDataType_class(
50403 problem:LogicProblem, interpretation:PartialInterpretation,
50404 typeInterpretation:PartialComplexTypeInterpretation)
50405{
50406 find interpretation(problem,interpretation);
50407 neg find hasElementInContainment(problem,interpretation);
50408 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
50409 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EDataType class");
50410 find mayInstanceOfEDataType_class(problem,interpretation,newObject);
50411 find mayExist(problem, interpretation, newObject);
50412 neg find mustExist(problem, interpretation, newObject);
50413}
50414pattern createObject_EOperation_class_by_eOperations_reference_EClass_with_eContainingClass_reference_EOperation(
50415 problem:LogicProblem, interpretation:PartialInterpretation,
50416 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
50417 container:DefinedElement)
50418{
50419 find interpretation(problem,interpretation);
50420 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
50421 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EOperation class");
50422 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
50423 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eOperations reference EClass");
50424 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
50425 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"eContainingClass reference EOperation");
50426 find mustInstanceOfEClass_class(problem,interpretation,container);
50427 find mayInstanceOfEOperation_class(problem,interpretation,newObject);
50428 find mayInRelationeOperations_reference_EClass(problem,interpretation,container,newObject);
50429 find mustExist(problem, interpretation, container);
50430 neg find mustExist(problem, interpretation, newObject);
50431}
50432pattern createObject_EOperation_class(
50433 problem:LogicProblem, interpretation:PartialInterpretation,
50434 typeInterpretation:PartialComplexTypeInterpretation)
50435{
50436 find interpretation(problem,interpretation);
50437 neg find hasElementInContainment(problem,interpretation);
50438 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
50439 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EOperation class");
50440 find mayInstanceOfEOperation_class(problem,interpretation,newObject);
50441 find mayExist(problem, interpretation, newObject);
50442 neg find mustExist(problem, interpretation, newObject);
50443}
50444pattern createObject_EAnnotation_class_by_eAnnotations_reference_EModelElement_with_eModelElement_reference_EAnnotation(
50445 problem:LogicProblem, interpretation:PartialInterpretation,
50446 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
50447 container:DefinedElement)
50448{
50449 find interpretation(problem,interpretation);
50450 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
50451 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EAnnotation class");
50452 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
50453 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eAnnotations reference EModelElement");
50454 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
50455 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"eModelElement reference EAnnotation");
50456 find mustInstanceOfEModelElement_class(problem,interpretation,container);
50457 find mayInstanceOfEAnnotation_class(problem,interpretation,newObject);
50458 find mayInRelationeAnnotations_reference_EModelElement(problem,interpretation,container,newObject);
50459 find mustExist(problem, interpretation, container);
50460 neg find mustExist(problem, interpretation, newObject);
50461}
50462pattern createObject_EAnnotation_class(
50463 problem:LogicProblem, interpretation:PartialInterpretation,
50464 typeInterpretation:PartialComplexTypeInterpretation)
50465{
50466 find interpretation(problem,interpretation);
50467 neg find hasElementInContainment(problem,interpretation);
50468 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
50469 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EAnnotation class");
50470 find mayInstanceOfEAnnotation_class(problem,interpretation,newObject);
50471 find mayExist(problem, interpretation, newObject);
50472 neg find mustExist(problem, interpretation, newObject);
50473}
50474pattern createObject_EParameter_class_by_eParameters_reference_EOperation_with_eOperation_reference_EParameter(
50475 problem:LogicProblem, interpretation:PartialInterpretation,
50476 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
50477 container:DefinedElement)
50478{
50479 find interpretation(problem,interpretation);
50480 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
50481 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EParameter class");
50482 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
50483 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eParameters reference EOperation");
50484 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
50485 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"eOperation reference EParameter");
50486 find mustInstanceOfEOperation_class(problem,interpretation,container);
50487 find mayInstanceOfEParameter_class(problem,interpretation,newObject);
50488 find mayInRelationeParameters_reference_EOperation(problem,interpretation,container,newObject);
50489 find mustExist(problem, interpretation, container);
50490 neg find mustExist(problem, interpretation, newObject);
50491}
50492pattern createObject_EParameter_class(
50493 problem:LogicProblem, interpretation:PartialInterpretation,
50494 typeInterpretation:PartialComplexTypeInterpretation)
50495{
50496 find interpretation(problem,interpretation);
50497 neg find hasElementInContainment(problem,interpretation);
50498 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
50499 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EParameter class");
50500 find mayInstanceOfEParameter_class(problem,interpretation,newObject);
50501 find mayExist(problem, interpretation, newObject);
50502 neg find mustExist(problem, interpretation, newObject);
50503}
50504pattern createObject_EObject_class_by_contents_reference_EAnnotation(
50505 problem:LogicProblem, interpretation:PartialInterpretation,
50506 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
50507 container:DefinedElement)
50508{
50509 find interpretation(problem,interpretation);
50510 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
50511 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EObject class");
50512 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
50513 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"contents reference EAnnotation");
50514 find mustInstanceOfEAnnotation_class(problem,interpretation,container);
50515 find mayInstanceOfEObject_class(problem,interpretation,newObject);
50516 find mayInRelationcontents_reference_EAnnotation(problem,interpretation,container,newObject);
50517 find mustExist(problem, interpretation, container);
50518 neg find mustExist(problem, interpretation, newObject);
50519}
50520pattern createObject_EObject_class(
50521 problem:LogicProblem, interpretation:PartialInterpretation,
50522 typeInterpretation:PartialComplexTypeInterpretation)
50523{
50524 find interpretation(problem,interpretation);
50525 neg find hasElementInContainment(problem,interpretation);
50526 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
50527 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EObject class");
50528 find mayInstanceOfEObject_class(problem,interpretation,newObject);
50529 find mayExist(problem, interpretation, newObject);
50530 neg find mustExist(problem, interpretation, newObject);
50531}
50532pattern createObject_EReference_class_by_eStructuralFeatures_reference_EClass_with_eContainingClass_reference_EStructuralFeature(
50533 problem:LogicProblem, interpretation:PartialInterpretation,
50534 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
50535 container:DefinedElement)
50536{
50537 find interpretation(problem,interpretation);
50538 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
50539 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EReference class");
50540 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
50541 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eStructuralFeatures reference EClass");
50542 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
50543 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"eContainingClass reference EStructuralFeature");
50544 find mustInstanceOfEClass_class(problem,interpretation,container);
50545 find mayInstanceOfEReference_class(problem,interpretation,newObject);
50546 find mayInRelationeStructuralFeatures_reference_EClass(problem,interpretation,container,newObject);
50547 find mustExist(problem, interpretation, container);
50548 neg find mustExist(problem, interpretation, newObject);
50549}
50550pattern createObject_EReference_class(
50551 problem:LogicProblem, interpretation:PartialInterpretation,
50552 typeInterpretation:PartialComplexTypeInterpretation)
50553{
50554 find interpretation(problem,interpretation);
50555 neg find hasElementInContainment(problem,interpretation);
50556 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
50557 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EReference class");
50558 find mayInstanceOfEReference_class(problem,interpretation,newObject);
50559 find mayExist(problem, interpretation, newObject);
50560 neg find mustExist(problem, interpretation, newObject);
50561}
50562pattern createObject_EEnum_class_by_eClassifiers_reference_EPackage_with_ePackage_reference_EClassifier(
50563 problem:LogicProblem, interpretation:PartialInterpretation,
50564 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
50565 container:DefinedElement)
50566{
50567 find interpretation(problem,interpretation);
50568 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
50569 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EEnum class");
50570 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
50571 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eClassifiers reference EPackage");
50572 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
50573 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"ePackage reference EClassifier");
50574 find mustInstanceOfEPackage_class(problem,interpretation,container);
50575 find mayInstanceOfEEnum_class(problem,interpretation,newObject);
50576 find mayInRelationeClassifiers_reference_EPackage(problem,interpretation,container,newObject);
50577 find mustExist(problem, interpretation, container);
50578 neg find mustExist(problem, interpretation, newObject);
50579}
50580pattern createObject_EEnum_class(
50581 problem:LogicProblem, interpretation:PartialInterpretation,
50582 typeInterpretation:PartialComplexTypeInterpretation)
50583{
50584 find interpretation(problem,interpretation);
50585 neg find hasElementInContainment(problem,interpretation);
50586 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
50587 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EEnum class");
50588 find mayInstanceOfEEnum_class(problem,interpretation,newObject);
50589 find mayExist(problem, interpretation, newObject);
50590 neg find mustExist(problem, interpretation, newObject);
50591}
50592pattern createObject_EPackage_class_UndefinedPart_by_eSubpackages_reference_EPackage_with_eSuperPackage_reference_EPackage(
50593 problem:LogicProblem, interpretation:PartialInterpretation,
50594 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
50595 container:DefinedElement)
50596{
50597 find interpretation(problem,interpretation);
50598 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
50599 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EPackage class UndefinedPart");
50600 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
50601 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eSubpackages reference EPackage");
50602 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
50603 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"eSuperPackage reference EPackage");
50604 find mustInstanceOfEPackage_class(problem,interpretation,container);
50605 find mayInstanceOfEPackage_class_UndefinedPart(problem,interpretation,newObject);
50606 find mayInRelationeSubpackages_reference_EPackage(problem,interpretation,container,newObject);
50607 find mustExist(problem, interpretation, container);
50608 neg find mustExist(problem, interpretation, newObject);
50609}
50610pattern createObject_EPackage_class_UndefinedPart(
50611 problem:LogicProblem, interpretation:PartialInterpretation,
50612 typeInterpretation:PartialComplexTypeInterpretation)
50613{
50614 find interpretation(problem,interpretation);
50615 neg find hasElementInContainment(problem,interpretation);
50616 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
50617 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EPackage class UndefinedPart");
50618 find mayInstanceOfEPackage_class_UndefinedPart(problem,interpretation,newObject);
50619 find mayExist(problem, interpretation, newObject);
50620 neg find mustExist(problem, interpretation, newObject);
50621}
50622
50623//////////
50624// 4.2 Type refinement
50625//////////
50626pattern refineTypeTo_EStringToStringMapEntry_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
50627 find interpretation(problem,interpretation);
50628 PartialInterpretation.newElements(interpretation,element);
50629 find mayInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
50630 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
50631 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
50632 neg find mustInstanceOfEModelElement_class(problem,interpretation,element);
50633 neg find mustInstanceOfEObject_class(problem,interpretation,element);
50634}
50635pattern refineTypeTo_EGenericType_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
50636 find interpretation(problem,interpretation);
50637 PartialInterpretation.newElements(interpretation,element);
50638 find mayInstanceOfEGenericType_class(problem,interpretation,element);
50639 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
50640 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
50641 neg find mustInstanceOfEModelElement_class(problem,interpretation,element);
50642 neg find mustInstanceOfEObject_class(problem,interpretation,element);
50643}
50644pattern refineTypeTo_EEnumLiteral_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
50645 find interpretation(problem,interpretation);
50646 PartialInterpretation.newElements(interpretation,element);
50647 find mayInstanceOfEEnumLiteral_class(problem,interpretation,element);
50648 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
50649 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
50650 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
50651 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
50652 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
50653 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
50654 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
50655 neg find mustInstanceOfEObject_class(problem,interpretation,element);
50656 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
50657}
50658pattern refineTypeTo_ETypeParameter_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
50659 find interpretation(problem,interpretation);
50660 PartialInterpretation.newElements(interpretation,element);
50661 find mayInstanceOfETypeParameter_class(problem,interpretation,element);
50662 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
50663 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
50664 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
50665 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
50666 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
50667 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
50668 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
50669 neg find mustInstanceOfEObject_class(problem,interpretation,element);
50670 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
50671}
50672pattern refineTypeTo_EAttribute_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
50673 find interpretation(problem,interpretation);
50674 PartialInterpretation.newElements(interpretation,element);
50675 find mayInstanceOfEAttribute_class(problem,interpretation,element);
50676 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
50677 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
50678 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
50679 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
50680 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
50681 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
50682 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
50683 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
50684 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
50685 neg find mustInstanceOfEObject_class(problem,interpretation,element);
50686 neg find mustInstanceOfEReference_class(problem,interpretation,element);
50687 neg find mustInstanceOfEAttribute_class(problem,interpretation,element);
50688}
50689pattern refineTypeTo_EClass_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
50690 find interpretation(problem,interpretation);
50691 PartialInterpretation.newElements(interpretation,element);
50692 find mayInstanceOfEClass_class(problem,interpretation,element);
50693 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
50694 neg find mustInstanceOfEDataType_class(problem,interpretation,element);
50695 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
50696 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
50697 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
50698 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
50699 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
50700 neg find mustInstanceOfEObject_class(problem,interpretation,element);
50701 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
50702 neg find mustInstanceOfEClass_class(problem,interpretation,element);
50703}
50704pattern refineTypeTo_EDataType_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
50705 find interpretation(problem,interpretation);
50706 PartialInterpretation.newElements(interpretation,element);
50707 find mayInstanceOfEDataType_class(problem,interpretation,element);
50708 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
50709 neg find mustInstanceOfEDataType_class(problem,interpretation,element);
50710 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
50711 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
50712 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
50713 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
50714 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
50715 neg find mustInstanceOfEObject_class(problem,interpretation,element);
50716 neg find mustInstanceOfEEnum_class(problem,interpretation,element);
50717 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
50718 neg find mustInstanceOfEClass_class(problem,interpretation,element);
50719}
50720pattern refineTypeTo_EOperation_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
50721 find interpretation(problem,interpretation);
50722 PartialInterpretation.newElements(interpretation,element);
50723 find mayInstanceOfEOperation_class(problem,interpretation,element);
50724 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
50725 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
50726 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
50727 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
50728 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
50729 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
50730 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
50731 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
50732 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
50733 neg find mustInstanceOfEObject_class(problem,interpretation,element);
50734 neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element);
50735}
50736pattern refineTypeTo_EAnnotation_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
50737 find interpretation(problem,interpretation);
50738 PartialInterpretation.newElements(interpretation,element);
50739 find mayInstanceOfEAnnotation_class(problem,interpretation,element);
50740 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
50741 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
50742 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
50743 neg find mustInstanceOfEObject_class(problem,interpretation,element);
50744 neg find mustInstanceOfENamedElement_class(problem,interpretation,element);
50745}
50746pattern refineTypeTo_EParameter_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
50747 find interpretation(problem,interpretation);
50748 PartialInterpretation.newElements(interpretation,element);
50749 find mayInstanceOfEParameter_class(problem,interpretation,element);
50750 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
50751 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
50752 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
50753 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
50754 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
50755 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
50756 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
50757 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
50758 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
50759 neg find mustInstanceOfEObject_class(problem,interpretation,element);
50760 neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element);
50761}
50762pattern refineTypeTo_EObject_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
50763 find interpretation(problem,interpretation);
50764 PartialInterpretation.newElements(interpretation,element);
50765 find mayInstanceOfEObject_class(problem,interpretation,element);
50766 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
50767 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
50768 neg find mustInstanceOfEModelElement_class(problem,interpretation,element);
50769 neg find mustInstanceOfEObject_class(problem,interpretation,element);
50770}
50771pattern refineTypeTo_EReference_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
50772 find interpretation(problem,interpretation);
50773 PartialInterpretation.newElements(interpretation,element);
50774 find mayInstanceOfEReference_class(problem,interpretation,element);
50775 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
50776 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
50777 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
50778 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
50779 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
50780 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
50781 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
50782 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
50783 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
50784 neg find mustInstanceOfEObject_class(problem,interpretation,element);
50785 neg find mustInstanceOfEReference_class(problem,interpretation,element);
50786 neg find mustInstanceOfEAttribute_class(problem,interpretation,element);
50787}
50788pattern refineTypeTo_EEnum_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
50789 find interpretation(problem,interpretation);
50790 PartialInterpretation.newElements(interpretation,element);
50791 find mayInstanceOfEEnum_class(problem,interpretation,element);
50792 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
50793 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
50794 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
50795 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
50796 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
50797 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
50798 neg find mustInstanceOfEObject_class(problem,interpretation,element);
50799 neg find mustInstanceOfEEnum_class(problem,interpretation,element);
50800 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
50801 neg find mustInstanceOfEClass_class(problem,interpretation,element);
50802}
50803pattern refineTypeTo_EPackage_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
50804 find interpretation(problem,interpretation);
50805 PartialInterpretation.newElements(interpretation,element);
50806 find mayInstanceOfEPackage_class_UndefinedPart(problem,interpretation,element);
50807 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
50808 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
50809 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
50810 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
50811 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
50812 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
50813 neg find mustInstanceOfEObject_class(problem,interpretation,element);
50814 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
50815 neg find mustInstanceOfEPackage_class_UndefinedPart(problem,interpretation,element);
50816}
50817
50818//////////
50819// 4.3 Relation refinement
50820//////////
50821pattern refineRelation_eAttributeType_reference_EAttribute(
50822 problem:LogicProblem, interpretation:PartialInterpretation,
50823 relationIterpretation:PartialRelationInterpretation,
50824 from: DefinedElement, to: DefinedElement)
50825{
50826 find interpretation(problem,interpretation);
50827 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
50828 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAttributeType reference EAttribute");
50829 find mustExist(problem, interpretation, from);
50830 find mustExist(problem, interpretation, to);
50831 find mustInstanceOfEAttribute_class(problem,interpretation,from);
50832 find mustInstanceOfEDataType_class(problem,interpretation,to);
50833 find mayInRelationeAttributeType_reference_EAttribute(problem,interpretation,from,to);
50834 neg find mustInRelationeAttributeType_reference_EAttribute(problem,interpretation,from,to);
50835}
50836pattern refineRelation_references_reference_EAnnotation(
50837 problem:LogicProblem, interpretation:PartialInterpretation,
50838 relationIterpretation:PartialRelationInterpretation,
50839 from: DefinedElement, to: DefinedElement)
50840{
50841 find interpretation(problem,interpretation);
50842 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
50843 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"references reference EAnnotation");
50844 find mustExist(problem, interpretation, from);
50845 find mustExist(problem, interpretation, to);
50846 find mustInstanceOfEAnnotation_class(problem,interpretation,from);
50847 find mustInstanceOfEObject_class(problem,interpretation,to);
50848 find mayInRelationreferences_reference_EAnnotation(problem,interpretation,from,to);
50849 neg find mustInRelationreferences_reference_EAnnotation(problem,interpretation,from,to);
50850}
50851pattern refineRelation_eSuperTypes_reference_EClass(
50852 problem:LogicProblem, interpretation:PartialInterpretation,
50853 relationIterpretation:PartialRelationInterpretation,
50854 from: DefinedElement, to: DefinedElement)
50855{
50856 find interpretation(problem,interpretation);
50857 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
50858 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eSuperTypes reference EClass");
50859 find mustExist(problem, interpretation, from);
50860 find mustExist(problem, interpretation, to);
50861 find mustInstanceOfEClass_class(problem,interpretation,from);
50862 find mustInstanceOfEClass_class(problem,interpretation,to);
50863 find mayInRelationeSuperTypes_reference_EClass(problem,interpretation,from,to);
50864 neg find mustInRelationeSuperTypes_reference_EClass(problem,interpretation,from,to);
50865}
50866pattern refineRelation_eAllAttributes_reference_EClass(
50867 problem:LogicProblem, interpretation:PartialInterpretation,
50868 relationIterpretation:PartialRelationInterpretation,
50869 from: DefinedElement, to: DefinedElement)
50870{
50871 find interpretation(problem,interpretation);
50872 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
50873 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllAttributes reference EClass");
50874 find mustExist(problem, interpretation, from);
50875 find mustExist(problem, interpretation, to);
50876 find mustInstanceOfEClass_class(problem,interpretation,from);
50877 find mustInstanceOfEAttribute_class(problem,interpretation,to);
50878 find mayInRelationeAllAttributes_reference_EClass(problem,interpretation,from,to);
50879 neg find mustInRelationeAllAttributes_reference_EClass(problem,interpretation,from,to);
50880}
50881pattern refineRelation_eAllReferences_reference_EClass(
50882 problem:LogicProblem, interpretation:PartialInterpretation,
50883 relationIterpretation:PartialRelationInterpretation,
50884 from: DefinedElement, to: DefinedElement)
50885{
50886 find interpretation(problem,interpretation);
50887 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
50888 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllReferences reference EClass");
50889 find mustExist(problem, interpretation, from);
50890 find mustExist(problem, interpretation, to);
50891 find mustInstanceOfEClass_class(problem,interpretation,from);
50892 find mustInstanceOfEReference_class(problem,interpretation,to);
50893 find mayInRelationeAllReferences_reference_EClass(problem,interpretation,from,to);
50894 neg find mustInRelationeAllReferences_reference_EClass(problem,interpretation,from,to);
50895}
50896pattern refineRelation_eReferences_reference_EClass(
50897 problem:LogicProblem, interpretation:PartialInterpretation,
50898 relationIterpretation:PartialRelationInterpretation,
50899 from: DefinedElement, to: DefinedElement)
50900{
50901 find interpretation(problem,interpretation);
50902 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
50903 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eReferences reference EClass");
50904 find mustExist(problem, interpretation, from);
50905 find mustExist(problem, interpretation, to);
50906 find mustInstanceOfEClass_class(problem,interpretation,from);
50907 find mustInstanceOfEReference_class(problem,interpretation,to);
50908 find mayInRelationeReferences_reference_EClass(problem,interpretation,from,to);
50909 neg find mustInRelationeReferences_reference_EClass(problem,interpretation,from,to);
50910}
50911pattern refineRelation_eAttributes_reference_EClass(
50912 problem:LogicProblem, interpretation:PartialInterpretation,
50913 relationIterpretation:PartialRelationInterpretation,
50914 from: DefinedElement, to: DefinedElement)
50915{
50916 find interpretation(problem,interpretation);
50917 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
50918 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAttributes reference EClass");
50919 find mustExist(problem, interpretation, from);
50920 find mustExist(problem, interpretation, to);
50921 find mustInstanceOfEClass_class(problem,interpretation,from);
50922 find mustInstanceOfEAttribute_class(problem,interpretation,to);
50923 find mayInRelationeAttributes_reference_EClass(problem,interpretation,from,to);
50924 neg find mustInRelationeAttributes_reference_EClass(problem,interpretation,from,to);
50925}
50926pattern refineRelation_eAllContainments_reference_EClass(
50927 problem:LogicProblem, interpretation:PartialInterpretation,
50928 relationIterpretation:PartialRelationInterpretation,
50929 from: DefinedElement, to: DefinedElement)
50930{
50931 find interpretation(problem,interpretation);
50932 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
50933 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllContainments reference EClass");
50934 find mustExist(problem, interpretation, from);
50935 find mustExist(problem, interpretation, to);
50936 find mustInstanceOfEClass_class(problem,interpretation,from);
50937 find mustInstanceOfEReference_class(problem,interpretation,to);
50938 find mayInRelationeAllContainments_reference_EClass(problem,interpretation,from,to);
50939 neg find mustInRelationeAllContainments_reference_EClass(problem,interpretation,from,to);
50940}
50941pattern refineRelation_eAllOperations_reference_EClass(
50942 problem:LogicProblem, interpretation:PartialInterpretation,
50943 relationIterpretation:PartialRelationInterpretation,
50944 from: DefinedElement, to: DefinedElement)
50945{
50946 find interpretation(problem,interpretation);
50947 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
50948 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllOperations reference EClass");
50949 find mustExist(problem, interpretation, from);
50950 find mustExist(problem, interpretation, to);
50951 find mustInstanceOfEClass_class(problem,interpretation,from);
50952 find mustInstanceOfEOperation_class(problem,interpretation,to);
50953 find mayInRelationeAllOperations_reference_EClass(problem,interpretation,from,to);
50954 neg find mustInRelationeAllOperations_reference_EClass(problem,interpretation,from,to);
50955}
50956pattern refineRelation_eAllStructuralFeatures_reference_EClass(
50957 problem:LogicProblem, interpretation:PartialInterpretation,
50958 relationIterpretation:PartialRelationInterpretation,
50959 from: DefinedElement, to: DefinedElement)
50960{
50961 find interpretation(problem,interpretation);
50962 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
50963 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllStructuralFeatures reference EClass");
50964 find mustExist(problem, interpretation, from);
50965 find mustExist(problem, interpretation, to);
50966 find mustInstanceOfEClass_class(problem,interpretation,from);
50967 find mustInstanceOfEStructuralFeature_class(problem,interpretation,to);
50968 find mayInRelationeAllStructuralFeatures_reference_EClass(problem,interpretation,from,to);
50969 neg find mustInRelationeAllStructuralFeatures_reference_EClass(problem,interpretation,from,to);
50970}
50971pattern refineRelation_eAllSuperTypes_reference_EClass(
50972 problem:LogicProblem, interpretation:PartialInterpretation,
50973 relationIterpretation:PartialRelationInterpretation,
50974 from: DefinedElement, to: DefinedElement)
50975{
50976 find interpretation(problem,interpretation);
50977 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
50978 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllSuperTypes reference EClass");
50979 find mustExist(problem, interpretation, from);
50980 find mustExist(problem, interpretation, to);
50981 find mustInstanceOfEClass_class(problem,interpretation,from);
50982 find mustInstanceOfEClass_class(problem,interpretation,to);
50983 find mayInRelationeAllSuperTypes_reference_EClass(problem,interpretation,from,to);
50984 neg find mustInRelationeAllSuperTypes_reference_EClass(problem,interpretation,from,to);
50985}
50986pattern refineRelation_eIDAttribute_reference_EClass(
50987 problem:LogicProblem, interpretation:PartialInterpretation,
50988 relationIterpretation:PartialRelationInterpretation,
50989 from: DefinedElement, to: DefinedElement)
50990{
50991 find interpretation(problem,interpretation);
50992 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
50993 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eIDAttribute reference EClass");
50994 find mustExist(problem, interpretation, from);
50995 find mustExist(problem, interpretation, to);
50996 find mustInstanceOfEClass_class(problem,interpretation,from);
50997 find mustInstanceOfEAttribute_class(problem,interpretation,to);
50998 find mayInRelationeIDAttribute_reference_EClass(problem,interpretation,from,to);
50999 neg find mustInRelationeIDAttribute_reference_EClass(problem,interpretation,from,to);
51000}
51001pattern refineRelation_eAllGenericSuperTypes_reference_EClass(
51002 problem:LogicProblem, interpretation:PartialInterpretation,
51003 relationIterpretation:PartialRelationInterpretation,
51004 from: DefinedElement, to: DefinedElement)
51005{
51006 find interpretation(problem,interpretation);
51007 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
51008 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllGenericSuperTypes reference EClass");
51009 find mustExist(problem, interpretation, from);
51010 find mustExist(problem, interpretation, to);
51011 find mustInstanceOfEClass_class(problem,interpretation,from);
51012 find mustInstanceOfEGenericType_class(problem,interpretation,to);
51013 find mayInRelationeAllGenericSuperTypes_reference_EClass(problem,interpretation,from,to);
51014 neg find mustInRelationeAllGenericSuperTypes_reference_EClass(problem,interpretation,from,to);
51015}
51016pattern refineRelation_eExceptions_reference_EOperation(
51017 problem:LogicProblem, interpretation:PartialInterpretation,
51018 relationIterpretation:PartialRelationInterpretation,
51019 from: DefinedElement, to: DefinedElement)
51020{
51021 find interpretation(problem,interpretation);
51022 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
51023 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eExceptions reference EOperation");
51024 find mustExist(problem, interpretation, from);
51025 find mustExist(problem, interpretation, to);
51026 find mustInstanceOfEOperation_class(problem,interpretation,from);
51027 find mustInstanceOfEClassifier_class(problem,interpretation,to);
51028 find mayInRelationeExceptions_reference_EOperation(problem,interpretation,from,to);
51029 neg find mustInRelationeExceptions_reference_EOperation(problem,interpretation,from,to);
51030}
51031pattern refineRelation_eOpposite_reference_EReference(
51032 problem:LogicProblem, interpretation:PartialInterpretation,
51033 relationIterpretation:PartialRelationInterpretation,
51034 from: DefinedElement, to: DefinedElement)
51035{
51036 find interpretation(problem,interpretation);
51037 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
51038 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eOpposite reference EReference");
51039 find mustExist(problem, interpretation, from);
51040 find mustExist(problem, interpretation, to);
51041 find mustInstanceOfEReference_class(problem,interpretation,from);
51042 find mustInstanceOfEReference_class(problem,interpretation,to);
51043 find mayInRelationeOpposite_reference_EReference(problem,interpretation,from,to);
51044 neg find mustInRelationeOpposite_reference_EReference(problem,interpretation,from,to);
51045}
51046pattern refineRelation_eReferenceType_reference_EReference(
51047 problem:LogicProblem, interpretation:PartialInterpretation,
51048 relationIterpretation:PartialRelationInterpretation,
51049 from: DefinedElement, to: DefinedElement)
51050{
51051 find interpretation(problem,interpretation);
51052 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
51053 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eReferenceType reference EReference");
51054 find mustExist(problem, interpretation, from);
51055 find mustExist(problem, interpretation, to);
51056 find mustInstanceOfEReference_class(problem,interpretation,from);
51057 find mustInstanceOfEClass_class(problem,interpretation,to);
51058 find mayInRelationeReferenceType_reference_EReference(problem,interpretation,from,to);
51059 neg find mustInRelationeReferenceType_reference_EReference(problem,interpretation,from,to);
51060}
51061pattern refineRelation_eKeys_reference_EReference(
51062 problem:LogicProblem, interpretation:PartialInterpretation,
51063 relationIterpretation:PartialRelationInterpretation,
51064 from: DefinedElement, to: DefinedElement)
51065{
51066 find interpretation(problem,interpretation);
51067 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
51068 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eKeys reference EReference");
51069 find mustExist(problem, interpretation, from);
51070 find mustExist(problem, interpretation, to);
51071 find mustInstanceOfEReference_class(problem,interpretation,from);
51072 find mustInstanceOfEAttribute_class(problem,interpretation,to);
51073 find mayInRelationeKeys_reference_EReference(problem,interpretation,from,to);
51074 neg find mustInRelationeKeys_reference_EReference(problem,interpretation,from,to);
51075}
51076pattern refineRelation_eType_reference_ETypedElement(
51077 problem:LogicProblem, interpretation:PartialInterpretation,
51078 relationIterpretation:PartialRelationInterpretation,
51079 from: DefinedElement, to: DefinedElement)
51080{
51081 find interpretation(problem,interpretation);
51082 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
51083 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eType reference ETypedElement");
51084 find mustExist(problem, interpretation, from);
51085 find mustExist(problem, interpretation, to);
51086 find mustInstanceOfETypedElement_class(problem,interpretation,from);
51087 find mustInstanceOfEClassifier_class(problem,interpretation,to);
51088 find mayInRelationeType_reference_ETypedElement(problem,interpretation,from,to);
51089 neg find mustInRelationeType_reference_ETypedElement(problem,interpretation,from,to);
51090}
51091pattern refineRelation_eRawType_reference_EGenericType(
51092 problem:LogicProblem, interpretation:PartialInterpretation,
51093 relationIterpretation:PartialRelationInterpretation,
51094 from: DefinedElement, to: DefinedElement)
51095{
51096 find interpretation(problem,interpretation);
51097 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
51098 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eRawType reference EGenericType");
51099 find mustExist(problem, interpretation, from);
51100 find mustExist(problem, interpretation, to);
51101 find mustInstanceOfEGenericType_class(problem,interpretation,from);
51102 find mustInstanceOfEClassifier_class(problem,interpretation,to);
51103 find mayInRelationeRawType_reference_EGenericType(problem,interpretation,from,to);
51104 neg find mustInRelationeRawType_reference_EGenericType(problem,interpretation,from,to);
51105}
51106pattern refineRelation_eTypeParameter_reference_EGenericType(
51107 problem:LogicProblem, interpretation:PartialInterpretation,
51108 relationIterpretation:PartialRelationInterpretation,
51109 from: DefinedElement, to: DefinedElement)
51110{
51111 find interpretation(problem,interpretation);
51112 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
51113 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eTypeParameter reference EGenericType");
51114 find mustExist(problem, interpretation, from);
51115 find mustExist(problem, interpretation, to);
51116 find mustInstanceOfEGenericType_class(problem,interpretation,from);
51117 find mustInstanceOfETypeParameter_class(problem,interpretation,to);
51118 find mayInRelationeTypeParameter_reference_EGenericType(problem,interpretation,from,to);
51119 neg find mustInRelationeTypeParameter_reference_EGenericType(problem,interpretation,from,to);
51120}
51121pattern refineRelation_eClassifier_reference_EGenericType(
51122 problem:LogicProblem, interpretation:PartialInterpretation,
51123 relationIterpretation:PartialRelationInterpretation,
51124 from: DefinedElement, to: DefinedElement)
51125{
51126 find interpretation(problem,interpretation);
51127 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
51128 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eClassifier reference EGenericType");
51129 find mustExist(problem, interpretation, from);
51130 find mustExist(problem, interpretation, to);
51131 find mustInstanceOfEGenericType_class(problem,interpretation,from);
51132 find mustInstanceOfEClassifier_class(problem,interpretation,to);
51133 find mayInRelationeClassifier_reference_EGenericType(problem,interpretation,from,to);
51134 neg find mustInRelationeClassifier_reference_EGenericType(problem,interpretation,from,to);
51135}
51136pattern refineRelation_iD_attribute_EAttribute(
51137 problem:LogicProblem, interpretation:PartialInterpretation,
51138 relationIterpretation:PartialRelationInterpretation,
51139 from: DefinedElement, to: DefinedElement)
51140{
51141 find interpretation(problem,interpretation);
51142 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
51143 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"iD attribute EAttribute");
51144 find mustExist(problem, interpretation, from);
51145 find mustExist(problem, interpretation, to);
51146 find mustInstanceOfEAttribute_class(problem,interpretation,from);
51147 BooleanElement(to);
51148 find mayInRelationiD_attribute_EAttribute(problem,interpretation,from,to);
51149 neg find mustInRelationiD_attribute_EAttribute(problem,interpretation,from,to);
51150}
51151pattern refineRelation_source_attribute_EAnnotation(
51152 problem:LogicProblem, interpretation:PartialInterpretation,
51153 relationIterpretation:PartialRelationInterpretation,
51154 from: DefinedElement, to: DefinedElement)
51155{
51156 find interpretation(problem,interpretation);
51157 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
51158 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"source attribute EAnnotation");
51159 find mustExist(problem, interpretation, from);
51160 find mustExist(problem, interpretation, to);
51161 find mustInstanceOfEAnnotation_class(problem,interpretation,from);
51162 StringElement(to);
51163 find mayInRelationsource_attribute_EAnnotation(problem,interpretation,from,to);
51164 neg find mustInRelationsource_attribute_EAnnotation(problem,interpretation,from,to);
51165}
51166pattern refineRelation_abstract_attribute_EClass(
51167 problem:LogicProblem, interpretation:PartialInterpretation,
51168 relationIterpretation:PartialRelationInterpretation,
51169 from: DefinedElement, to: DefinedElement)
51170{
51171 find interpretation(problem,interpretation);
51172 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
51173 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"abstract attribute EClass");
51174 find mustExist(problem, interpretation, from);
51175 find mustExist(problem, interpretation, to);
51176 find mustInstanceOfEClass_class(problem,interpretation,from);
51177 BooleanElement(to);
51178 find mayInRelationabstract_attribute_EClass(problem,interpretation,from,to);
51179 neg find mustInRelationabstract_attribute_EClass(problem,interpretation,from,to);
51180}
51181pattern refineRelation_interface_attribute_EClass(
51182 problem:LogicProblem, interpretation:PartialInterpretation,
51183 relationIterpretation:PartialRelationInterpretation,
51184 from: DefinedElement, to: DefinedElement)
51185{
51186 find interpretation(problem,interpretation);
51187 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
51188 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface attribute EClass");
51189 find mustExist(problem, interpretation, from);
51190 find mustExist(problem, interpretation, to);
51191 find mustInstanceOfEClass_class(problem,interpretation,from);
51192 BooleanElement(to);
51193 find mayInRelationinterface_attribute_EClass(problem,interpretation,from,to);
51194 neg find mustInRelationinterface_attribute_EClass(problem,interpretation,from,to);
51195}
51196pattern refineRelation_instanceClassName_attribute_EClassifier(
51197 problem:LogicProblem, interpretation:PartialInterpretation,
51198 relationIterpretation:PartialRelationInterpretation,
51199 from: DefinedElement, to: DefinedElement)
51200{
51201 find interpretation(problem,interpretation);
51202 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
51203 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"instanceClassName attribute EClassifier");
51204 find mustExist(problem, interpretation, from);
51205 find mustExist(problem, interpretation, to);
51206 find mustInstanceOfEClassifier_class(problem,interpretation,from);
51207 StringElement(to);
51208 find mayInRelationinstanceClassName_attribute_EClassifier(problem,interpretation,from,to);
51209 neg find mustInRelationinstanceClassName_attribute_EClassifier(problem,interpretation,from,to);
51210}
51211pattern refineRelation_instanceTypeName_attribute_EClassifier(
51212 problem:LogicProblem, interpretation:PartialInterpretation,
51213 relationIterpretation:PartialRelationInterpretation,
51214 from: DefinedElement, to: DefinedElement)
51215{
51216 find interpretation(problem,interpretation);
51217 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
51218 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"instanceTypeName attribute EClassifier");
51219 find mustExist(problem, interpretation, from);
51220 find mustExist(problem, interpretation, to);
51221 find mustInstanceOfEClassifier_class(problem,interpretation,from);
51222 StringElement(to);
51223 find mayInRelationinstanceTypeName_attribute_EClassifier(problem,interpretation,from,to);
51224 neg find mustInRelationinstanceTypeName_attribute_EClassifier(problem,interpretation,from,to);
51225}
51226pattern refineRelation_serializable_attribute_EDataType(
51227 problem:LogicProblem, interpretation:PartialInterpretation,
51228 relationIterpretation:PartialRelationInterpretation,
51229 from: DefinedElement, to: DefinedElement)
51230{
51231 find interpretation(problem,interpretation);
51232 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
51233 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"serializable attribute EDataType");
51234 find mustExist(problem, interpretation, from);
51235 find mustExist(problem, interpretation, to);
51236 find mustInstanceOfEDataType_class(problem,interpretation,from);
51237 BooleanElement(to);
51238 find mayInRelationserializable_attribute_EDataType(problem,interpretation,from,to);
51239 neg find mustInRelationserializable_attribute_EDataType(problem,interpretation,from,to);
51240}
51241pattern refineRelation_value_attribute_EEnumLiteral(
51242 problem:LogicProblem, interpretation:PartialInterpretation,
51243 relationIterpretation:PartialRelationInterpretation,
51244 from: DefinedElement, to: DefinedElement)
51245{
51246 find interpretation(problem,interpretation);
51247 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
51248 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"value attribute EEnumLiteral");
51249 find mustExist(problem, interpretation, from);
51250 find mustExist(problem, interpretation, to);
51251 find mustInstanceOfEEnumLiteral_class(problem,interpretation,from);
51252 IntegerElement(to);
51253 find mayInRelationvalue_attribute_EEnumLiteral(problem,interpretation,from,to);
51254 neg find mustInRelationvalue_attribute_EEnumLiteral(problem,interpretation,from,to);
51255}
51256pattern refineRelation_literal_attribute_EEnumLiteral(
51257 problem:LogicProblem, interpretation:PartialInterpretation,
51258 relationIterpretation:PartialRelationInterpretation,
51259 from: DefinedElement, to: DefinedElement)
51260{
51261 find interpretation(problem,interpretation);
51262 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
51263 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"literal attribute EEnumLiteral");
51264 find mustExist(problem, interpretation, from);
51265 find mustExist(problem, interpretation, to);
51266 find mustInstanceOfEEnumLiteral_class(problem,interpretation,from);
51267 StringElement(to);
51268 find mayInRelationliteral_attribute_EEnumLiteral(problem,interpretation,from,to);
51269 neg find mustInRelationliteral_attribute_EEnumLiteral(problem,interpretation,from,to);
51270}
51271pattern refineRelation_name_attribute_ENamedElement(
51272 problem:LogicProblem, interpretation:PartialInterpretation,
51273 relationIterpretation:PartialRelationInterpretation,
51274 from: DefinedElement, to: DefinedElement)
51275{
51276 find interpretation(problem,interpretation);
51277 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
51278 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"name attribute ENamedElement");
51279 find mustExist(problem, interpretation, from);
51280 find mustExist(problem, interpretation, to);
51281 find mustInstanceOfENamedElement_class(problem,interpretation,from);
51282 StringElement(to);
51283 find mayInRelationname_attribute_ENamedElement(problem,interpretation,from,to);
51284 neg find mustInRelationname_attribute_ENamedElement(problem,interpretation,from,to);
51285}
51286pattern refineRelation_nsURI_attribute_EPackage(
51287 problem:LogicProblem, interpretation:PartialInterpretation,
51288 relationIterpretation:PartialRelationInterpretation,
51289 from: DefinedElement, to: DefinedElement)
51290{
51291 find interpretation(problem,interpretation);
51292 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
51293 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"nsURI attribute EPackage");
51294 find mustExist(problem, interpretation, from);
51295 find mustExist(problem, interpretation, to);
51296 find mustInstanceOfEPackage_class(problem,interpretation,from);
51297 StringElement(to);
51298 find mayInRelationnsURI_attribute_EPackage(problem,interpretation,from,to);
51299 neg find mustInRelationnsURI_attribute_EPackage(problem,interpretation,from,to);
51300}
51301pattern refineRelation_nsPrefix_attribute_EPackage(
51302 problem:LogicProblem, interpretation:PartialInterpretation,
51303 relationIterpretation:PartialRelationInterpretation,
51304 from: DefinedElement, to: DefinedElement)
51305{
51306 find interpretation(problem,interpretation);
51307 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
51308 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"nsPrefix attribute EPackage");
51309 find mustExist(problem, interpretation, from);
51310 find mustExist(problem, interpretation, to);
51311 find mustInstanceOfEPackage_class(problem,interpretation,from);
51312 StringElement(to);
51313 find mayInRelationnsPrefix_attribute_EPackage(problem,interpretation,from,to);
51314 neg find mustInRelationnsPrefix_attribute_EPackage(problem,interpretation,from,to);
51315}
51316pattern refineRelation_containment_attribute_EReference(
51317 problem:LogicProblem, interpretation:PartialInterpretation,
51318 relationIterpretation:PartialRelationInterpretation,
51319 from: DefinedElement, to: DefinedElement)
51320{
51321 find interpretation(problem,interpretation);
51322 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
51323 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"containment attribute EReference");
51324 find mustExist(problem, interpretation, from);
51325 find mustExist(problem, interpretation, to);
51326 find mustInstanceOfEReference_class(problem,interpretation,from);
51327 BooleanElement(to);
51328 find mayInRelationcontainment_attribute_EReference(problem,interpretation,from,to);
51329 neg find mustInRelationcontainment_attribute_EReference(problem,interpretation,from,to);
51330}
51331pattern refineRelation_container_attribute_EReference(
51332 problem:LogicProblem, interpretation:PartialInterpretation,
51333 relationIterpretation:PartialRelationInterpretation,
51334 from: DefinedElement, to: DefinedElement)
51335{
51336 find interpretation(problem,interpretation);
51337 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
51338 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"container attribute EReference");
51339 find mustExist(problem, interpretation, from);
51340 find mustExist(problem, interpretation, to);
51341 find mustInstanceOfEReference_class(problem,interpretation,from);
51342 BooleanElement(to);
51343 find mayInRelationcontainer_attribute_EReference(problem,interpretation,from,to);
51344 neg find mustInRelationcontainer_attribute_EReference(problem,interpretation,from,to);
51345}
51346pattern refineRelation_resolveProxies_attribute_EReference(
51347 problem:LogicProblem, interpretation:PartialInterpretation,
51348 relationIterpretation:PartialRelationInterpretation,
51349 from: DefinedElement, to: DefinedElement)
51350{
51351 find interpretation(problem,interpretation);
51352 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
51353 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"resolveProxies attribute EReference");
51354 find mustExist(problem, interpretation, from);
51355 find mustExist(problem, interpretation, to);
51356 find mustInstanceOfEReference_class(problem,interpretation,from);
51357 BooleanElement(to);
51358 find mayInRelationresolveProxies_attribute_EReference(problem,interpretation,from,to);
51359 neg find mustInRelationresolveProxies_attribute_EReference(problem,interpretation,from,to);
51360}
51361pattern refineRelation_changeable_attribute_EStructuralFeature(
51362 problem:LogicProblem, interpretation:PartialInterpretation,
51363 relationIterpretation:PartialRelationInterpretation,
51364 from: DefinedElement, to: DefinedElement)
51365{
51366 find interpretation(problem,interpretation);
51367 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
51368 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"changeable attribute EStructuralFeature");
51369 find mustExist(problem, interpretation, from);
51370 find mustExist(problem, interpretation, to);
51371 find mustInstanceOfEStructuralFeature_class(problem,interpretation,from);
51372 BooleanElement(to);
51373 find mayInRelationchangeable_attribute_EStructuralFeature(problem,interpretation,from,to);
51374 neg find mustInRelationchangeable_attribute_EStructuralFeature(problem,interpretation,from,to);
51375}
51376pattern refineRelation_volatile_attribute_EStructuralFeature(
51377 problem:LogicProblem, interpretation:PartialInterpretation,
51378 relationIterpretation:PartialRelationInterpretation,
51379 from: DefinedElement, to: DefinedElement)
51380{
51381 find interpretation(problem,interpretation);
51382 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
51383 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"volatile attribute EStructuralFeature");
51384 find mustExist(problem, interpretation, from);
51385 find mustExist(problem, interpretation, to);
51386 find mustInstanceOfEStructuralFeature_class(problem,interpretation,from);
51387 BooleanElement(to);
51388 find mayInRelationvolatile_attribute_EStructuralFeature(problem,interpretation,from,to);
51389 neg find mustInRelationvolatile_attribute_EStructuralFeature(problem,interpretation,from,to);
51390}
51391pattern refineRelation_transient_attribute_EStructuralFeature(
51392 problem:LogicProblem, interpretation:PartialInterpretation,
51393 relationIterpretation:PartialRelationInterpretation,
51394 from: DefinedElement, to: DefinedElement)
51395{
51396 find interpretation(problem,interpretation);
51397 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
51398 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"transient attribute EStructuralFeature");
51399 find mustExist(problem, interpretation, from);
51400 find mustExist(problem, interpretation, to);
51401 find mustInstanceOfEStructuralFeature_class(problem,interpretation,from);
51402 BooleanElement(to);
51403 find mayInRelationtransient_attribute_EStructuralFeature(problem,interpretation,from,to);
51404 neg find mustInRelationtransient_attribute_EStructuralFeature(problem,interpretation,from,to);
51405}
51406pattern refineRelation_defaultValueLiteral_attribute_EStructuralFeature(
51407 problem:LogicProblem, interpretation:PartialInterpretation,
51408 relationIterpretation:PartialRelationInterpretation,
51409 from: DefinedElement, to: DefinedElement)
51410{
51411 find interpretation(problem,interpretation);
51412 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
51413 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"defaultValueLiteral attribute EStructuralFeature");
51414 find mustExist(problem, interpretation, from);
51415 find mustExist(problem, interpretation, to);
51416 find mustInstanceOfEStructuralFeature_class(problem,interpretation,from);
51417 StringElement(to);
51418 find mayInRelationdefaultValueLiteral_attribute_EStructuralFeature(problem,interpretation,from,to);
51419 neg find mustInRelationdefaultValueLiteral_attribute_EStructuralFeature(problem,interpretation,from,to);
51420}
51421pattern refineRelation_unsettable_attribute_EStructuralFeature(
51422 problem:LogicProblem, interpretation:PartialInterpretation,
51423 relationIterpretation:PartialRelationInterpretation,
51424 from: DefinedElement, to: DefinedElement)
51425{
51426 find interpretation(problem,interpretation);
51427 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
51428 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"unsettable attribute EStructuralFeature");
51429 find mustExist(problem, interpretation, from);
51430 find mustExist(problem, interpretation, to);
51431 find mustInstanceOfEStructuralFeature_class(problem,interpretation,from);
51432 BooleanElement(to);
51433 find mayInRelationunsettable_attribute_EStructuralFeature(problem,interpretation,from,to);
51434 neg find mustInRelationunsettable_attribute_EStructuralFeature(problem,interpretation,from,to);
51435}
51436pattern refineRelation_derived_attribute_EStructuralFeature(
51437 problem:LogicProblem, interpretation:PartialInterpretation,
51438 relationIterpretation:PartialRelationInterpretation,
51439 from: DefinedElement, to: DefinedElement)
51440{
51441 find interpretation(problem,interpretation);
51442 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
51443 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"derived attribute EStructuralFeature");
51444 find mustExist(problem, interpretation, from);
51445 find mustExist(problem, interpretation, to);
51446 find mustInstanceOfEStructuralFeature_class(problem,interpretation,from);
51447 BooleanElement(to);
51448 find mayInRelationderived_attribute_EStructuralFeature(problem,interpretation,from,to);
51449 neg find mustInRelationderived_attribute_EStructuralFeature(problem,interpretation,from,to);
51450}
51451pattern refineRelation_ordered_attribute_ETypedElement(
51452 problem:LogicProblem, interpretation:PartialInterpretation,
51453 relationIterpretation:PartialRelationInterpretation,
51454 from: DefinedElement, to: DefinedElement)
51455{
51456 find interpretation(problem,interpretation);
51457 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
51458 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"ordered attribute ETypedElement");
51459 find mustExist(problem, interpretation, from);
51460 find mustExist(problem, interpretation, to);
51461 find mustInstanceOfETypedElement_class(problem,interpretation,from);
51462 BooleanElement(to);
51463 find mayInRelationordered_attribute_ETypedElement(problem,interpretation,from,to);
51464 neg find mustInRelationordered_attribute_ETypedElement(problem,interpretation,from,to);
51465}
51466pattern refineRelation_unique_attribute_ETypedElement(
51467 problem:LogicProblem, interpretation:PartialInterpretation,
51468 relationIterpretation:PartialRelationInterpretation,
51469 from: DefinedElement, to: DefinedElement)
51470{
51471 find interpretation(problem,interpretation);
51472 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
51473 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"unique attribute ETypedElement");
51474 find mustExist(problem, interpretation, from);
51475 find mustExist(problem, interpretation, to);
51476 find mustInstanceOfETypedElement_class(problem,interpretation,from);
51477 BooleanElement(to);
51478 find mayInRelationunique_attribute_ETypedElement(problem,interpretation,from,to);
51479 neg find mustInRelationunique_attribute_ETypedElement(problem,interpretation,from,to);
51480}
51481pattern refineRelation_lowerBound_attribute_ETypedElement(
51482 problem:LogicProblem, interpretation:PartialInterpretation,
51483 relationIterpretation:PartialRelationInterpretation,
51484 from: DefinedElement, to: DefinedElement)
51485{
51486 find interpretation(problem,interpretation);
51487 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
51488 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"lowerBound attribute ETypedElement");
51489 find mustExist(problem, interpretation, from);
51490 find mustExist(problem, interpretation, to);
51491 find mustInstanceOfETypedElement_class(problem,interpretation,from);
51492 IntegerElement(to);
51493 find mayInRelationlowerBound_attribute_ETypedElement(problem,interpretation,from,to);
51494 neg find mustInRelationlowerBound_attribute_ETypedElement(problem,interpretation,from,to);
51495}
51496pattern refineRelation_upperBound_attribute_ETypedElement(
51497 problem:LogicProblem, interpretation:PartialInterpretation,
51498 relationIterpretation:PartialRelationInterpretation,
51499 from: DefinedElement, to: DefinedElement)
51500{
51501 find interpretation(problem,interpretation);
51502 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
51503 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"upperBound attribute ETypedElement");
51504 find mustExist(problem, interpretation, from);
51505 find mustExist(problem, interpretation, to);
51506 find mustInstanceOfETypedElement_class(problem,interpretation,from);
51507 IntegerElement(to);
51508 find mayInRelationupperBound_attribute_ETypedElement(problem,interpretation,from,to);
51509 neg find mustInRelationupperBound_attribute_ETypedElement(problem,interpretation,from,to);
51510}
51511pattern refineRelation_many_attribute_ETypedElement(
51512 problem:LogicProblem, interpretation:PartialInterpretation,
51513 relationIterpretation:PartialRelationInterpretation,
51514 from: DefinedElement, to: DefinedElement)
51515{
51516 find interpretation(problem,interpretation);
51517 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
51518 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"many attribute ETypedElement");
51519 find mustExist(problem, interpretation, from);
51520 find mustExist(problem, interpretation, to);
51521 find mustInstanceOfETypedElement_class(problem,interpretation,from);
51522 BooleanElement(to);
51523 find mayInRelationmany_attribute_ETypedElement(problem,interpretation,from,to);
51524 neg find mustInRelationmany_attribute_ETypedElement(problem,interpretation,from,to);
51525}
51526pattern refineRelation_required_attribute_ETypedElement(
51527 problem:LogicProblem, interpretation:PartialInterpretation,
51528 relationIterpretation:PartialRelationInterpretation,
51529 from: DefinedElement, to: DefinedElement)
51530{
51531 find interpretation(problem,interpretation);
51532 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
51533 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"required attribute ETypedElement");
51534 find mustExist(problem, interpretation, from);
51535 find mustExist(problem, interpretation, to);
51536 find mustInstanceOfETypedElement_class(problem,interpretation,from);
51537 BooleanElement(to);
51538 find mayInRelationrequired_attribute_ETypedElement(problem,interpretation,from,to);
51539 neg find mustInRelationrequired_attribute_ETypedElement(problem,interpretation,from,to);
51540}
51541pattern refineRelation_key_attribute_EStringToStringMapEntry(
51542 problem:LogicProblem, interpretation:PartialInterpretation,
51543 relationIterpretation:PartialRelationInterpretation,
51544 from: DefinedElement, to: DefinedElement)
51545{
51546 find interpretation(problem,interpretation);
51547 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
51548 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"key attribute EStringToStringMapEntry");
51549 find mustExist(problem, interpretation, from);
51550 find mustExist(problem, interpretation, to);
51551 find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,from);
51552 StringElement(to);
51553 find mayInRelationkey_attribute_EStringToStringMapEntry(problem,interpretation,from,to);
51554 neg find mustInRelationkey_attribute_EStringToStringMapEntry(problem,interpretation,from,to);
51555}
51556pattern refineRelation_value_attribute_EStringToStringMapEntry(
51557 problem:LogicProblem, interpretation:PartialInterpretation,
51558 relationIterpretation:PartialRelationInterpretation,
51559 from: DefinedElement, to: DefinedElement)
51560{
51561 find interpretation(problem,interpretation);
51562 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
51563 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"value attribute EStringToStringMapEntry");
51564 find mustExist(problem, interpretation, from);
51565 find mustExist(problem, interpretation, to);
51566 find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,from);
51567 StringElement(to);
51568 find mayInRelationvalue_attribute_EStringToStringMapEntry(problem,interpretation,from,to);
51569 neg find mustInRelationvalue_attribute_EStringToStringMapEntry(problem,interpretation,from,to);
51570}
51571import epackage "http://www.bme.hu/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage"
51572import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/problem"
51573import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/language"
51574
51575//////////
51576// 0. Util
51577//////////
51578private pattern interpretation(problem:LogicProblem, interpretation:PartialInterpretation) {
51579 PartialInterpretation.problem(interpretation,problem);
51580}
51581
51582/////////////////////////
51583// 0.1 Existence
51584/////////////////////////
51585private pattern mustExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
51586 find interpretation(problem,interpretation);
51587 LogicProblem.elements(problem,element);
51588} or {
51589 find interpretation(problem,interpretation);
51590 PartialInterpretation.newElements(interpretation,element);
51591}
51592
51593private pattern mayExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
51594 find mustExist(problem,interpretation,element);
51595} or {
51596 find interpretation(problem,interpretation);
51597 neg find elementCloseWorld(element);
51598 PartialInterpretation.openWorldElements(interpretation,element);
51599}
51600
51601private pattern elementCloseWorld(element:DefinedElement) {
51602 PartialInterpretation.openWorldElements(i,element);
51603 PartialInterpretation.maxNewElements(i,0);
51604} or {
51605 Scope.targetTypeInterpretation(scope,interpretation);
51606 PartialTypeInterpratation.elements(interpretation,element);
51607 Scope.maxNewElements(scope,0);
51608}
51609
51610////////////////////////
51611// 0.2 Equivalence
51612////////////////////////
51613pattern mayEquivalent(problem:LogicProblem, interpretation:PartialInterpretation, a: DefinedElement, b: DefinedElement) {
51614 find mayExist(problem,interpretation,a);
51615 find mayExist(problem,interpretation,b);
51616 a == b;
51617}
51618
51619////////////////////////
51620// 0.3 Required Patterns by TypeIndexer
51621////////////////////////
51622private pattern typeInterpretation(problem:LogicProblem, interpretation:PartialInterpretation, type:TypeDeclaration, typeInterpretation:PartialComplexTypeInterpretation) {
51623 find interpretation(problem,interpretation);
51624 LogicProblem.types(problem,type);
51625 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
51626 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
51627}
51628
51629private pattern directInstanceOf(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement, type:Type) {
51630 find interpretation(problem,interpretation);
51631 LogicProblem.types(problem,type);
51632 TypeDefinition.elements(type,element);
51633} or {
51634 find interpretation(problem,interpretation);
51635 find typeInterpretation(problem,interpretation,type,typeInterpretation);
51636 PartialComplexTypeInterpretation.elements(typeInterpretation,element);
51637}
51638
51639private pattern isPrimitive(element: PrimitiveElement) {
51640 PrimitiveElement(element);
51641}
51642
51643//////////
51644// 1. Problem-Specific Base Indexers
51645//////////
51646// 1.1 Type Indexers
51647//////////
51648// 1.1.1 primitive Type Indexers
51649//////////
51650
51651//////////
51652// 1.1.2 domain-specific Type Indexers
51653//////////
51654/**
51655 * An element must be an instance of type "EAttribute class".
51656 */
51657private pattern mustInstanceOfEAttribute_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
51658 Type.name(type,"EAttribute class");
51659 find directInstanceOf(problem,interpretation,element,type);
51660}
51661private pattern scopeDisallowsNewEAttribute_class(problem:LogicProblem, interpretation:PartialInterpretation) {
51662 find interpretation(problem,interpretation);
51663 PartialInterpretation.scopes(interpretation,scope);
51664 Scope.targetTypeInterpretation(scope,typeInterpretation);
51665 Scope.maxNewElements(scope,0);
51666 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
51667 Type.name(type,"EAttribute class");
51668}
51669
51670/**
51671 * An element may be an instance of type "EAttribute class".
51672 */
51673private pattern mayInstanceOfEAttribute_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
51674{
51675 find interpretation(problem,interpretation);
51676 PartialInterpretation.newElements(interpretation,element);
51677 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
51678 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
51679 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
51680 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
51681 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
51682 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
51683 neg find mustInstanceOfEReference_class(problem,interpretation,element);
51684 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
51685 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
51686 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
51687 neg find mustInstanceOfEObject_class(problem,interpretation,element);
51688 neg find scopeDisallowsNewEAttribute_class(problem, interpretation);
51689 neg find isPrimitive(element);
51690} or {
51691 find interpretation(problem,interpretation);
51692 PartialInterpretation.openWorldElements(interpretation,element);
51693 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
51694 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
51695 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
51696 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
51697 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
51698 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
51699 neg find mustInstanceOfEReference_class(problem,interpretation,element);
51700 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
51701 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
51702 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
51703 neg find mustInstanceOfEObject_class(problem,interpretation,element);
51704 neg find scopeDisallowsNewEAttribute_class(problem, interpretation);
51705 neg find isPrimitive(element);
51706} or
51707{ find mustInstanceOfEAttribute_class(problem,interpretation,element); }
51708/**
51709 * An element must be an instance of type "EAnnotation class".
51710 */
51711private pattern mustInstanceOfEAnnotation_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
51712 Type.name(type,"EAnnotation class");
51713 find directInstanceOf(problem,interpretation,element,type);
51714}
51715private pattern scopeDisallowsNewEAnnotation_class(problem:LogicProblem, interpretation:PartialInterpretation) {
51716 find interpretation(problem,interpretation);
51717 PartialInterpretation.scopes(interpretation,scope);
51718 Scope.targetTypeInterpretation(scope,typeInterpretation);
51719 Scope.maxNewElements(scope,0);
51720 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
51721 Type.name(type,"EAnnotation class");
51722}
51723
51724/**
51725 * An element may be an instance of type "EAnnotation class".
51726 */
51727private pattern mayInstanceOfEAnnotation_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
51728{
51729 find interpretation(problem,interpretation);
51730 PartialInterpretation.newElements(interpretation,element);
51731 neg find mustInstanceOfENamedElement_class(problem,interpretation,element);
51732 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
51733 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
51734 neg find mustInstanceOfEObject_class(problem,interpretation,element);
51735 neg find scopeDisallowsNewEAnnotation_class(problem, interpretation);
51736 neg find isPrimitive(element);
51737} or {
51738 find interpretation(problem,interpretation);
51739 PartialInterpretation.openWorldElements(interpretation,element);
51740 neg find mustInstanceOfENamedElement_class(problem,interpretation,element);
51741 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
51742 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
51743 neg find mustInstanceOfEObject_class(problem,interpretation,element);
51744 neg find scopeDisallowsNewEAnnotation_class(problem, interpretation);
51745 neg find isPrimitive(element);
51746} or
51747{ find mustInstanceOfEAnnotation_class(problem,interpretation,element); }
51748/**
51749 * An element must be an instance of type "EClass class".
51750 */
51751private pattern mustInstanceOfEClass_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
51752 Type.name(type,"EClass class");
51753 find directInstanceOf(problem,interpretation,element,type);
51754}
51755private pattern scopeDisallowsNewEClass_class(problem:LogicProblem, interpretation:PartialInterpretation) {
51756 find interpretation(problem,interpretation);
51757 PartialInterpretation.scopes(interpretation,scope);
51758 Scope.targetTypeInterpretation(scope,typeInterpretation);
51759 Scope.maxNewElements(scope,0);
51760 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
51761 Type.name(type,"EClass class");
51762}
51763
51764/**
51765 * An element may be an instance of type "EClass class".
51766 */
51767private pattern mayInstanceOfEClass_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
51768{
51769 find interpretation(problem,interpretation);
51770 PartialInterpretation.newElements(interpretation,element);
51771 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
51772 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
51773 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
51774 neg find mustInstanceOfEDataType_class(problem,interpretation,element);
51775 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
51776 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
51777 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
51778 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
51779 neg find mustInstanceOfEObject_class(problem,interpretation,element);
51780 neg find scopeDisallowsNewEClass_class(problem, interpretation);
51781 neg find isPrimitive(element);
51782} or {
51783 find interpretation(problem,interpretation);
51784 PartialInterpretation.openWorldElements(interpretation,element);
51785 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
51786 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
51787 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
51788 neg find mustInstanceOfEDataType_class(problem,interpretation,element);
51789 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
51790 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
51791 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
51792 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
51793 neg find mustInstanceOfEObject_class(problem,interpretation,element);
51794 neg find scopeDisallowsNewEClass_class(problem, interpretation);
51795 neg find isPrimitive(element);
51796} or
51797{ find mustInstanceOfEClass_class(problem,interpretation,element); }
51798/**
51799 * An element must be an instance of type "EClassifier class".
51800 */
51801private pattern mustInstanceOfEClassifier_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
51802 Type.name(type,"EClassifier class");
51803 find directInstanceOf(problem,interpretation,element,type);
51804}
51805private pattern scopeDisallowsNewEClassifier_class(problem:LogicProblem, interpretation:PartialInterpretation) {
51806 find interpretation(problem,interpretation);
51807 PartialInterpretation.scopes(interpretation,scope);
51808 Scope.targetTypeInterpretation(scope,typeInterpretation);
51809 Scope.maxNewElements(scope,0);
51810 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
51811 Type.name(type,"EClassifier class");
51812}
51813
51814/**
51815 * An element may be an instance of type "EClassifier class".
51816 */
51817private pattern mayInstanceOfEClassifier_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
51818{
51819 find interpretation(problem,interpretation);
51820 PartialInterpretation.newElements(interpretation,element);
51821 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
51822 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
51823 neg find mustInstanceOfEDataType_class(problem,interpretation,element);
51824 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
51825 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
51826 neg find mustInstanceOfEClass_class(problem,interpretation,element);
51827 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
51828 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
51829 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
51830 neg find mustInstanceOfEObject_class(problem,interpretation,element);
51831 neg find scopeDisallowsNewEClassifier_class(problem, interpretation);
51832 neg find isPrimitive(element);
51833} or {
51834 find interpretation(problem,interpretation);
51835 PartialInterpretation.openWorldElements(interpretation,element);
51836 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
51837 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
51838 neg find mustInstanceOfEDataType_class(problem,interpretation,element);
51839 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
51840 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
51841 neg find mustInstanceOfEClass_class(problem,interpretation,element);
51842 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
51843 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
51844 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
51845 neg find mustInstanceOfEObject_class(problem,interpretation,element);
51846 neg find scopeDisallowsNewEClassifier_class(problem, interpretation);
51847 neg find isPrimitive(element);
51848} or
51849{ find mustInstanceOfEClassifier_class(problem,interpretation,element); }
51850/**
51851 * An element must be an instance of type "EDataType class".
51852 */
51853private pattern mustInstanceOfEDataType_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
51854 Type.name(type,"EDataType class");
51855 find directInstanceOf(problem,interpretation,element,type);
51856}
51857private pattern scopeDisallowsNewEDataType_class(problem:LogicProblem, interpretation:PartialInterpretation) {
51858 find interpretation(problem,interpretation);
51859 PartialInterpretation.scopes(interpretation,scope);
51860 Scope.targetTypeInterpretation(scope,typeInterpretation);
51861 Scope.maxNewElements(scope,0);
51862 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
51863 Type.name(type,"EDataType class");
51864}
51865
51866/**
51867 * An element may be an instance of type "EDataType class".
51868 */
51869private pattern mayInstanceOfEDataType_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
51870{
51871 find interpretation(problem,interpretation);
51872 PartialInterpretation.newElements(interpretation,element);
51873 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
51874 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
51875 neg find mustInstanceOfEEnum_class(problem,interpretation,element);
51876 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
51877 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
51878 neg find mustInstanceOfEClass_class(problem,interpretation,element);
51879 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
51880 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
51881 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
51882 neg find mustInstanceOfEObject_class(problem,interpretation,element);
51883 neg find scopeDisallowsNewEDataType_class(problem, interpretation);
51884 neg find isPrimitive(element);
51885} or {
51886 find interpretation(problem,interpretation);
51887 PartialInterpretation.openWorldElements(interpretation,element);
51888 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
51889 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
51890 neg find mustInstanceOfEEnum_class(problem,interpretation,element);
51891 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
51892 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
51893 neg find mustInstanceOfEClass_class(problem,interpretation,element);
51894 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
51895 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
51896 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
51897 neg find mustInstanceOfEObject_class(problem,interpretation,element);
51898 neg find scopeDisallowsNewEDataType_class(problem, interpretation);
51899 neg find isPrimitive(element);
51900} or
51901{ find mustInstanceOfEDataType_class(problem,interpretation,element); }
51902/**
51903 * An element must be an instance of type "EEnum class".
51904 */
51905private pattern mustInstanceOfEEnum_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
51906 Type.name(type,"EEnum class");
51907 find directInstanceOf(problem,interpretation,element,type);
51908}
51909private pattern scopeDisallowsNewEEnum_class(problem:LogicProblem, interpretation:PartialInterpretation) {
51910 find interpretation(problem,interpretation);
51911 PartialInterpretation.scopes(interpretation,scope);
51912 Scope.targetTypeInterpretation(scope,typeInterpretation);
51913 Scope.maxNewElements(scope,0);
51914 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
51915 Type.name(type,"EEnum class");
51916}
51917
51918/**
51919 * An element may be an instance of type "EEnum class".
51920 */
51921private pattern mayInstanceOfEEnum_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
51922{
51923 find interpretation(problem,interpretation);
51924 PartialInterpretation.newElements(interpretation,element);
51925 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
51926 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
51927 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
51928 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
51929 neg find mustInstanceOfEClass_class(problem,interpretation,element);
51930 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
51931 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
51932 neg find mustInstanceOfEObject_class(problem,interpretation,element);
51933 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
51934 neg find scopeDisallowsNewEEnum_class(problem, interpretation);
51935 neg find isPrimitive(element);
51936} or {
51937 find interpretation(problem,interpretation);
51938 PartialInterpretation.openWorldElements(interpretation,element);
51939 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
51940 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
51941 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
51942 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
51943 neg find mustInstanceOfEClass_class(problem,interpretation,element);
51944 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
51945 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
51946 neg find mustInstanceOfEObject_class(problem,interpretation,element);
51947 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
51948 neg find scopeDisallowsNewEEnum_class(problem, interpretation);
51949 neg find isPrimitive(element);
51950} or
51951{ find mustInstanceOfEEnum_class(problem,interpretation,element); }
51952/**
51953 * An element must be an instance of type "EEnumLiteral class".
51954 */
51955private pattern mustInstanceOfEEnumLiteral_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
51956 Type.name(type,"EEnumLiteral class");
51957 find directInstanceOf(problem,interpretation,element,type);
51958}
51959private pattern scopeDisallowsNewEEnumLiteral_class(problem:LogicProblem, interpretation:PartialInterpretation) {
51960 find interpretation(problem,interpretation);
51961 PartialInterpretation.scopes(interpretation,scope);
51962 Scope.targetTypeInterpretation(scope,typeInterpretation);
51963 Scope.maxNewElements(scope,0);
51964 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
51965 Type.name(type,"EEnumLiteral class");
51966}
51967
51968/**
51969 * An element may be an instance of type "EEnumLiteral class".
51970 */
51971private pattern mayInstanceOfEEnumLiteral_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
51972{
51973 find interpretation(problem,interpretation);
51974 PartialInterpretation.newElements(interpretation,element);
51975 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
51976 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
51977 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
51978 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
51979 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
51980 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
51981 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
51982 neg find mustInstanceOfEObject_class(problem,interpretation,element);
51983 neg find scopeDisallowsNewEEnumLiteral_class(problem, interpretation);
51984 neg find isPrimitive(element);
51985} or {
51986 find interpretation(problem,interpretation);
51987 PartialInterpretation.openWorldElements(interpretation,element);
51988 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
51989 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
51990 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
51991 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
51992 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
51993 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
51994 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
51995 neg find mustInstanceOfEObject_class(problem,interpretation,element);
51996 neg find scopeDisallowsNewEEnumLiteral_class(problem, interpretation);
51997 neg find isPrimitive(element);
51998} or
51999{ find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); }
52000/**
52001 * An element must be an instance of type "EModelElement class".
52002 */
52003private pattern mustInstanceOfEModelElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
52004 Type.name(type,"EModelElement class");
52005 find directInstanceOf(problem,interpretation,element,type);
52006}
52007private pattern scopeDisallowsNewEModelElement_class(problem:LogicProblem, interpretation:PartialInterpretation) {
52008 find interpretation(problem,interpretation);
52009 PartialInterpretation.scopes(interpretation,scope);
52010 Scope.targetTypeInterpretation(scope,typeInterpretation);
52011 Scope.maxNewElements(scope,0);
52012 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
52013 Type.name(type,"EModelElement class");
52014}
52015
52016/**
52017 * An element may be an instance of type "EModelElement class".
52018 */
52019private pattern mayInstanceOfEModelElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
52020{
52021 find interpretation(problem,interpretation);
52022 PartialInterpretation.newElements(interpretation,element);
52023 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
52024 neg find mustInstanceOfENamedElement_class(problem,interpretation,element);
52025 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
52026 neg find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,element);
52027 neg find mustInstanceOfEObject_class(problem,interpretation,element);
52028 neg find scopeDisallowsNewEModelElement_class(problem, interpretation);
52029 neg find isPrimitive(element);
52030} or {
52031 find interpretation(problem,interpretation);
52032 PartialInterpretation.openWorldElements(interpretation,element);
52033 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
52034 neg find mustInstanceOfENamedElement_class(problem,interpretation,element);
52035 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
52036 neg find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,element);
52037 neg find mustInstanceOfEObject_class(problem,interpretation,element);
52038 neg find scopeDisallowsNewEModelElement_class(problem, interpretation);
52039 neg find isPrimitive(element);
52040} or
52041{ find mustInstanceOfEModelElement_class(problem,interpretation,element); }
52042/**
52043 * An element must be an instance of type "ENamedElement class".
52044 */
52045private pattern mustInstanceOfENamedElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
52046 Type.name(type,"ENamedElement class");
52047 find directInstanceOf(problem,interpretation,element,type);
52048}
52049private pattern scopeDisallowsNewENamedElement_class(problem:LogicProblem, interpretation:PartialInterpretation) {
52050 find interpretation(problem,interpretation);
52051 PartialInterpretation.scopes(interpretation,scope);
52052 Scope.targetTypeInterpretation(scope,typeInterpretation);
52053 Scope.maxNewElements(scope,0);
52054 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
52055 Type.name(type,"ENamedElement class");
52056}
52057
52058/**
52059 * An element may be an instance of type "ENamedElement class".
52060 */
52061private pattern mayInstanceOfENamedElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
52062{
52063 find interpretation(problem,interpretation);
52064 PartialInterpretation.newElements(interpretation,element);
52065 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
52066 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
52067 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
52068 neg find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,element);
52069 neg find mustInstanceOfEObject_class(problem,interpretation,element);
52070 neg find scopeDisallowsNewENamedElement_class(problem, interpretation);
52071 neg find isPrimitive(element);
52072} or {
52073 find interpretation(problem,interpretation);
52074 PartialInterpretation.openWorldElements(interpretation,element);
52075 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
52076 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
52077 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
52078 neg find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,element);
52079 neg find mustInstanceOfEObject_class(problem,interpretation,element);
52080 neg find scopeDisallowsNewENamedElement_class(problem, interpretation);
52081 neg find isPrimitive(element);
52082} or
52083{ find mustInstanceOfENamedElement_class(problem,interpretation,element); }
52084/**
52085 * An element must be an instance of type "EObject class".
52086 */
52087private pattern mustInstanceOfEObject_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
52088 Type.name(type,"EObject class");
52089 find directInstanceOf(problem,interpretation,element,type);
52090}
52091private pattern scopeDisallowsNewEObject_class(problem:LogicProblem, interpretation:PartialInterpretation) {
52092 find interpretation(problem,interpretation);
52093 PartialInterpretation.scopes(interpretation,scope);
52094 Scope.targetTypeInterpretation(scope,typeInterpretation);
52095 Scope.maxNewElements(scope,0);
52096 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
52097 Type.name(type,"EObject class");
52098}
52099
52100/**
52101 * An element may be an instance of type "EObject class".
52102 */
52103private pattern mayInstanceOfEObject_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
52104{
52105 find interpretation(problem,interpretation);
52106 PartialInterpretation.newElements(interpretation,element);
52107 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
52108 neg find mustInstanceOfEModelElement_class(problem,interpretation,element);
52109 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
52110 neg find scopeDisallowsNewEObject_class(problem, interpretation);
52111 neg find isPrimitive(element);
52112} or {
52113 find interpretation(problem,interpretation);
52114 PartialInterpretation.openWorldElements(interpretation,element);
52115 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
52116 neg find mustInstanceOfEModelElement_class(problem,interpretation,element);
52117 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
52118 neg find scopeDisallowsNewEObject_class(problem, interpretation);
52119 neg find isPrimitive(element);
52120} or
52121{ find mustInstanceOfEObject_class(problem,interpretation,element); }
52122/**
52123 * An element must be an instance of type "EOperation class".
52124 */
52125private pattern mustInstanceOfEOperation_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
52126 Type.name(type,"EOperation class");
52127 find directInstanceOf(problem,interpretation,element,type);
52128}
52129private pattern scopeDisallowsNewEOperation_class(problem:LogicProblem, interpretation:PartialInterpretation) {
52130 find interpretation(problem,interpretation);
52131 PartialInterpretation.scopes(interpretation,scope);
52132 Scope.targetTypeInterpretation(scope,typeInterpretation);
52133 Scope.maxNewElements(scope,0);
52134 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
52135 Type.name(type,"EOperation class");
52136}
52137
52138/**
52139 * An element may be an instance of type "EOperation class".
52140 */
52141private pattern mayInstanceOfEOperation_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
52142{
52143 find interpretation(problem,interpretation);
52144 PartialInterpretation.newElements(interpretation,element);
52145 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
52146 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
52147 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
52148 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
52149 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
52150 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
52151 neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element);
52152 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
52153 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
52154 neg find mustInstanceOfEObject_class(problem,interpretation,element);
52155 neg find scopeDisallowsNewEOperation_class(problem, interpretation);
52156 neg find isPrimitive(element);
52157} or {
52158 find interpretation(problem,interpretation);
52159 PartialInterpretation.openWorldElements(interpretation,element);
52160 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
52161 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
52162 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
52163 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
52164 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
52165 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
52166 neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element);
52167 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
52168 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
52169 neg find mustInstanceOfEObject_class(problem,interpretation,element);
52170 neg find scopeDisallowsNewEOperation_class(problem, interpretation);
52171 neg find isPrimitive(element);
52172} or
52173{ find mustInstanceOfEOperation_class(problem,interpretation,element); }
52174/**
52175 * An element must be an instance of type "EPackage class".
52176 */
52177private pattern mustInstanceOfEPackage_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
52178 Type.name(type,"EPackage class");
52179 find directInstanceOf(problem,interpretation,element,type);
52180}
52181private pattern scopeDisallowsNewEPackage_class(problem:LogicProblem, interpretation:PartialInterpretation) {
52182 find interpretation(problem,interpretation);
52183 PartialInterpretation.scopes(interpretation,scope);
52184 Scope.targetTypeInterpretation(scope,typeInterpretation);
52185 Scope.maxNewElements(scope,0);
52186 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
52187 Type.name(type,"EPackage class");
52188}
52189
52190/**
52191 * An element may be an instance of type "EPackage class".
52192 */
52193private pattern mayInstanceOfEPackage_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
52194{
52195 find interpretation(problem,interpretation);
52196 PartialInterpretation.newElements(interpretation,element);
52197 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
52198 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
52199 neg find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,element);
52200 neg find mustInstanceOfEObject_class(problem,interpretation,element);
52201 neg find scopeDisallowsNewEPackage_class(problem, interpretation);
52202 neg find isPrimitive(element);
52203} or {
52204 find interpretation(problem,interpretation);
52205 PartialInterpretation.openWorldElements(interpretation,element);
52206 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
52207 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
52208 neg find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,element);
52209 neg find mustInstanceOfEObject_class(problem,interpretation,element);
52210 neg find scopeDisallowsNewEPackage_class(problem, interpretation);
52211 neg find isPrimitive(element);
52212} or
52213{ find mustInstanceOfEPackage_class(problem,interpretation,element); }
52214/**
52215 * An element must be an instance of type "EParameter class".
52216 */
52217private pattern mustInstanceOfEParameter_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
52218 Type.name(type,"EParameter class");
52219 find directInstanceOf(problem,interpretation,element,type);
52220}
52221private pattern scopeDisallowsNewEParameter_class(problem:LogicProblem, interpretation:PartialInterpretation) {
52222 find interpretation(problem,interpretation);
52223 PartialInterpretation.scopes(interpretation,scope);
52224 Scope.targetTypeInterpretation(scope,typeInterpretation);
52225 Scope.maxNewElements(scope,0);
52226 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
52227 Type.name(type,"EParameter class");
52228}
52229
52230/**
52231 * An element may be an instance of type "EParameter class".
52232 */
52233private pattern mayInstanceOfEParameter_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
52234{
52235 find interpretation(problem,interpretation);
52236 PartialInterpretation.newElements(interpretation,element);
52237 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
52238 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
52239 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
52240 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
52241 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
52242 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
52243 neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element);
52244 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
52245 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
52246 neg find mustInstanceOfEObject_class(problem,interpretation,element);
52247 neg find scopeDisallowsNewEParameter_class(problem, interpretation);
52248 neg find isPrimitive(element);
52249} or {
52250 find interpretation(problem,interpretation);
52251 PartialInterpretation.openWorldElements(interpretation,element);
52252 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
52253 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
52254 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
52255 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
52256 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
52257 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
52258 neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element);
52259 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
52260 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
52261 neg find mustInstanceOfEObject_class(problem,interpretation,element);
52262 neg find scopeDisallowsNewEParameter_class(problem, interpretation);
52263 neg find isPrimitive(element);
52264} or
52265{ find mustInstanceOfEParameter_class(problem,interpretation,element); }
52266/**
52267 * An element must be an instance of type "EReference class".
52268 */
52269private pattern mustInstanceOfEReference_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
52270 Type.name(type,"EReference class");
52271 find directInstanceOf(problem,interpretation,element,type);
52272}
52273private pattern scopeDisallowsNewEReference_class(problem:LogicProblem, interpretation:PartialInterpretation) {
52274 find interpretation(problem,interpretation);
52275 PartialInterpretation.scopes(interpretation,scope);
52276 Scope.targetTypeInterpretation(scope,typeInterpretation);
52277 Scope.maxNewElements(scope,0);
52278 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
52279 Type.name(type,"EReference class");
52280}
52281
52282/**
52283 * An element may be an instance of type "EReference class".
52284 */
52285private pattern mayInstanceOfEReference_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
52286{
52287 find interpretation(problem,interpretation);
52288 PartialInterpretation.newElements(interpretation,element);
52289 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
52290 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
52291 neg find mustInstanceOfEAttribute_class(problem,interpretation,element);
52292 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
52293 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
52294 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
52295 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
52296 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
52297 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
52298 neg find mustInstanceOfEObject_class(problem,interpretation,element);
52299 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
52300 neg find scopeDisallowsNewEReference_class(problem, interpretation);
52301 neg find isPrimitive(element);
52302} or {
52303 find interpretation(problem,interpretation);
52304 PartialInterpretation.openWorldElements(interpretation,element);
52305 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
52306 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
52307 neg find mustInstanceOfEAttribute_class(problem,interpretation,element);
52308 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
52309 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
52310 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
52311 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
52312 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
52313 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
52314 neg find mustInstanceOfEObject_class(problem,interpretation,element);
52315 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
52316 neg find scopeDisallowsNewEReference_class(problem, interpretation);
52317 neg find isPrimitive(element);
52318} or
52319{ find mustInstanceOfEReference_class(problem,interpretation,element); }
52320/**
52321 * An element must be an instance of type "EStructuralFeature class".
52322 */
52323private pattern mustInstanceOfEStructuralFeature_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
52324 Type.name(type,"EStructuralFeature class");
52325 find directInstanceOf(problem,interpretation,element,type);
52326}
52327private pattern scopeDisallowsNewEStructuralFeature_class(problem:LogicProblem, interpretation:PartialInterpretation) {
52328 find interpretation(problem,interpretation);
52329 PartialInterpretation.scopes(interpretation,scope);
52330 Scope.targetTypeInterpretation(scope,typeInterpretation);
52331 Scope.maxNewElements(scope,0);
52332 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
52333 Type.name(type,"EStructuralFeature class");
52334}
52335
52336/**
52337 * An element may be an instance of type "EStructuralFeature class".
52338 */
52339private pattern mayInstanceOfEStructuralFeature_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
52340{
52341 find interpretation(problem,interpretation);
52342 PartialInterpretation.newElements(interpretation,element);
52343 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
52344 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
52345 neg find mustInstanceOfEAttribute_class(problem,interpretation,element);
52346 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
52347 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
52348 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
52349 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
52350 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
52351 neg find mustInstanceOfEReference_class(problem,interpretation,element);
52352 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
52353 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
52354 neg find mustInstanceOfEObject_class(problem,interpretation,element);
52355 neg find scopeDisallowsNewEStructuralFeature_class(problem, interpretation);
52356 neg find isPrimitive(element);
52357} or {
52358 find interpretation(problem,interpretation);
52359 PartialInterpretation.openWorldElements(interpretation,element);
52360 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
52361 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
52362 neg find mustInstanceOfEAttribute_class(problem,interpretation,element);
52363 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
52364 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
52365 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
52366 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
52367 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
52368 neg find mustInstanceOfEReference_class(problem,interpretation,element);
52369 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
52370 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
52371 neg find mustInstanceOfEObject_class(problem,interpretation,element);
52372 neg find scopeDisallowsNewEStructuralFeature_class(problem, interpretation);
52373 neg find isPrimitive(element);
52374} or
52375{ find mustInstanceOfEStructuralFeature_class(problem,interpretation,element); }
52376/**
52377 * An element must be an instance of type "ETypedElement class".
52378 */
52379private pattern mustInstanceOfETypedElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
52380 Type.name(type,"ETypedElement class");
52381 find directInstanceOf(problem,interpretation,element,type);
52382}
52383private pattern scopeDisallowsNewETypedElement_class(problem:LogicProblem, interpretation:PartialInterpretation) {
52384 find interpretation(problem,interpretation);
52385 PartialInterpretation.scopes(interpretation,scope);
52386 Scope.targetTypeInterpretation(scope,typeInterpretation);
52387 Scope.maxNewElements(scope,0);
52388 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
52389 Type.name(type,"ETypedElement class");
52390}
52391
52392/**
52393 * An element may be an instance of type "ETypedElement class".
52394 */
52395private pattern mayInstanceOfETypedElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
52396{
52397 find interpretation(problem,interpretation);
52398 PartialInterpretation.newElements(interpretation,element);
52399 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
52400 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
52401 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
52402 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
52403 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
52404 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
52405 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
52406 neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element);
52407 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
52408 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
52409 neg find mustInstanceOfEObject_class(problem,interpretation,element);
52410 neg find scopeDisallowsNewETypedElement_class(problem, interpretation);
52411 neg find isPrimitive(element);
52412} or {
52413 find interpretation(problem,interpretation);
52414 PartialInterpretation.openWorldElements(interpretation,element);
52415 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
52416 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
52417 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
52418 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
52419 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
52420 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
52421 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
52422 neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element);
52423 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
52424 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
52425 neg find mustInstanceOfEObject_class(problem,interpretation,element);
52426 neg find scopeDisallowsNewETypedElement_class(problem, interpretation);
52427 neg find isPrimitive(element);
52428} or
52429{ find mustInstanceOfETypedElement_class(problem,interpretation,element); }
52430/**
52431 * An element must be an instance of type "EStringToStringMapEntry class".
52432 */
52433private pattern mustInstanceOfEStringToStringMapEntry_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
52434 Type.name(type,"EStringToStringMapEntry class");
52435 find directInstanceOf(problem,interpretation,element,type);
52436}
52437private pattern scopeDisallowsNewEStringToStringMapEntry_class(problem:LogicProblem, interpretation:PartialInterpretation) {
52438 find interpretation(problem,interpretation);
52439 PartialInterpretation.scopes(interpretation,scope);
52440 Scope.targetTypeInterpretation(scope,typeInterpretation);
52441 Scope.maxNewElements(scope,0);
52442 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
52443 Type.name(type,"EStringToStringMapEntry class");
52444}
52445
52446/**
52447 * An element may be an instance of type "EStringToStringMapEntry class".
52448 */
52449private pattern mayInstanceOfEStringToStringMapEntry_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
52450{
52451 find interpretation(problem,interpretation);
52452 PartialInterpretation.newElements(interpretation,element);
52453 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
52454 neg find mustInstanceOfEModelElement_class(problem,interpretation,element);
52455 neg find mustInstanceOfEObject_class(problem,interpretation,element);
52456 neg find scopeDisallowsNewEStringToStringMapEntry_class(problem, interpretation);
52457 neg find isPrimitive(element);
52458} or {
52459 find interpretation(problem,interpretation);
52460 PartialInterpretation.openWorldElements(interpretation,element);
52461 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
52462 neg find mustInstanceOfEModelElement_class(problem,interpretation,element);
52463 neg find mustInstanceOfEObject_class(problem,interpretation,element);
52464 neg find scopeDisallowsNewEStringToStringMapEntry_class(problem, interpretation);
52465 neg find isPrimitive(element);
52466} or
52467{ find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); }
52468/**
52469 * An element must be an instance of type "EGenericType class".
52470 */
52471private pattern mustInstanceOfEGenericType_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
52472 Type.name(type,"EGenericType class");
52473 find directInstanceOf(problem,interpretation,element,type);
52474}
52475private pattern scopeDisallowsNewEGenericType_class(problem:LogicProblem, interpretation:PartialInterpretation) {
52476 find interpretation(problem,interpretation);
52477 PartialInterpretation.scopes(interpretation,scope);
52478 Scope.targetTypeInterpretation(scope,typeInterpretation);
52479 Scope.maxNewElements(scope,0);
52480 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
52481 Type.name(type,"EGenericType class");
52482}
52483
52484/**
52485 * An element may be an instance of type "EGenericType class".
52486 */
52487private pattern mayInstanceOfEGenericType_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
52488{
52489 find interpretation(problem,interpretation);
52490 PartialInterpretation.newElements(interpretation,element);
52491 neg find mustInstanceOfEModelElement_class(problem,interpretation,element);
52492 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
52493 neg find mustInstanceOfEObject_class(problem,interpretation,element);
52494 neg find scopeDisallowsNewEGenericType_class(problem, interpretation);
52495 neg find isPrimitive(element);
52496} or {
52497 find interpretation(problem,interpretation);
52498 PartialInterpretation.openWorldElements(interpretation,element);
52499 neg find mustInstanceOfEModelElement_class(problem,interpretation,element);
52500 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
52501 neg find mustInstanceOfEObject_class(problem,interpretation,element);
52502 neg find scopeDisallowsNewEGenericType_class(problem, interpretation);
52503 neg find isPrimitive(element);
52504} or
52505{ find mustInstanceOfEGenericType_class(problem,interpretation,element); }
52506/**
52507 * An element must be an instance of type "ETypeParameter class".
52508 */
52509private pattern mustInstanceOfETypeParameter_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
52510 Type.name(type,"ETypeParameter class");
52511 find directInstanceOf(problem,interpretation,element,type);
52512}
52513private pattern scopeDisallowsNewETypeParameter_class(problem:LogicProblem, interpretation:PartialInterpretation) {
52514 find interpretation(problem,interpretation);
52515 PartialInterpretation.scopes(interpretation,scope);
52516 Scope.targetTypeInterpretation(scope,typeInterpretation);
52517 Scope.maxNewElements(scope,0);
52518 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
52519 Type.name(type,"ETypeParameter class");
52520}
52521
52522/**
52523 * An element may be an instance of type "ETypeParameter class".
52524 */
52525private pattern mayInstanceOfETypeParameter_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
52526{
52527 find interpretation(problem,interpretation);
52528 PartialInterpretation.newElements(interpretation,element);
52529 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
52530 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
52531 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
52532 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
52533 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
52534 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
52535 neg find mustInstanceOfEObject_class(problem,interpretation,element);
52536 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
52537 neg find scopeDisallowsNewETypeParameter_class(problem, interpretation);
52538 neg find isPrimitive(element);
52539} or {
52540 find interpretation(problem,interpretation);
52541 PartialInterpretation.openWorldElements(interpretation,element);
52542 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
52543 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
52544 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
52545 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
52546 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
52547 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
52548 neg find mustInstanceOfEObject_class(problem,interpretation,element);
52549 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
52550 neg find scopeDisallowsNewETypeParameter_class(problem, interpretation);
52551 neg find isPrimitive(element);
52552} or
52553{ find mustInstanceOfETypeParameter_class(problem,interpretation,element); }
52554/**
52555 * An element must be an instance of type "EModelElement class DefinedPart".
52556 */
52557private pattern mustInstanceOfEModelElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
52558 Type.name(type,"EModelElement class DefinedPart");
52559 find directInstanceOf(problem,interpretation,element,type);
52560}
52561private pattern scopeDisallowsNewEModelElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) {
52562 find interpretation(problem,interpretation);
52563 PartialInterpretation.scopes(interpretation,scope);
52564 Scope.targetTypeInterpretation(scope,typeInterpretation);
52565 Scope.maxNewElements(scope,0);
52566 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
52567 Type.name(type,"EModelElement class DefinedPart");
52568}
52569
52570/**
52571 * An element may be an instance of type "EModelElement class DefinedPart".
52572 */
52573private pattern mayInstanceOfEModelElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
52574{ find mustInstanceOfEModelElement_class_DefinedPart(problem,interpretation,element); }
52575/**
52576 * An element must be an instance of type "EModelElement class UndefinedPart".
52577 */
52578private pattern mustInstanceOfEModelElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
52579 Type.name(type,"EModelElement class UndefinedPart");
52580 find directInstanceOf(problem,interpretation,element,type);
52581}
52582private pattern scopeDisallowsNewEModelElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) {
52583 find interpretation(problem,interpretation);
52584 PartialInterpretation.scopes(interpretation,scope);
52585 Scope.targetTypeInterpretation(scope,typeInterpretation);
52586 Scope.maxNewElements(scope,0);
52587 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
52588 Type.name(type,"EModelElement class UndefinedPart");
52589}
52590
52591/**
52592 * An element may be an instance of type "EModelElement class UndefinedPart".
52593 */
52594private pattern mayInstanceOfEModelElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
52595{
52596 find interpretation(problem,interpretation);
52597 PartialInterpretation.newElements(interpretation,element);
52598 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
52599 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
52600 neg find mustInstanceOfENamedElement_class(problem,interpretation,element);
52601 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
52602 neg find mustInstanceOfEObject_class(problem,interpretation,element);
52603 neg find scopeDisallowsNewEModelElement_class_UndefinedPart(problem, interpretation);
52604 neg find isPrimitive(element);
52605} or {
52606 find interpretation(problem,interpretation);
52607 PartialInterpretation.openWorldElements(interpretation,element);
52608 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
52609 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
52610 neg find mustInstanceOfENamedElement_class(problem,interpretation,element);
52611 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
52612 neg find mustInstanceOfEObject_class(problem,interpretation,element);
52613 neg find scopeDisallowsNewEModelElement_class_UndefinedPart(problem, interpretation);
52614 neg find isPrimitive(element);
52615} or
52616{ find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,element); }
52617/**
52618 * An element must be an instance of type "ENamedElement class DefinedPart".
52619 */
52620private pattern mustInstanceOfENamedElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
52621 Type.name(type,"ENamedElement class DefinedPart");
52622 find directInstanceOf(problem,interpretation,element,type);
52623}
52624private pattern scopeDisallowsNewENamedElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) {
52625 find interpretation(problem,interpretation);
52626 PartialInterpretation.scopes(interpretation,scope);
52627 Scope.targetTypeInterpretation(scope,typeInterpretation);
52628 Scope.maxNewElements(scope,0);
52629 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
52630 Type.name(type,"ENamedElement class DefinedPart");
52631}
52632
52633/**
52634 * An element may be an instance of type "ENamedElement class DefinedPart".
52635 */
52636private pattern mayInstanceOfENamedElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
52637{ find mustInstanceOfENamedElement_class_DefinedPart(problem,interpretation,element); }
52638/**
52639 * An element must be an instance of type "ENamedElement class UndefinedPart".
52640 */
52641private pattern mustInstanceOfENamedElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
52642 Type.name(type,"ENamedElement class UndefinedPart");
52643 find directInstanceOf(problem,interpretation,element,type);
52644}
52645private pattern scopeDisallowsNewENamedElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) {
52646 find interpretation(problem,interpretation);
52647 PartialInterpretation.scopes(interpretation,scope);
52648 Scope.targetTypeInterpretation(scope,typeInterpretation);
52649 Scope.maxNewElements(scope,0);
52650 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
52651 Type.name(type,"ENamedElement class UndefinedPart");
52652}
52653
52654/**
52655 * An element may be an instance of type "ENamedElement class UndefinedPart".
52656 */
52657private pattern mayInstanceOfENamedElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
52658{
52659 find interpretation(problem,interpretation);
52660 PartialInterpretation.newElements(interpretation,element);
52661 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
52662 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
52663 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
52664 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
52665 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
52666 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
52667 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
52668 neg find mustInstanceOfEObject_class(problem,interpretation,element);
52669 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
52670 neg find scopeDisallowsNewENamedElement_class_UndefinedPart(problem, interpretation);
52671 neg find isPrimitive(element);
52672} or {
52673 find interpretation(problem,interpretation);
52674 PartialInterpretation.openWorldElements(interpretation,element);
52675 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
52676 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
52677 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
52678 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
52679 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
52680 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
52681 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
52682 neg find mustInstanceOfEObject_class(problem,interpretation,element);
52683 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
52684 neg find scopeDisallowsNewENamedElement_class_UndefinedPart(problem, interpretation);
52685 neg find isPrimitive(element);
52686} or
52687{ find mustInstanceOfENamedElement_class_UndefinedPart(problem,interpretation,element); }
52688/**
52689 * An element must be an instance of type "EPackage class DefinedPart".
52690 */
52691private pattern mustInstanceOfEPackage_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
52692 Type.name(type,"EPackage class DefinedPart");
52693 find directInstanceOf(problem,interpretation,element,type);
52694}
52695private pattern scopeDisallowsNewEPackage_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) {
52696 find interpretation(problem,interpretation);
52697 PartialInterpretation.scopes(interpretation,scope);
52698 Scope.targetTypeInterpretation(scope,typeInterpretation);
52699 Scope.maxNewElements(scope,0);
52700 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
52701 Type.name(type,"EPackage class DefinedPart");
52702}
52703
52704/**
52705 * An element may be an instance of type "EPackage class DefinedPart".
52706 */
52707private pattern mayInstanceOfEPackage_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
52708{ find mustInstanceOfEPackage_class_DefinedPart(problem,interpretation,element); }
52709/**
52710 * An element must be an instance of type "EPackage class UndefinedPart".
52711 */
52712private pattern mustInstanceOfEPackage_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
52713 Type.name(type,"EPackage class UndefinedPart");
52714 find directInstanceOf(problem,interpretation,element,type);
52715}
52716private pattern scopeDisallowsNewEPackage_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) {
52717 find interpretation(problem,interpretation);
52718 PartialInterpretation.scopes(interpretation,scope);
52719 Scope.targetTypeInterpretation(scope,typeInterpretation);
52720 Scope.maxNewElements(scope,0);
52721 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
52722 Type.name(type,"EPackage class UndefinedPart");
52723}
52724
52725/**
52726 * An element may be an instance of type "EPackage class UndefinedPart".
52727 */
52728private pattern mayInstanceOfEPackage_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
52729{
52730 find interpretation(problem,interpretation);
52731 PartialInterpretation.newElements(interpretation,element);
52732 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
52733 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
52734 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
52735 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
52736 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
52737 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
52738 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
52739 neg find mustInstanceOfEObject_class(problem,interpretation,element);
52740 neg find scopeDisallowsNewEPackage_class_UndefinedPart(problem, interpretation);
52741 neg find isPrimitive(element);
52742} or {
52743 find interpretation(problem,interpretation);
52744 PartialInterpretation.openWorldElements(interpretation,element);
52745 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
52746 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
52747 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
52748 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
52749 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
52750 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
52751 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
52752 neg find mustInstanceOfEObject_class(problem,interpretation,element);
52753 neg find scopeDisallowsNewEPackage_class_UndefinedPart(problem, interpretation);
52754 neg find isPrimitive(element);
52755} or
52756{ find mustInstanceOfEPackage_class_UndefinedPart(problem,interpretation,element); }
52757
52758//////////
52759// 1.2 Relation Declaration Indexers
52760//////////
52761/**
52762 * Matcher for detecting tuples t where []eAttributeType reference EAttribute(source,target)
52763 */
52764private pattern mustInRelationeAttributeType_reference_EAttribute(
52765 problem:LogicProblem, interpretation:PartialInterpretation,
52766 source: DefinedElement, target:DefinedElement)
52767{
52768 find interpretation(problem,interpretation);
52769 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
52770 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAttributeType reference EAttribute");
52771 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
52772 BinaryElementRelationLink.param1(link,source);
52773 BinaryElementRelationLink.param2(link,target);
52774}
52775/**
52776 * Matcher for detecting tuples t where <>eAttributeType reference EAttribute(source,target)
52777 */
52778private pattern mayInRelationeAttributeType_reference_EAttribute(
52779 problem:LogicProblem, interpretation:PartialInterpretation,
52780 source: DefinedElement, target:DefinedElement)
52781{
52782 find interpretation(problem,interpretation);
52783 // The two endpoint of the link have to exist
52784 find mayExist(problem, interpretation, source);
52785 find mayExist(problem, interpretation, target);
52786 // Type consistency
52787 find mayInstanceOfEAttribute_class(problem,interpretation,source);
52788 find mayInstanceOfEDataType_class(problem,interpretation,target);
52789 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
52790 // the upper bound of the multiplicity should be considered.
52791 numberOfExistingReferences == count find mustInRelationeAttributeType_reference_EAttribute(problem,interpretation,source,_);
52792 check(numberOfExistingReferences < 1);
52793} or {
52794 find mustInRelationeAttributeType_reference_EAttribute(problem,interpretation,source,target);
52795}
52796/**
52797 * Matcher for detecting tuples t where []details reference EAnnotation(source,target)
52798 */
52799private pattern mustInRelationdetails_reference_EAnnotation(
52800 problem:LogicProblem, interpretation:PartialInterpretation,
52801 source: DefinedElement, target:DefinedElement)
52802{
52803 find interpretation(problem,interpretation);
52804 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
52805 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"details reference EAnnotation");
52806 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
52807 BinaryElementRelationLink.param1(link,source);
52808 BinaryElementRelationLink.param2(link,target);
52809}
52810/**
52811 * Matcher for detecting tuples t where <>details reference EAnnotation(source,target)
52812 */
52813private pattern mayInRelationdetails_reference_EAnnotation(
52814 problem:LogicProblem, interpretation:PartialInterpretation,
52815 source: DefinedElement, target:DefinedElement)
52816{
52817 find interpretation(problem,interpretation);
52818 // The two endpoint of the link have to exist
52819 find mayExist(problem, interpretation, source);
52820 find mayExist(problem, interpretation, target);
52821 // Type consistency
52822 find mayInstanceOfEAnnotation_class(problem,interpretation,source);
52823 find mayInstanceOfEStringToStringMapEntry_class(problem,interpretation,target);
52824 // The reference is containment, then a new reference cannot be create if:
52825 // 1. Multiple parents
52826 neg find mustContains4(problem,interpretation,_,target);
52827 // 2. Circle in the containment hierarchy
52828 neg find mustTransitiveContains(source,target);
52829} or {
52830 find mustInRelationdetails_reference_EAnnotation(problem,interpretation,source,target);
52831}
52832/**
52833 * Matcher for detecting tuples t where []eModelElement reference EAnnotation(source,target)
52834 */
52835private pattern mustInRelationeModelElement_reference_EAnnotation(
52836 problem:LogicProblem, interpretation:PartialInterpretation,
52837 source: DefinedElement, target:DefinedElement)
52838{
52839 find interpretation(problem,interpretation);
52840 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
52841 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eModelElement reference EAnnotation");
52842 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
52843 BinaryElementRelationLink.param1(link,source);
52844 BinaryElementRelationLink.param2(link,target);
52845}
52846/**
52847 * Matcher for detecting tuples t where <>eModelElement reference EAnnotation(source,target)
52848 */
52849private pattern mayInRelationeModelElement_reference_EAnnotation(
52850 problem:LogicProblem, interpretation:PartialInterpretation,
52851 source: DefinedElement, target:DefinedElement)
52852{
52853 find interpretation(problem,interpretation);
52854 // The two endpoint of the link have to exist
52855 find mayExist(problem, interpretation, source);
52856 find mayExist(problem, interpretation, target);
52857 // Type consistency
52858 find mayInstanceOfEAnnotation_class(problem,interpretation,source);
52859 find mayInstanceOfEModelElement_class(problem,interpretation,target);
52860 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
52861 // the upper bound of the multiplicity should be considered.
52862 numberOfExistingReferences == count find mustInRelationeModelElement_reference_EAnnotation(problem,interpretation,source,_);
52863 check(numberOfExistingReferences < 1);
52864 // The eOpposite of the reference is containment, then a referene cannot be created if
52865 // 1. Multiple parents
52866 neg find mustContains4(problem,interpretation,source,_);
52867 // 2. Circle in the containment hierarchy
52868 neg find mustTransitiveContains(source,target);
52869} or {
52870 find mustInRelationeModelElement_reference_EAnnotation(problem,interpretation,source,target);
52871}
52872/**
52873 * Matcher for detecting tuples t where []contents reference EAnnotation(source,target)
52874 */
52875private pattern mustInRelationcontents_reference_EAnnotation(
52876 problem:LogicProblem, interpretation:PartialInterpretation,
52877 source: DefinedElement, target:DefinedElement)
52878{
52879 find interpretation(problem,interpretation);
52880 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
52881 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"contents reference EAnnotation");
52882 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
52883 BinaryElementRelationLink.param1(link,source);
52884 BinaryElementRelationLink.param2(link,target);
52885}
52886/**
52887 * Matcher for detecting tuples t where <>contents reference EAnnotation(source,target)
52888 */
52889private pattern mayInRelationcontents_reference_EAnnotation(
52890 problem:LogicProblem, interpretation:PartialInterpretation,
52891 source: DefinedElement, target:DefinedElement)
52892{
52893 find interpretation(problem,interpretation);
52894 // The two endpoint of the link have to exist
52895 find mayExist(problem, interpretation, source);
52896 find mayExist(problem, interpretation, target);
52897 // Type consistency
52898 find mayInstanceOfEAnnotation_class(problem,interpretation,source);
52899 find mayInstanceOfEObject_class(problem,interpretation,target);
52900 // The reference is containment, then a new reference cannot be create if:
52901 // 1. Multiple parents
52902 neg find mustContains4(problem,interpretation,_,target);
52903 // 2. Circle in the containment hierarchy
52904 neg find mustTransitiveContains(source,target);
52905} or {
52906 find mustInRelationcontents_reference_EAnnotation(problem,interpretation,source,target);
52907}
52908/**
52909 * Matcher for detecting tuples t where []references reference EAnnotation(source,target)
52910 */
52911private pattern mustInRelationreferences_reference_EAnnotation(
52912 problem:LogicProblem, interpretation:PartialInterpretation,
52913 source: DefinedElement, target:DefinedElement)
52914{
52915 find interpretation(problem,interpretation);
52916 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
52917 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"references reference EAnnotation");
52918 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
52919 BinaryElementRelationLink.param1(link,source);
52920 BinaryElementRelationLink.param2(link,target);
52921}
52922/**
52923 * Matcher for detecting tuples t where <>references reference EAnnotation(source,target)
52924 */
52925private pattern mayInRelationreferences_reference_EAnnotation(
52926 problem:LogicProblem, interpretation:PartialInterpretation,
52927 source: DefinedElement, target:DefinedElement)
52928{
52929 find interpretation(problem,interpretation);
52930 // The two endpoint of the link have to exist
52931 find mayExist(problem, interpretation, source);
52932 find mayExist(problem, interpretation, target);
52933 // Type consistency
52934 find mayInstanceOfEAnnotation_class(problem,interpretation,source);
52935 find mayInstanceOfEObject_class(problem,interpretation,target);
52936} or {
52937 find mustInRelationreferences_reference_EAnnotation(problem,interpretation,source,target);
52938}
52939/**
52940 * Matcher for detecting tuples t where []eSuperTypes reference EClass(source,target)
52941 */
52942private pattern mustInRelationeSuperTypes_reference_EClass(
52943 problem:LogicProblem, interpretation:PartialInterpretation,
52944 source: DefinedElement, target:DefinedElement)
52945{
52946 find interpretation(problem,interpretation);
52947 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
52948 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eSuperTypes reference EClass");
52949 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
52950 BinaryElementRelationLink.param1(link,source);
52951 BinaryElementRelationLink.param2(link,target);
52952}
52953/**
52954 * Matcher for detecting tuples t where <>eSuperTypes reference EClass(source,target)
52955 */
52956private pattern mayInRelationeSuperTypes_reference_EClass(
52957 problem:LogicProblem, interpretation:PartialInterpretation,
52958 source: DefinedElement, target:DefinedElement)
52959{
52960 find interpretation(problem,interpretation);
52961 // The two endpoint of the link have to exist
52962 find mayExist(problem, interpretation, source);
52963 find mayExist(problem, interpretation, target);
52964 // Type consistency
52965 find mayInstanceOfEClass_class(problem,interpretation,source);
52966 find mayInstanceOfEClass_class(problem,interpretation,target);
52967} or {
52968 find mustInRelationeSuperTypes_reference_EClass(problem,interpretation,source,target);
52969}
52970/**
52971 * Matcher for detecting tuples t where []eOperations reference EClass(source,target)
52972 */
52973private pattern mustInRelationeOperations_reference_EClass(
52974 problem:LogicProblem, interpretation:PartialInterpretation,
52975 source: DefinedElement, target:DefinedElement)
52976{
52977 find interpretation(problem,interpretation);
52978 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
52979 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eOperations reference EClass");
52980 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
52981 BinaryElementRelationLink.param1(link,source);
52982 BinaryElementRelationLink.param2(link,target);
52983}
52984/**
52985 * Matcher for detecting tuples t where <>eOperations reference EClass(source,target)
52986 */
52987private pattern mayInRelationeOperations_reference_EClass(
52988 problem:LogicProblem, interpretation:PartialInterpretation,
52989 source: DefinedElement, target:DefinedElement)
52990{
52991 find interpretation(problem,interpretation);
52992 // The two endpoint of the link have to exist
52993 find mayExist(problem, interpretation, source);
52994 find mayExist(problem, interpretation, target);
52995 // Type consistency
52996 find mayInstanceOfEClass_class(problem,interpretation,source);
52997 find mayInstanceOfEOperation_class(problem,interpretation,target);
52998 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
52999 // the upper bound of the opposite reference multiplicity should be considered.
53000 numberOfExistingOppositeReferences == count find mustInRelationeContainingClass_reference_EOperation(problem,interpretation,target,_);
53001 check(numberOfExistingOppositeReferences < 1);
53002 // The reference is containment, then a new reference cannot be create if:
53003 // 1. Multiple parents
53004 neg find mustContains4(problem,interpretation,_,target);
53005 // 2. Circle in the containment hierarchy
53006 neg find mustTransitiveContains(source,target);
53007} or {
53008 find mustInRelationeOperations_reference_EClass(problem,interpretation,source,target);
53009}
53010/**
53011 * Matcher for detecting tuples t where []eAllAttributes reference EClass(source,target)
53012 */
53013private pattern mustInRelationeAllAttributes_reference_EClass(
53014 problem:LogicProblem, interpretation:PartialInterpretation,
53015 source: DefinedElement, target:DefinedElement)
53016{
53017 find interpretation(problem,interpretation);
53018 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
53019 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllAttributes reference EClass");
53020 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
53021 BinaryElementRelationLink.param1(link,source);
53022 BinaryElementRelationLink.param2(link,target);
53023}
53024/**
53025 * Matcher for detecting tuples t where <>eAllAttributes reference EClass(source,target)
53026 */
53027private pattern mayInRelationeAllAttributes_reference_EClass(
53028 problem:LogicProblem, interpretation:PartialInterpretation,
53029 source: DefinedElement, target:DefinedElement)
53030{
53031 find interpretation(problem,interpretation);
53032 // The two endpoint of the link have to exist
53033 find mayExist(problem, interpretation, source);
53034 find mayExist(problem, interpretation, target);
53035 // Type consistency
53036 find mayInstanceOfEClass_class(problem,interpretation,source);
53037 find mayInstanceOfEAttribute_class(problem,interpretation,target);
53038} or {
53039 find mustInRelationeAllAttributes_reference_EClass(problem,interpretation,source,target);
53040}
53041/**
53042 * Matcher for detecting tuples t where []eAllReferences reference EClass(source,target)
53043 */
53044private pattern mustInRelationeAllReferences_reference_EClass(
53045 problem:LogicProblem, interpretation:PartialInterpretation,
53046 source: DefinedElement, target:DefinedElement)
53047{
53048 find interpretation(problem,interpretation);
53049 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
53050 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllReferences reference EClass");
53051 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
53052 BinaryElementRelationLink.param1(link,source);
53053 BinaryElementRelationLink.param2(link,target);
53054}
53055/**
53056 * Matcher for detecting tuples t where <>eAllReferences reference EClass(source,target)
53057 */
53058private pattern mayInRelationeAllReferences_reference_EClass(
53059 problem:LogicProblem, interpretation:PartialInterpretation,
53060 source: DefinedElement, target:DefinedElement)
53061{
53062 find interpretation(problem,interpretation);
53063 // The two endpoint of the link have to exist
53064 find mayExist(problem, interpretation, source);
53065 find mayExist(problem, interpretation, target);
53066 // Type consistency
53067 find mayInstanceOfEClass_class(problem,interpretation,source);
53068 find mayInstanceOfEReference_class(problem,interpretation,target);
53069} or {
53070 find mustInRelationeAllReferences_reference_EClass(problem,interpretation,source,target);
53071}
53072/**
53073 * Matcher for detecting tuples t where []eReferences reference EClass(source,target)
53074 */
53075private pattern mustInRelationeReferences_reference_EClass(
53076 problem:LogicProblem, interpretation:PartialInterpretation,
53077 source: DefinedElement, target:DefinedElement)
53078{
53079 find interpretation(problem,interpretation);
53080 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
53081 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eReferences reference EClass");
53082 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
53083 BinaryElementRelationLink.param1(link,source);
53084 BinaryElementRelationLink.param2(link,target);
53085}
53086/**
53087 * Matcher for detecting tuples t where <>eReferences reference EClass(source,target)
53088 */
53089private pattern mayInRelationeReferences_reference_EClass(
53090 problem:LogicProblem, interpretation:PartialInterpretation,
53091 source: DefinedElement, target:DefinedElement)
53092{
53093 find interpretation(problem,interpretation);
53094 // The two endpoint of the link have to exist
53095 find mayExist(problem, interpretation, source);
53096 find mayExist(problem, interpretation, target);
53097 // Type consistency
53098 find mayInstanceOfEClass_class(problem,interpretation,source);
53099 find mayInstanceOfEReference_class(problem,interpretation,target);
53100} or {
53101 find mustInRelationeReferences_reference_EClass(problem,interpretation,source,target);
53102}
53103/**
53104 * Matcher for detecting tuples t where []eAttributes reference EClass(source,target)
53105 */
53106private pattern mustInRelationeAttributes_reference_EClass(
53107 problem:LogicProblem, interpretation:PartialInterpretation,
53108 source: DefinedElement, target:DefinedElement)
53109{
53110 find interpretation(problem,interpretation);
53111 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
53112 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAttributes reference EClass");
53113 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
53114 BinaryElementRelationLink.param1(link,source);
53115 BinaryElementRelationLink.param2(link,target);
53116}
53117/**
53118 * Matcher for detecting tuples t where <>eAttributes reference EClass(source,target)
53119 */
53120private pattern mayInRelationeAttributes_reference_EClass(
53121 problem:LogicProblem, interpretation:PartialInterpretation,
53122 source: DefinedElement, target:DefinedElement)
53123{
53124 find interpretation(problem,interpretation);
53125 // The two endpoint of the link have to exist
53126 find mayExist(problem, interpretation, source);
53127 find mayExist(problem, interpretation, target);
53128 // Type consistency
53129 find mayInstanceOfEClass_class(problem,interpretation,source);
53130 find mayInstanceOfEAttribute_class(problem,interpretation,target);
53131} or {
53132 find mustInRelationeAttributes_reference_EClass(problem,interpretation,source,target);
53133}
53134/**
53135 * Matcher for detecting tuples t where []eAllContainments reference EClass(source,target)
53136 */
53137private pattern mustInRelationeAllContainments_reference_EClass(
53138 problem:LogicProblem, interpretation:PartialInterpretation,
53139 source: DefinedElement, target:DefinedElement)
53140{
53141 find interpretation(problem,interpretation);
53142 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
53143 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllContainments reference EClass");
53144 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
53145 BinaryElementRelationLink.param1(link,source);
53146 BinaryElementRelationLink.param2(link,target);
53147}
53148/**
53149 * Matcher for detecting tuples t where <>eAllContainments reference EClass(source,target)
53150 */
53151private pattern mayInRelationeAllContainments_reference_EClass(
53152 problem:LogicProblem, interpretation:PartialInterpretation,
53153 source: DefinedElement, target:DefinedElement)
53154{
53155 find interpretation(problem,interpretation);
53156 // The two endpoint of the link have to exist
53157 find mayExist(problem, interpretation, source);
53158 find mayExist(problem, interpretation, target);
53159 // Type consistency
53160 find mayInstanceOfEClass_class(problem,interpretation,source);
53161 find mayInstanceOfEReference_class(problem,interpretation,target);
53162} or {
53163 find mustInRelationeAllContainments_reference_EClass(problem,interpretation,source,target);
53164}
53165/**
53166 * Matcher for detecting tuples t where []eAllOperations reference EClass(source,target)
53167 */
53168private pattern mustInRelationeAllOperations_reference_EClass(
53169 problem:LogicProblem, interpretation:PartialInterpretation,
53170 source: DefinedElement, target:DefinedElement)
53171{
53172 find interpretation(problem,interpretation);
53173 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
53174 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllOperations reference EClass");
53175 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
53176 BinaryElementRelationLink.param1(link,source);
53177 BinaryElementRelationLink.param2(link,target);
53178}
53179/**
53180 * Matcher for detecting tuples t where <>eAllOperations reference EClass(source,target)
53181 */
53182private pattern mayInRelationeAllOperations_reference_EClass(
53183 problem:LogicProblem, interpretation:PartialInterpretation,
53184 source: DefinedElement, target:DefinedElement)
53185{
53186 find interpretation(problem,interpretation);
53187 // The two endpoint of the link have to exist
53188 find mayExist(problem, interpretation, source);
53189 find mayExist(problem, interpretation, target);
53190 // Type consistency
53191 find mayInstanceOfEClass_class(problem,interpretation,source);
53192 find mayInstanceOfEOperation_class(problem,interpretation,target);
53193} or {
53194 find mustInRelationeAllOperations_reference_EClass(problem,interpretation,source,target);
53195}
53196/**
53197 * Matcher for detecting tuples t where []eAllStructuralFeatures reference EClass(source,target)
53198 */
53199private pattern mustInRelationeAllStructuralFeatures_reference_EClass(
53200 problem:LogicProblem, interpretation:PartialInterpretation,
53201 source: DefinedElement, target:DefinedElement)
53202{
53203 find interpretation(problem,interpretation);
53204 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
53205 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllStructuralFeatures reference EClass");
53206 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
53207 BinaryElementRelationLink.param1(link,source);
53208 BinaryElementRelationLink.param2(link,target);
53209}
53210/**
53211 * Matcher for detecting tuples t where <>eAllStructuralFeatures reference EClass(source,target)
53212 */
53213private pattern mayInRelationeAllStructuralFeatures_reference_EClass(
53214 problem:LogicProblem, interpretation:PartialInterpretation,
53215 source: DefinedElement, target:DefinedElement)
53216{
53217 find interpretation(problem,interpretation);
53218 // The two endpoint of the link have to exist
53219 find mayExist(problem, interpretation, source);
53220 find mayExist(problem, interpretation, target);
53221 // Type consistency
53222 find mayInstanceOfEClass_class(problem,interpretation,source);
53223 find mayInstanceOfEStructuralFeature_class(problem,interpretation,target);
53224} or {
53225 find mustInRelationeAllStructuralFeatures_reference_EClass(problem,interpretation,source,target);
53226}
53227/**
53228 * Matcher for detecting tuples t where []eAllSuperTypes reference EClass(source,target)
53229 */
53230private pattern mustInRelationeAllSuperTypes_reference_EClass(
53231 problem:LogicProblem, interpretation:PartialInterpretation,
53232 source: DefinedElement, target:DefinedElement)
53233{
53234 find interpretation(problem,interpretation);
53235 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
53236 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllSuperTypes reference EClass");
53237 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
53238 BinaryElementRelationLink.param1(link,source);
53239 BinaryElementRelationLink.param2(link,target);
53240}
53241/**
53242 * Matcher for detecting tuples t where <>eAllSuperTypes reference EClass(source,target)
53243 */
53244private pattern mayInRelationeAllSuperTypes_reference_EClass(
53245 problem:LogicProblem, interpretation:PartialInterpretation,
53246 source: DefinedElement, target:DefinedElement)
53247{
53248 find interpretation(problem,interpretation);
53249 // The two endpoint of the link have to exist
53250 find mayExist(problem, interpretation, source);
53251 find mayExist(problem, interpretation, target);
53252 // Type consistency
53253 find mayInstanceOfEClass_class(problem,interpretation,source);
53254 find mayInstanceOfEClass_class(problem,interpretation,target);
53255} or {
53256 find mustInRelationeAllSuperTypes_reference_EClass(problem,interpretation,source,target);
53257}
53258/**
53259 * Matcher for detecting tuples t where []eIDAttribute reference EClass(source,target)
53260 */
53261private pattern mustInRelationeIDAttribute_reference_EClass(
53262 problem:LogicProblem, interpretation:PartialInterpretation,
53263 source: DefinedElement, target:DefinedElement)
53264{
53265 find interpretation(problem,interpretation);
53266 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
53267 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eIDAttribute reference EClass");
53268 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
53269 BinaryElementRelationLink.param1(link,source);
53270 BinaryElementRelationLink.param2(link,target);
53271}
53272/**
53273 * Matcher for detecting tuples t where <>eIDAttribute reference EClass(source,target)
53274 */
53275private pattern mayInRelationeIDAttribute_reference_EClass(
53276 problem:LogicProblem, interpretation:PartialInterpretation,
53277 source: DefinedElement, target:DefinedElement)
53278{
53279 find interpretation(problem,interpretation);
53280 // The two endpoint of the link have to exist
53281 find mayExist(problem, interpretation, source);
53282 find mayExist(problem, interpretation, target);
53283 // Type consistency
53284 find mayInstanceOfEClass_class(problem,interpretation,source);
53285 find mayInstanceOfEAttribute_class(problem,interpretation,target);
53286 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
53287 // the upper bound of the multiplicity should be considered.
53288 numberOfExistingReferences == count find mustInRelationeIDAttribute_reference_EClass(problem,interpretation,source,_);
53289 check(numberOfExistingReferences < 1);
53290} or {
53291 find mustInRelationeIDAttribute_reference_EClass(problem,interpretation,source,target);
53292}
53293/**
53294 * Matcher for detecting tuples t where []eStructuralFeatures reference EClass(source,target)
53295 */
53296private pattern mustInRelationeStructuralFeatures_reference_EClass(
53297 problem:LogicProblem, interpretation:PartialInterpretation,
53298 source: DefinedElement, target:DefinedElement)
53299{
53300 find interpretation(problem,interpretation);
53301 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
53302 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eStructuralFeatures reference EClass");
53303 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
53304 BinaryElementRelationLink.param1(link,source);
53305 BinaryElementRelationLink.param2(link,target);
53306}
53307/**
53308 * Matcher for detecting tuples t where <>eStructuralFeatures reference EClass(source,target)
53309 */
53310private pattern mayInRelationeStructuralFeatures_reference_EClass(
53311 problem:LogicProblem, interpretation:PartialInterpretation,
53312 source: DefinedElement, target:DefinedElement)
53313{
53314 find interpretation(problem,interpretation);
53315 // The two endpoint of the link have to exist
53316 find mayExist(problem, interpretation, source);
53317 find mayExist(problem, interpretation, target);
53318 // Type consistency
53319 find mayInstanceOfEClass_class(problem,interpretation,source);
53320 find mayInstanceOfEStructuralFeature_class(problem,interpretation,target);
53321 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
53322 // the upper bound of the opposite reference multiplicity should be considered.
53323 numberOfExistingOppositeReferences == count find mustInRelationeContainingClass_reference_EStructuralFeature(problem,interpretation,target,_);
53324 check(numberOfExistingOppositeReferences < 1);
53325 // The reference is containment, then a new reference cannot be create if:
53326 // 1. Multiple parents
53327 neg find mustContains4(problem,interpretation,_,target);
53328 // 2. Circle in the containment hierarchy
53329 neg find mustTransitiveContains(source,target);
53330} or {
53331 find mustInRelationeStructuralFeatures_reference_EClass(problem,interpretation,source,target);
53332}
53333/**
53334 * Matcher for detecting tuples t where []eGenericSuperTypes reference EClass(source,target)
53335 */
53336private pattern mustInRelationeGenericSuperTypes_reference_EClass(
53337 problem:LogicProblem, interpretation:PartialInterpretation,
53338 source: DefinedElement, target:DefinedElement)
53339{
53340 find interpretation(problem,interpretation);
53341 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
53342 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eGenericSuperTypes reference EClass");
53343 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
53344 BinaryElementRelationLink.param1(link,source);
53345 BinaryElementRelationLink.param2(link,target);
53346}
53347/**
53348 * Matcher for detecting tuples t where <>eGenericSuperTypes reference EClass(source,target)
53349 */
53350private pattern mayInRelationeGenericSuperTypes_reference_EClass(
53351 problem:LogicProblem, interpretation:PartialInterpretation,
53352 source: DefinedElement, target:DefinedElement)
53353{
53354 find interpretation(problem,interpretation);
53355 // The two endpoint of the link have to exist
53356 find mayExist(problem, interpretation, source);
53357 find mayExist(problem, interpretation, target);
53358 // Type consistency
53359 find mayInstanceOfEClass_class(problem,interpretation,source);
53360 find mayInstanceOfEGenericType_class(problem,interpretation,target);
53361 // The reference is containment, then a new reference cannot be create if:
53362 // 1. Multiple parents
53363 neg find mustContains4(problem,interpretation,_,target);
53364 // 2. Circle in the containment hierarchy
53365 neg find mustTransitiveContains(source,target);
53366} or {
53367 find mustInRelationeGenericSuperTypes_reference_EClass(problem,interpretation,source,target);
53368}
53369/**
53370 * Matcher for detecting tuples t where []eAllGenericSuperTypes reference EClass(source,target)
53371 */
53372private pattern mustInRelationeAllGenericSuperTypes_reference_EClass(
53373 problem:LogicProblem, interpretation:PartialInterpretation,
53374 source: DefinedElement, target:DefinedElement)
53375{
53376 find interpretation(problem,interpretation);
53377 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
53378 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllGenericSuperTypes reference EClass");
53379 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
53380 BinaryElementRelationLink.param1(link,source);
53381 BinaryElementRelationLink.param2(link,target);
53382}
53383/**
53384 * Matcher for detecting tuples t where <>eAllGenericSuperTypes reference EClass(source,target)
53385 */
53386private pattern mayInRelationeAllGenericSuperTypes_reference_EClass(
53387 problem:LogicProblem, interpretation:PartialInterpretation,
53388 source: DefinedElement, target:DefinedElement)
53389{
53390 find interpretation(problem,interpretation);
53391 // The two endpoint of the link have to exist
53392 find mayExist(problem, interpretation, source);
53393 find mayExist(problem, interpretation, target);
53394 // Type consistency
53395 find mayInstanceOfEClass_class(problem,interpretation,source);
53396 find mayInstanceOfEGenericType_class(problem,interpretation,target);
53397} or {
53398 find mustInRelationeAllGenericSuperTypes_reference_EClass(problem,interpretation,source,target);
53399}
53400/**
53401 * Matcher for detecting tuples t where []ePackage reference EClassifier(source,target)
53402 */
53403private pattern mustInRelationePackage_reference_EClassifier(
53404 problem:LogicProblem, interpretation:PartialInterpretation,
53405 source: DefinedElement, target:DefinedElement)
53406{
53407 find interpretation(problem,interpretation);
53408 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
53409 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"ePackage reference EClassifier");
53410 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
53411 BinaryElementRelationLink.param1(link,source);
53412 BinaryElementRelationLink.param2(link,target);
53413}
53414/**
53415 * Matcher for detecting tuples t where <>ePackage reference EClassifier(source,target)
53416 */
53417private pattern mayInRelationePackage_reference_EClassifier(
53418 problem:LogicProblem, interpretation:PartialInterpretation,
53419 source: DefinedElement, target:DefinedElement)
53420{
53421 find interpretation(problem,interpretation);
53422 // The two endpoint of the link have to exist
53423 find mayExist(problem, interpretation, source);
53424 find mayExist(problem, interpretation, target);
53425 // Type consistency
53426 find mayInstanceOfEClassifier_class(problem,interpretation,source);
53427 find mayInstanceOfEPackage_class(problem,interpretation,target);
53428 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
53429 // the upper bound of the multiplicity should be considered.
53430 numberOfExistingReferences == count find mustInRelationePackage_reference_EClassifier(problem,interpretation,source,_);
53431 check(numberOfExistingReferences < 1);
53432 // The eOpposite of the reference is containment, then a referene cannot be created if
53433 // 1. Multiple parents
53434 neg find mustContains4(problem,interpretation,source,_);
53435 // 2. Circle in the containment hierarchy
53436 neg find mustTransitiveContains(source,target);
53437} or {
53438 find mustInRelationePackage_reference_EClassifier(problem,interpretation,source,target);
53439}
53440/**
53441 * Matcher for detecting tuples t where []eTypeParameters reference EClassifier(source,target)
53442 */
53443private pattern mustInRelationeTypeParameters_reference_EClassifier(
53444 problem:LogicProblem, interpretation:PartialInterpretation,
53445 source: DefinedElement, target:DefinedElement)
53446{
53447 find interpretation(problem,interpretation);
53448 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
53449 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eTypeParameters reference EClassifier");
53450 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
53451 BinaryElementRelationLink.param1(link,source);
53452 BinaryElementRelationLink.param2(link,target);
53453}
53454/**
53455 * Matcher for detecting tuples t where <>eTypeParameters reference EClassifier(source,target)
53456 */
53457private pattern mayInRelationeTypeParameters_reference_EClassifier(
53458 problem:LogicProblem, interpretation:PartialInterpretation,
53459 source: DefinedElement, target:DefinedElement)
53460{
53461 find interpretation(problem,interpretation);
53462 // The two endpoint of the link have to exist
53463 find mayExist(problem, interpretation, source);
53464 find mayExist(problem, interpretation, target);
53465 // Type consistency
53466 find mayInstanceOfEClassifier_class(problem,interpretation,source);
53467 find mayInstanceOfETypeParameter_class(problem,interpretation,target);
53468 // The reference is containment, then a new reference cannot be create if:
53469 // 1. Multiple parents
53470 neg find mustContains4(problem,interpretation,_,target);
53471 // 2. Circle in the containment hierarchy
53472 neg find mustTransitiveContains(source,target);
53473} or {
53474 find mustInRelationeTypeParameters_reference_EClassifier(problem,interpretation,source,target);
53475}
53476/**
53477 * Matcher for detecting tuples t where []eLiterals reference EEnum(source,target)
53478 */
53479private pattern mustInRelationeLiterals_reference_EEnum(
53480 problem:LogicProblem, interpretation:PartialInterpretation,
53481 source: DefinedElement, target:DefinedElement)
53482{
53483 find interpretation(problem,interpretation);
53484 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
53485 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eLiterals reference EEnum");
53486 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
53487 BinaryElementRelationLink.param1(link,source);
53488 BinaryElementRelationLink.param2(link,target);
53489}
53490/**
53491 * Matcher for detecting tuples t where <>eLiterals reference EEnum(source,target)
53492 */
53493private pattern mayInRelationeLiterals_reference_EEnum(
53494 problem:LogicProblem, interpretation:PartialInterpretation,
53495 source: DefinedElement, target:DefinedElement)
53496{
53497 find interpretation(problem,interpretation);
53498 // The two endpoint of the link have to exist
53499 find mayExist(problem, interpretation, source);
53500 find mayExist(problem, interpretation, target);
53501 // Type consistency
53502 find mayInstanceOfEEnum_class(problem,interpretation,source);
53503 find mayInstanceOfEEnumLiteral_class(problem,interpretation,target);
53504 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
53505 // the upper bound of the opposite reference multiplicity should be considered.
53506 numberOfExistingOppositeReferences == count find mustInRelationeEnum_reference_EEnumLiteral(problem,interpretation,target,_);
53507 check(numberOfExistingOppositeReferences < 1);
53508 // The reference is containment, then a new reference cannot be create if:
53509 // 1. Multiple parents
53510 neg find mustContains4(problem,interpretation,_,target);
53511 // 2. Circle in the containment hierarchy
53512 neg find mustTransitiveContains(source,target);
53513} or {
53514 find mustInRelationeLiterals_reference_EEnum(problem,interpretation,source,target);
53515}
53516/**
53517 * Matcher for detecting tuples t where []eEnum reference EEnumLiteral(source,target)
53518 */
53519private pattern mustInRelationeEnum_reference_EEnumLiteral(
53520 problem:LogicProblem, interpretation:PartialInterpretation,
53521 source: DefinedElement, target:DefinedElement)
53522{
53523 find interpretation(problem,interpretation);
53524 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
53525 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eEnum reference EEnumLiteral");
53526 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
53527 BinaryElementRelationLink.param1(link,source);
53528 BinaryElementRelationLink.param2(link,target);
53529}
53530/**
53531 * Matcher for detecting tuples t where <>eEnum reference EEnumLiteral(source,target)
53532 */
53533private pattern mayInRelationeEnum_reference_EEnumLiteral(
53534 problem:LogicProblem, interpretation:PartialInterpretation,
53535 source: DefinedElement, target:DefinedElement)
53536{
53537 find interpretation(problem,interpretation);
53538 // The two endpoint of the link have to exist
53539 find mayExist(problem, interpretation, source);
53540 find mayExist(problem, interpretation, target);
53541 // Type consistency
53542 find mayInstanceOfEEnumLiteral_class(problem,interpretation,source);
53543 find mayInstanceOfEEnum_class(problem,interpretation,target);
53544 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
53545 // the upper bound of the multiplicity should be considered.
53546 numberOfExistingReferences == count find mustInRelationeEnum_reference_EEnumLiteral(problem,interpretation,source,_);
53547 check(numberOfExistingReferences < 1);
53548 // The eOpposite of the reference is containment, then a referene cannot be created if
53549 // 1. Multiple parents
53550 neg find mustContains4(problem,interpretation,source,_);
53551 // 2. Circle in the containment hierarchy
53552 neg find mustTransitiveContains(source,target);
53553} or {
53554 find mustInRelationeEnum_reference_EEnumLiteral(problem,interpretation,source,target);
53555}
53556/**
53557 * Matcher for detecting tuples t where []eAnnotations reference EModelElement(source,target)
53558 */
53559private pattern mustInRelationeAnnotations_reference_EModelElement(
53560 problem:LogicProblem, interpretation:PartialInterpretation,
53561 source: DefinedElement, target:DefinedElement)
53562{
53563 find interpretation(problem,interpretation);
53564 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
53565 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAnnotations reference EModelElement");
53566 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
53567 BinaryElementRelationLink.param1(link,source);
53568 BinaryElementRelationLink.param2(link,target);
53569}
53570/**
53571 * Matcher for detecting tuples t where <>eAnnotations reference EModelElement(source,target)
53572 */
53573private pattern mayInRelationeAnnotations_reference_EModelElement(
53574 problem:LogicProblem, interpretation:PartialInterpretation,
53575 source: DefinedElement, target:DefinedElement)
53576{
53577 find interpretation(problem,interpretation);
53578 // The two endpoint of the link have to exist
53579 find mayExist(problem, interpretation, source);
53580 find mayExist(problem, interpretation, target);
53581 // Type consistency
53582 find mayInstanceOfEModelElement_class(problem,interpretation,source);
53583 find mayInstanceOfEAnnotation_class(problem,interpretation,target);
53584 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
53585 // the upper bound of the opposite reference multiplicity should be considered.
53586 numberOfExistingOppositeReferences == count find mustInRelationeModelElement_reference_EAnnotation(problem,interpretation,target,_);
53587 check(numberOfExistingOppositeReferences < 1);
53588 // The reference is containment, then a new reference cannot be create if:
53589 // 1. Multiple parents
53590 neg find mustContains4(problem,interpretation,_,target);
53591 // 2. Circle in the containment hierarchy
53592 neg find mustTransitiveContains(source,target);
53593} or {
53594 find mustInRelationeAnnotations_reference_EModelElement(problem,interpretation,source,target);
53595}
53596/**
53597 * Matcher for detecting tuples t where []eContainingClass reference EOperation(source,target)
53598 */
53599private pattern mustInRelationeContainingClass_reference_EOperation(
53600 problem:LogicProblem, interpretation:PartialInterpretation,
53601 source: DefinedElement, target:DefinedElement)
53602{
53603 find interpretation(problem,interpretation);
53604 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
53605 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eContainingClass reference EOperation");
53606 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
53607 BinaryElementRelationLink.param1(link,source);
53608 BinaryElementRelationLink.param2(link,target);
53609}
53610/**
53611 * Matcher for detecting tuples t where <>eContainingClass reference EOperation(source,target)
53612 */
53613private pattern mayInRelationeContainingClass_reference_EOperation(
53614 problem:LogicProblem, interpretation:PartialInterpretation,
53615 source: DefinedElement, target:DefinedElement)
53616{
53617 find interpretation(problem,interpretation);
53618 // The two endpoint of the link have to exist
53619 find mayExist(problem, interpretation, source);
53620 find mayExist(problem, interpretation, target);
53621 // Type consistency
53622 find mayInstanceOfEOperation_class(problem,interpretation,source);
53623 find mayInstanceOfEClass_class(problem,interpretation,target);
53624 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
53625 // the upper bound of the multiplicity should be considered.
53626 numberOfExistingReferences == count find mustInRelationeContainingClass_reference_EOperation(problem,interpretation,source,_);
53627 check(numberOfExistingReferences < 1);
53628 // The eOpposite of the reference is containment, then a referene cannot be created if
53629 // 1. Multiple parents
53630 neg find mustContains4(problem,interpretation,source,_);
53631 // 2. Circle in the containment hierarchy
53632 neg find mustTransitiveContains(source,target);
53633} or {
53634 find mustInRelationeContainingClass_reference_EOperation(problem,interpretation,source,target);
53635}
53636/**
53637 * Matcher for detecting tuples t where []eTypeParameters reference EOperation(source,target)
53638 */
53639private pattern mustInRelationeTypeParameters_reference_EOperation(
53640 problem:LogicProblem, interpretation:PartialInterpretation,
53641 source: DefinedElement, target:DefinedElement)
53642{
53643 find interpretation(problem,interpretation);
53644 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
53645 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eTypeParameters reference EOperation");
53646 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
53647 BinaryElementRelationLink.param1(link,source);
53648 BinaryElementRelationLink.param2(link,target);
53649}
53650/**
53651 * Matcher for detecting tuples t where <>eTypeParameters reference EOperation(source,target)
53652 */
53653private pattern mayInRelationeTypeParameters_reference_EOperation(
53654 problem:LogicProblem, interpretation:PartialInterpretation,
53655 source: DefinedElement, target:DefinedElement)
53656{
53657 find interpretation(problem,interpretation);
53658 // The two endpoint of the link have to exist
53659 find mayExist(problem, interpretation, source);
53660 find mayExist(problem, interpretation, target);
53661 // Type consistency
53662 find mayInstanceOfEOperation_class(problem,interpretation,source);
53663 find mayInstanceOfETypeParameter_class(problem,interpretation,target);
53664 // The reference is containment, then a new reference cannot be create if:
53665 // 1. Multiple parents
53666 neg find mustContains4(problem,interpretation,_,target);
53667 // 2. Circle in the containment hierarchy
53668 neg find mustTransitiveContains(source,target);
53669} or {
53670 find mustInRelationeTypeParameters_reference_EOperation(problem,interpretation,source,target);
53671}
53672/**
53673 * Matcher for detecting tuples t where []eParameters reference EOperation(source,target)
53674 */
53675private pattern mustInRelationeParameters_reference_EOperation(
53676 problem:LogicProblem, interpretation:PartialInterpretation,
53677 source: DefinedElement, target:DefinedElement)
53678{
53679 find interpretation(problem,interpretation);
53680 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
53681 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eParameters reference EOperation");
53682 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
53683 BinaryElementRelationLink.param1(link,source);
53684 BinaryElementRelationLink.param2(link,target);
53685}
53686/**
53687 * Matcher for detecting tuples t where <>eParameters reference EOperation(source,target)
53688 */
53689private pattern mayInRelationeParameters_reference_EOperation(
53690 problem:LogicProblem, interpretation:PartialInterpretation,
53691 source: DefinedElement, target:DefinedElement)
53692{
53693 find interpretation(problem,interpretation);
53694 // The two endpoint of the link have to exist
53695 find mayExist(problem, interpretation, source);
53696 find mayExist(problem, interpretation, target);
53697 // Type consistency
53698 find mayInstanceOfEOperation_class(problem,interpretation,source);
53699 find mayInstanceOfEParameter_class(problem,interpretation,target);
53700 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
53701 // the upper bound of the opposite reference multiplicity should be considered.
53702 numberOfExistingOppositeReferences == count find mustInRelationeOperation_reference_EParameter(problem,interpretation,target,_);
53703 check(numberOfExistingOppositeReferences < 1);
53704 // The reference is containment, then a new reference cannot be create if:
53705 // 1. Multiple parents
53706 neg find mustContains4(problem,interpretation,_,target);
53707 // 2. Circle in the containment hierarchy
53708 neg find mustTransitiveContains(source,target);
53709} or {
53710 find mustInRelationeParameters_reference_EOperation(problem,interpretation,source,target);
53711}
53712/**
53713 * Matcher for detecting tuples t where []eExceptions reference EOperation(source,target)
53714 */
53715private pattern mustInRelationeExceptions_reference_EOperation(
53716 problem:LogicProblem, interpretation:PartialInterpretation,
53717 source: DefinedElement, target:DefinedElement)
53718{
53719 find interpretation(problem,interpretation);
53720 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
53721 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eExceptions reference EOperation");
53722 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
53723 BinaryElementRelationLink.param1(link,source);
53724 BinaryElementRelationLink.param2(link,target);
53725}
53726/**
53727 * Matcher for detecting tuples t where <>eExceptions reference EOperation(source,target)
53728 */
53729private pattern mayInRelationeExceptions_reference_EOperation(
53730 problem:LogicProblem, interpretation:PartialInterpretation,
53731 source: DefinedElement, target:DefinedElement)
53732{
53733 find interpretation(problem,interpretation);
53734 // The two endpoint of the link have to exist
53735 find mayExist(problem, interpretation, source);
53736 find mayExist(problem, interpretation, target);
53737 // Type consistency
53738 find mayInstanceOfEOperation_class(problem,interpretation,source);
53739 find mayInstanceOfEClassifier_class(problem,interpretation,target);
53740} or {
53741 find mustInRelationeExceptions_reference_EOperation(problem,interpretation,source,target);
53742}
53743/**
53744 * Matcher for detecting tuples t where []eGenericExceptions reference EOperation(source,target)
53745 */
53746private pattern mustInRelationeGenericExceptions_reference_EOperation(
53747 problem:LogicProblem, interpretation:PartialInterpretation,
53748 source: DefinedElement, target:DefinedElement)
53749{
53750 find interpretation(problem,interpretation);
53751 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
53752 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eGenericExceptions reference EOperation");
53753 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
53754 BinaryElementRelationLink.param1(link,source);
53755 BinaryElementRelationLink.param2(link,target);
53756}
53757/**
53758 * Matcher for detecting tuples t where <>eGenericExceptions reference EOperation(source,target)
53759 */
53760private pattern mayInRelationeGenericExceptions_reference_EOperation(
53761 problem:LogicProblem, interpretation:PartialInterpretation,
53762 source: DefinedElement, target:DefinedElement)
53763{
53764 find interpretation(problem,interpretation);
53765 // The two endpoint of the link have to exist
53766 find mayExist(problem, interpretation, source);
53767 find mayExist(problem, interpretation, target);
53768 // Type consistency
53769 find mayInstanceOfEOperation_class(problem,interpretation,source);
53770 find mayInstanceOfEGenericType_class(problem,interpretation,target);
53771 // The reference is containment, then a new reference cannot be create if:
53772 // 1. Multiple parents
53773 neg find mustContains4(problem,interpretation,_,target);
53774 // 2. Circle in the containment hierarchy
53775 neg find mustTransitiveContains(source,target);
53776} or {
53777 find mustInRelationeGenericExceptions_reference_EOperation(problem,interpretation,source,target);
53778}
53779/**
53780 * Matcher for detecting tuples t where []eClassifiers reference EPackage(source,target)
53781 */
53782private pattern mustInRelationeClassifiers_reference_EPackage(
53783 problem:LogicProblem, interpretation:PartialInterpretation,
53784 source: DefinedElement, target:DefinedElement)
53785{
53786 find interpretation(problem,interpretation);
53787 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
53788 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eClassifiers reference EPackage");
53789 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
53790 BinaryElementRelationLink.param1(link,source);
53791 BinaryElementRelationLink.param2(link,target);
53792}
53793/**
53794 * Matcher for detecting tuples t where <>eClassifiers reference EPackage(source,target)
53795 */
53796private pattern mayInRelationeClassifiers_reference_EPackage(
53797 problem:LogicProblem, interpretation:PartialInterpretation,
53798 source: DefinedElement, target:DefinedElement)
53799{
53800 find interpretation(problem,interpretation);
53801 // The two endpoint of the link have to exist
53802 find mayExist(problem, interpretation, source);
53803 find mayExist(problem, interpretation, target);
53804 // Type consistency
53805 find mayInstanceOfEPackage_class(problem,interpretation,source);
53806 find mayInstanceOfEClassifier_class(problem,interpretation,target);
53807 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
53808 // the upper bound of the opposite reference multiplicity should be considered.
53809 numberOfExistingOppositeReferences == count find mustInRelationePackage_reference_EClassifier(problem,interpretation,target,_);
53810 check(numberOfExistingOppositeReferences < 1);
53811 // The reference is containment, then a new reference cannot be create if:
53812 // 1. Multiple parents
53813 neg find mustContains4(problem,interpretation,_,target);
53814 // 2. Circle in the containment hierarchy
53815 neg find mustTransitiveContains(source,target);
53816} or {
53817 find mustInRelationeClassifiers_reference_EPackage(problem,interpretation,source,target);
53818}
53819/**
53820 * Matcher for detecting tuples t where []eSubpackages reference EPackage(source,target)
53821 */
53822private pattern mustInRelationeSubpackages_reference_EPackage(
53823 problem:LogicProblem, interpretation:PartialInterpretation,
53824 source: DefinedElement, target:DefinedElement)
53825{
53826 find interpretation(problem,interpretation);
53827 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
53828 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eSubpackages reference EPackage");
53829 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
53830 BinaryElementRelationLink.param1(link,source);
53831 BinaryElementRelationLink.param2(link,target);
53832}
53833/**
53834 * Matcher for detecting tuples t where <>eSubpackages reference EPackage(source,target)
53835 */
53836private pattern mayInRelationeSubpackages_reference_EPackage(
53837 problem:LogicProblem, interpretation:PartialInterpretation,
53838 source: DefinedElement, target:DefinedElement)
53839{
53840 find interpretation(problem,interpretation);
53841 // The two endpoint of the link have to exist
53842 find mayExist(problem, interpretation, source);
53843 find mayExist(problem, interpretation, target);
53844 // Type consistency
53845 find mayInstanceOfEPackage_class(problem,interpretation,source);
53846 find mayInstanceOfEPackage_class(problem,interpretation,target);
53847 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
53848 // the upper bound of the opposite reference multiplicity should be considered.
53849 numberOfExistingOppositeReferences == count find mustInRelationeSuperPackage_reference_EPackage(problem,interpretation,target,_);
53850 check(numberOfExistingOppositeReferences < 1);
53851 // The reference is containment, then a new reference cannot be create if:
53852 // 1. Multiple parents
53853 neg find mustContains4(problem,interpretation,_,target);
53854 // 2. Circle in the containment hierarchy
53855 neg find mustTransitiveContains(source,target);
53856} or {
53857 find mustInRelationeSubpackages_reference_EPackage(problem,interpretation,source,target);
53858}
53859/**
53860 * Matcher for detecting tuples t where []eSuperPackage reference EPackage(source,target)
53861 */
53862private pattern mustInRelationeSuperPackage_reference_EPackage(
53863 problem:LogicProblem, interpretation:PartialInterpretation,
53864 source: DefinedElement, target:DefinedElement)
53865{
53866 find interpretation(problem,interpretation);
53867 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
53868 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eSuperPackage reference EPackage");
53869 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
53870 BinaryElementRelationLink.param1(link,source);
53871 BinaryElementRelationLink.param2(link,target);
53872}
53873/**
53874 * Matcher for detecting tuples t where <>eSuperPackage reference EPackage(source,target)
53875 */
53876private pattern mayInRelationeSuperPackage_reference_EPackage(
53877 problem:LogicProblem, interpretation:PartialInterpretation,
53878 source: DefinedElement, target:DefinedElement)
53879{
53880 find interpretation(problem,interpretation);
53881 // The two endpoint of the link have to exist
53882 find mayExist(problem, interpretation, source);
53883 find mayExist(problem, interpretation, target);
53884 // Type consistency
53885 find mayInstanceOfEPackage_class(problem,interpretation,source);
53886 find mayInstanceOfEPackage_class(problem,interpretation,target);
53887 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
53888 // the upper bound of the multiplicity should be considered.
53889 numberOfExistingReferences == count find mustInRelationeSuperPackage_reference_EPackage(problem,interpretation,source,_);
53890 check(numberOfExistingReferences < 1);
53891 // The eOpposite of the reference is containment, then a referene cannot be created if
53892 // 1. Multiple parents
53893 neg find mustContains4(problem,interpretation,source,_);
53894 // 2. Circle in the containment hierarchy
53895 neg find mustTransitiveContains(source,target);
53896} or {
53897 find mustInRelationeSuperPackage_reference_EPackage(problem,interpretation,source,target);
53898}
53899/**
53900 * Matcher for detecting tuples t where []eOperation reference EParameter(source,target)
53901 */
53902private pattern mustInRelationeOperation_reference_EParameter(
53903 problem:LogicProblem, interpretation:PartialInterpretation,
53904 source: DefinedElement, target:DefinedElement)
53905{
53906 find interpretation(problem,interpretation);
53907 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
53908 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eOperation reference EParameter");
53909 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
53910 BinaryElementRelationLink.param1(link,source);
53911 BinaryElementRelationLink.param2(link,target);
53912}
53913/**
53914 * Matcher for detecting tuples t where <>eOperation reference EParameter(source,target)
53915 */
53916private pattern mayInRelationeOperation_reference_EParameter(
53917 problem:LogicProblem, interpretation:PartialInterpretation,
53918 source: DefinedElement, target:DefinedElement)
53919{
53920 find interpretation(problem,interpretation);
53921 // The two endpoint of the link have to exist
53922 find mayExist(problem, interpretation, source);
53923 find mayExist(problem, interpretation, target);
53924 // Type consistency
53925 find mayInstanceOfEParameter_class(problem,interpretation,source);
53926 find mayInstanceOfEOperation_class(problem,interpretation,target);
53927 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
53928 // the upper bound of the multiplicity should be considered.
53929 numberOfExistingReferences == count find mustInRelationeOperation_reference_EParameter(problem,interpretation,source,_);
53930 check(numberOfExistingReferences < 1);
53931 // The eOpposite of the reference is containment, then a referene cannot be created if
53932 // 1. Multiple parents
53933 neg find mustContains4(problem,interpretation,source,_);
53934 // 2. Circle in the containment hierarchy
53935 neg find mustTransitiveContains(source,target);
53936} or {
53937 find mustInRelationeOperation_reference_EParameter(problem,interpretation,source,target);
53938}
53939/**
53940 * Matcher for detecting tuples t where []eOpposite reference EReference(source,target)
53941 */
53942private pattern mustInRelationeOpposite_reference_EReference(
53943 problem:LogicProblem, interpretation:PartialInterpretation,
53944 source: DefinedElement, target:DefinedElement)
53945{
53946 find interpretation(problem,interpretation);
53947 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
53948 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eOpposite reference EReference");
53949 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
53950 BinaryElementRelationLink.param1(link,source);
53951 BinaryElementRelationLink.param2(link,target);
53952}
53953/**
53954 * Matcher for detecting tuples t where <>eOpposite reference EReference(source,target)
53955 */
53956private pattern mayInRelationeOpposite_reference_EReference(
53957 problem:LogicProblem, interpretation:PartialInterpretation,
53958 source: DefinedElement, target:DefinedElement)
53959{
53960 find interpretation(problem,interpretation);
53961 // The two endpoint of the link have to exist
53962 find mayExist(problem, interpretation, source);
53963 find mayExist(problem, interpretation, target);
53964 // Type consistency
53965 find mayInstanceOfEReference_class(problem,interpretation,source);
53966 find mayInstanceOfEReference_class(problem,interpretation,target);
53967 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
53968 // the upper bound of the multiplicity should be considered.
53969 numberOfExistingReferences == count find mustInRelationeOpposite_reference_EReference(problem,interpretation,source,_);
53970 check(numberOfExistingReferences < 1);
53971} or {
53972 find mustInRelationeOpposite_reference_EReference(problem,interpretation,source,target);
53973}
53974/**
53975 * Matcher for detecting tuples t where []eReferenceType reference EReference(source,target)
53976 */
53977private pattern mustInRelationeReferenceType_reference_EReference(
53978 problem:LogicProblem, interpretation:PartialInterpretation,
53979 source: DefinedElement, target:DefinedElement)
53980{
53981 find interpretation(problem,interpretation);
53982 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
53983 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eReferenceType reference EReference");
53984 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
53985 BinaryElementRelationLink.param1(link,source);
53986 BinaryElementRelationLink.param2(link,target);
53987}
53988/**
53989 * Matcher for detecting tuples t where <>eReferenceType reference EReference(source,target)
53990 */
53991private pattern mayInRelationeReferenceType_reference_EReference(
53992 problem:LogicProblem, interpretation:PartialInterpretation,
53993 source: DefinedElement, target:DefinedElement)
53994{
53995 find interpretation(problem,interpretation);
53996 // The two endpoint of the link have to exist
53997 find mayExist(problem, interpretation, source);
53998 find mayExist(problem, interpretation, target);
53999 // Type consistency
54000 find mayInstanceOfEReference_class(problem,interpretation,source);
54001 find mayInstanceOfEClass_class(problem,interpretation,target);
54002 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
54003 // the upper bound of the multiplicity should be considered.
54004 numberOfExistingReferences == count find mustInRelationeReferenceType_reference_EReference(problem,interpretation,source,_);
54005 check(numberOfExistingReferences < 1);
54006} or {
54007 find mustInRelationeReferenceType_reference_EReference(problem,interpretation,source,target);
54008}
54009/**
54010 * Matcher for detecting tuples t where []eKeys reference EReference(source,target)
54011 */
54012private pattern mustInRelationeKeys_reference_EReference(
54013 problem:LogicProblem, interpretation:PartialInterpretation,
54014 source: DefinedElement, target:DefinedElement)
54015{
54016 find interpretation(problem,interpretation);
54017 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
54018 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eKeys reference EReference");
54019 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
54020 BinaryElementRelationLink.param1(link,source);
54021 BinaryElementRelationLink.param2(link,target);
54022}
54023/**
54024 * Matcher for detecting tuples t where <>eKeys reference EReference(source,target)
54025 */
54026private pattern mayInRelationeKeys_reference_EReference(
54027 problem:LogicProblem, interpretation:PartialInterpretation,
54028 source: DefinedElement, target:DefinedElement)
54029{
54030 find interpretation(problem,interpretation);
54031 // The two endpoint of the link have to exist
54032 find mayExist(problem, interpretation, source);
54033 find mayExist(problem, interpretation, target);
54034 // Type consistency
54035 find mayInstanceOfEReference_class(problem,interpretation,source);
54036 find mayInstanceOfEAttribute_class(problem,interpretation,target);
54037} or {
54038 find mustInRelationeKeys_reference_EReference(problem,interpretation,source,target);
54039}
54040/**
54041 * Matcher for detecting tuples t where []eContainingClass reference EStructuralFeature(source,target)
54042 */
54043private pattern mustInRelationeContainingClass_reference_EStructuralFeature(
54044 problem:LogicProblem, interpretation:PartialInterpretation,
54045 source: DefinedElement, target:DefinedElement)
54046{
54047 find interpretation(problem,interpretation);
54048 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
54049 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eContainingClass reference EStructuralFeature");
54050 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
54051 BinaryElementRelationLink.param1(link,source);
54052 BinaryElementRelationLink.param2(link,target);
54053}
54054/**
54055 * Matcher for detecting tuples t where <>eContainingClass reference EStructuralFeature(source,target)
54056 */
54057private pattern mayInRelationeContainingClass_reference_EStructuralFeature(
54058 problem:LogicProblem, interpretation:PartialInterpretation,
54059 source: DefinedElement, target:DefinedElement)
54060{
54061 find interpretation(problem,interpretation);
54062 // The two endpoint of the link have to exist
54063 find mayExist(problem, interpretation, source);
54064 find mayExist(problem, interpretation, target);
54065 // Type consistency
54066 find mayInstanceOfEStructuralFeature_class(problem,interpretation,source);
54067 find mayInstanceOfEClass_class(problem,interpretation,target);
54068 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
54069 // the upper bound of the multiplicity should be considered.
54070 numberOfExistingReferences == count find mustInRelationeContainingClass_reference_EStructuralFeature(problem,interpretation,source,_);
54071 check(numberOfExistingReferences < 1);
54072 // The eOpposite of the reference is containment, then a referene cannot be created if
54073 // 1. Multiple parents
54074 neg find mustContains4(problem,interpretation,source,_);
54075 // 2. Circle in the containment hierarchy
54076 neg find mustTransitiveContains(source,target);
54077} or {
54078 find mustInRelationeContainingClass_reference_EStructuralFeature(problem,interpretation,source,target);
54079}
54080/**
54081 * Matcher for detecting tuples t where []eType reference ETypedElement(source,target)
54082 */
54083private pattern mustInRelationeType_reference_ETypedElement(
54084 problem:LogicProblem, interpretation:PartialInterpretation,
54085 source: DefinedElement, target:DefinedElement)
54086{
54087 find interpretation(problem,interpretation);
54088 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
54089 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eType reference ETypedElement");
54090 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
54091 BinaryElementRelationLink.param1(link,source);
54092 BinaryElementRelationLink.param2(link,target);
54093}
54094/**
54095 * Matcher for detecting tuples t where <>eType reference ETypedElement(source,target)
54096 */
54097private pattern mayInRelationeType_reference_ETypedElement(
54098 problem:LogicProblem, interpretation:PartialInterpretation,
54099 source: DefinedElement, target:DefinedElement)
54100{
54101 find interpretation(problem,interpretation);
54102 // The two endpoint of the link have to exist
54103 find mayExist(problem, interpretation, source);
54104 find mayExist(problem, interpretation, target);
54105 // Type consistency
54106 find mayInstanceOfETypedElement_class(problem,interpretation,source);
54107 find mayInstanceOfEClassifier_class(problem,interpretation,target);
54108 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
54109 // the upper bound of the multiplicity should be considered.
54110 numberOfExistingReferences == count find mustInRelationeType_reference_ETypedElement(problem,interpretation,source,_);
54111 check(numberOfExistingReferences < 1);
54112} or {
54113 find mustInRelationeType_reference_ETypedElement(problem,interpretation,source,target);
54114}
54115/**
54116 * Matcher for detecting tuples t where []eGenericType reference ETypedElement(source,target)
54117 */
54118private pattern mustInRelationeGenericType_reference_ETypedElement(
54119 problem:LogicProblem, interpretation:PartialInterpretation,
54120 source: DefinedElement, target:DefinedElement)
54121{
54122 find interpretation(problem,interpretation);
54123 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
54124 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eGenericType reference ETypedElement");
54125 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
54126 BinaryElementRelationLink.param1(link,source);
54127 BinaryElementRelationLink.param2(link,target);
54128}
54129/**
54130 * Matcher for detecting tuples t where <>eGenericType reference ETypedElement(source,target)
54131 */
54132private pattern mayInRelationeGenericType_reference_ETypedElement(
54133 problem:LogicProblem, interpretation:PartialInterpretation,
54134 source: DefinedElement, target:DefinedElement)
54135{
54136 find interpretation(problem,interpretation);
54137 // The two endpoint of the link have to exist
54138 find mayExist(problem, interpretation, source);
54139 find mayExist(problem, interpretation, target);
54140 // Type consistency
54141 find mayInstanceOfETypedElement_class(problem,interpretation,source);
54142 find mayInstanceOfEGenericType_class(problem,interpretation,target);
54143 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
54144 // the upper bound of the multiplicity should be considered.
54145 numberOfExistingReferences == count find mustInRelationeGenericType_reference_ETypedElement(problem,interpretation,source,_);
54146 check(numberOfExistingReferences < 1);
54147 // The reference is containment, then a new reference cannot be create if:
54148 // 1. Multiple parents
54149 neg find mustContains4(problem,interpretation,_,target);
54150 // 2. Circle in the containment hierarchy
54151 neg find mustTransitiveContains(source,target);
54152} or {
54153 find mustInRelationeGenericType_reference_ETypedElement(problem,interpretation,source,target);
54154}
54155/**
54156 * Matcher for detecting tuples t where []eUpperBound reference EGenericType(source,target)
54157 */
54158private pattern mustInRelationeUpperBound_reference_EGenericType(
54159 problem:LogicProblem, interpretation:PartialInterpretation,
54160 source: DefinedElement, target:DefinedElement)
54161{
54162 find interpretation(problem,interpretation);
54163 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
54164 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eUpperBound reference EGenericType");
54165 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
54166 BinaryElementRelationLink.param1(link,source);
54167 BinaryElementRelationLink.param2(link,target);
54168}
54169/**
54170 * Matcher for detecting tuples t where <>eUpperBound reference EGenericType(source,target)
54171 */
54172private pattern mayInRelationeUpperBound_reference_EGenericType(
54173 problem:LogicProblem, interpretation:PartialInterpretation,
54174 source: DefinedElement, target:DefinedElement)
54175{
54176 find interpretation(problem,interpretation);
54177 // The two endpoint of the link have to exist
54178 find mayExist(problem, interpretation, source);
54179 find mayExist(problem, interpretation, target);
54180 // Type consistency
54181 find mayInstanceOfEGenericType_class(problem,interpretation,source);
54182 find mayInstanceOfEGenericType_class(problem,interpretation,target);
54183 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
54184 // the upper bound of the multiplicity should be considered.
54185 numberOfExistingReferences == count find mustInRelationeUpperBound_reference_EGenericType(problem,interpretation,source,_);
54186 check(numberOfExistingReferences < 1);
54187 // The reference is containment, then a new reference cannot be create if:
54188 // 1. Multiple parents
54189 neg find mustContains4(problem,interpretation,_,target);
54190 // 2. Circle in the containment hierarchy
54191 neg find mustTransitiveContains(source,target);
54192} or {
54193 find mustInRelationeUpperBound_reference_EGenericType(problem,interpretation,source,target);
54194}
54195/**
54196 * Matcher for detecting tuples t where []eTypeArguments reference EGenericType(source,target)
54197 */
54198private pattern mustInRelationeTypeArguments_reference_EGenericType(
54199 problem:LogicProblem, interpretation:PartialInterpretation,
54200 source: DefinedElement, target:DefinedElement)
54201{
54202 find interpretation(problem,interpretation);
54203 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
54204 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eTypeArguments reference EGenericType");
54205 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
54206 BinaryElementRelationLink.param1(link,source);
54207 BinaryElementRelationLink.param2(link,target);
54208}
54209/**
54210 * Matcher for detecting tuples t where <>eTypeArguments reference EGenericType(source,target)
54211 */
54212private pattern mayInRelationeTypeArguments_reference_EGenericType(
54213 problem:LogicProblem, interpretation:PartialInterpretation,
54214 source: DefinedElement, target:DefinedElement)
54215{
54216 find interpretation(problem,interpretation);
54217 // The two endpoint of the link have to exist
54218 find mayExist(problem, interpretation, source);
54219 find mayExist(problem, interpretation, target);
54220 // Type consistency
54221 find mayInstanceOfEGenericType_class(problem,interpretation,source);
54222 find mayInstanceOfEGenericType_class(problem,interpretation,target);
54223 // The reference is containment, then a new reference cannot be create if:
54224 // 1. Multiple parents
54225 neg find mustContains4(problem,interpretation,_,target);
54226 // 2. Circle in the containment hierarchy
54227 neg find mustTransitiveContains(source,target);
54228} or {
54229 find mustInRelationeTypeArguments_reference_EGenericType(problem,interpretation,source,target);
54230}
54231/**
54232 * Matcher for detecting tuples t where []eRawType reference EGenericType(source,target)
54233 */
54234private pattern mustInRelationeRawType_reference_EGenericType(
54235 problem:LogicProblem, interpretation:PartialInterpretation,
54236 source: DefinedElement, target:DefinedElement)
54237{
54238 find interpretation(problem,interpretation);
54239 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
54240 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eRawType reference EGenericType");
54241 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
54242 BinaryElementRelationLink.param1(link,source);
54243 BinaryElementRelationLink.param2(link,target);
54244}
54245/**
54246 * Matcher for detecting tuples t where <>eRawType reference EGenericType(source,target)
54247 */
54248private pattern mayInRelationeRawType_reference_EGenericType(
54249 problem:LogicProblem, interpretation:PartialInterpretation,
54250 source: DefinedElement, target:DefinedElement)
54251{
54252 find interpretation(problem,interpretation);
54253 // The two endpoint of the link have to exist
54254 find mayExist(problem, interpretation, source);
54255 find mayExist(problem, interpretation, target);
54256 // Type consistency
54257 find mayInstanceOfEGenericType_class(problem,interpretation,source);
54258 find mayInstanceOfEClassifier_class(problem,interpretation,target);
54259 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
54260 // the upper bound of the multiplicity should be considered.
54261 numberOfExistingReferences == count find mustInRelationeRawType_reference_EGenericType(problem,interpretation,source,_);
54262 check(numberOfExistingReferences < 1);
54263} or {
54264 find mustInRelationeRawType_reference_EGenericType(problem,interpretation,source,target);
54265}
54266/**
54267 * Matcher for detecting tuples t where []eLowerBound reference EGenericType(source,target)
54268 */
54269private pattern mustInRelationeLowerBound_reference_EGenericType(
54270 problem:LogicProblem, interpretation:PartialInterpretation,
54271 source: DefinedElement, target:DefinedElement)
54272{
54273 find interpretation(problem,interpretation);
54274 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
54275 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eLowerBound reference EGenericType");
54276 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
54277 BinaryElementRelationLink.param1(link,source);
54278 BinaryElementRelationLink.param2(link,target);
54279}
54280/**
54281 * Matcher for detecting tuples t where <>eLowerBound reference EGenericType(source,target)
54282 */
54283private pattern mayInRelationeLowerBound_reference_EGenericType(
54284 problem:LogicProblem, interpretation:PartialInterpretation,
54285 source: DefinedElement, target:DefinedElement)
54286{
54287 find interpretation(problem,interpretation);
54288 // The two endpoint of the link have to exist
54289 find mayExist(problem, interpretation, source);
54290 find mayExist(problem, interpretation, target);
54291 // Type consistency
54292 find mayInstanceOfEGenericType_class(problem,interpretation,source);
54293 find mayInstanceOfEGenericType_class(problem,interpretation,target);
54294 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
54295 // the upper bound of the multiplicity should be considered.
54296 numberOfExistingReferences == count find mustInRelationeLowerBound_reference_EGenericType(problem,interpretation,source,_);
54297 check(numberOfExistingReferences < 1);
54298 // The reference is containment, then a new reference cannot be create if:
54299 // 1. Multiple parents
54300 neg find mustContains4(problem,interpretation,_,target);
54301 // 2. Circle in the containment hierarchy
54302 neg find mustTransitiveContains(source,target);
54303} or {
54304 find mustInRelationeLowerBound_reference_EGenericType(problem,interpretation,source,target);
54305}
54306/**
54307 * Matcher for detecting tuples t where []eTypeParameter reference EGenericType(source,target)
54308 */
54309private pattern mustInRelationeTypeParameter_reference_EGenericType(
54310 problem:LogicProblem, interpretation:PartialInterpretation,
54311 source: DefinedElement, target:DefinedElement)
54312{
54313 find interpretation(problem,interpretation);
54314 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
54315 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eTypeParameter reference EGenericType");
54316 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
54317 BinaryElementRelationLink.param1(link,source);
54318 BinaryElementRelationLink.param2(link,target);
54319}
54320/**
54321 * Matcher for detecting tuples t where <>eTypeParameter reference EGenericType(source,target)
54322 */
54323private pattern mayInRelationeTypeParameter_reference_EGenericType(
54324 problem:LogicProblem, interpretation:PartialInterpretation,
54325 source: DefinedElement, target:DefinedElement)
54326{
54327 find interpretation(problem,interpretation);
54328 // The two endpoint of the link have to exist
54329 find mayExist(problem, interpretation, source);
54330 find mayExist(problem, interpretation, target);
54331 // Type consistency
54332 find mayInstanceOfEGenericType_class(problem,interpretation,source);
54333 find mayInstanceOfETypeParameter_class(problem,interpretation,target);
54334 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
54335 // the upper bound of the multiplicity should be considered.
54336 numberOfExistingReferences == count find mustInRelationeTypeParameter_reference_EGenericType(problem,interpretation,source,_);
54337 check(numberOfExistingReferences < 1);
54338} or {
54339 find mustInRelationeTypeParameter_reference_EGenericType(problem,interpretation,source,target);
54340}
54341/**
54342 * Matcher for detecting tuples t where []eClassifier reference EGenericType(source,target)
54343 */
54344private pattern mustInRelationeClassifier_reference_EGenericType(
54345 problem:LogicProblem, interpretation:PartialInterpretation,
54346 source: DefinedElement, target:DefinedElement)
54347{
54348 find interpretation(problem,interpretation);
54349 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
54350 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eClassifier reference EGenericType");
54351 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
54352 BinaryElementRelationLink.param1(link,source);
54353 BinaryElementRelationLink.param2(link,target);
54354}
54355/**
54356 * Matcher for detecting tuples t where <>eClassifier reference EGenericType(source,target)
54357 */
54358private pattern mayInRelationeClassifier_reference_EGenericType(
54359 problem:LogicProblem, interpretation:PartialInterpretation,
54360 source: DefinedElement, target:DefinedElement)
54361{
54362 find interpretation(problem,interpretation);
54363 // The two endpoint of the link have to exist
54364 find mayExist(problem, interpretation, source);
54365 find mayExist(problem, interpretation, target);
54366 // Type consistency
54367 find mayInstanceOfEGenericType_class(problem,interpretation,source);
54368 find mayInstanceOfEClassifier_class(problem,interpretation,target);
54369 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
54370 // the upper bound of the multiplicity should be considered.
54371 numberOfExistingReferences == count find mustInRelationeClassifier_reference_EGenericType(problem,interpretation,source,_);
54372 check(numberOfExistingReferences < 1);
54373} or {
54374 find mustInRelationeClassifier_reference_EGenericType(problem,interpretation,source,target);
54375}
54376/**
54377 * Matcher for detecting tuples t where []eBounds reference ETypeParameter(source,target)
54378 */
54379private pattern mustInRelationeBounds_reference_ETypeParameter(
54380 problem:LogicProblem, interpretation:PartialInterpretation,
54381 source: DefinedElement, target:DefinedElement)
54382{
54383 find interpretation(problem,interpretation);
54384 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
54385 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eBounds reference ETypeParameter");
54386 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
54387 BinaryElementRelationLink.param1(link,source);
54388 BinaryElementRelationLink.param2(link,target);
54389}
54390/**
54391 * Matcher for detecting tuples t where <>eBounds reference ETypeParameter(source,target)
54392 */
54393private pattern mayInRelationeBounds_reference_ETypeParameter(
54394 problem:LogicProblem, interpretation:PartialInterpretation,
54395 source: DefinedElement, target:DefinedElement)
54396{
54397 find interpretation(problem,interpretation);
54398 // The two endpoint of the link have to exist
54399 find mayExist(problem, interpretation, source);
54400 find mayExist(problem, interpretation, target);
54401 // Type consistency
54402 find mayInstanceOfETypeParameter_class(problem,interpretation,source);
54403 find mayInstanceOfEGenericType_class(problem,interpretation,target);
54404 // The reference is containment, then a new reference cannot be create if:
54405 // 1. Multiple parents
54406 neg find mustContains4(problem,interpretation,_,target);
54407 // 2. Circle in the containment hierarchy
54408 neg find mustTransitiveContains(source,target);
54409} or {
54410 find mustInRelationeBounds_reference_ETypeParameter(problem,interpretation,source,target);
54411}
54412/**
54413 * Matcher for detecting tuples t where []iD attribute EAttribute(source,target)
54414 */
54415private pattern mustInRelationiD_attribute_EAttribute(
54416 problem:LogicProblem, interpretation:PartialInterpretation,
54417 source: DefinedElement, target:DefinedElement)
54418{
54419 find interpretation(problem,interpretation);
54420 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
54421 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"iD attribute EAttribute");
54422 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
54423 BinaryElementRelationLink.param1(link,source);
54424 BinaryElementRelationLink.param2(link,target);
54425}
54426/**
54427 * Matcher for detecting tuples t where <>iD attribute EAttribute(source,target)
54428 */
54429private pattern mayInRelationiD_attribute_EAttribute(
54430 problem:LogicProblem, interpretation:PartialInterpretation,
54431 source: DefinedElement, target:DefinedElement)
54432{
54433 find interpretation(problem,interpretation);
54434 // The two endpoint of the link have to exist
54435 find mayExist(problem, interpretation, source);
54436 find mayExist(problem, interpretation, target);
54437 // Type consistency
54438 find mayInstanceOfEAttribute_class(problem,interpretation,source);
54439 BooleanElement(target);
54440 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
54441 // the upper bound of the multiplicity should be considered.
54442 numberOfExistingReferences == count find mustInRelationiD_attribute_EAttribute(problem,interpretation,source,_);
54443 check(numberOfExistingReferences < 1);
54444} or {
54445 find mustInRelationiD_attribute_EAttribute(problem,interpretation,source,target);
54446}
54447/**
54448 * Matcher for detecting tuples t where []source attribute EAnnotation(source,target)
54449 */
54450private pattern mustInRelationsource_attribute_EAnnotation(
54451 problem:LogicProblem, interpretation:PartialInterpretation,
54452 source: DefinedElement, target:DefinedElement)
54453{
54454 find interpretation(problem,interpretation);
54455 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
54456 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"source attribute EAnnotation");
54457 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
54458 BinaryElementRelationLink.param1(link,source);
54459 BinaryElementRelationLink.param2(link,target);
54460}
54461/**
54462 * Matcher for detecting tuples t where <>source attribute EAnnotation(source,target)
54463 */
54464private pattern mayInRelationsource_attribute_EAnnotation(
54465 problem:LogicProblem, interpretation:PartialInterpretation,
54466 source: DefinedElement, target:DefinedElement)
54467{
54468 find interpretation(problem,interpretation);
54469 // The two endpoint of the link have to exist
54470 find mayExist(problem, interpretation, source);
54471 find mayExist(problem, interpretation, target);
54472 // Type consistency
54473 find mayInstanceOfEAnnotation_class(problem,interpretation,source);
54474 StringElement(target);
54475 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
54476 // the upper bound of the multiplicity should be considered.
54477 numberOfExistingReferences == count find mustInRelationsource_attribute_EAnnotation(problem,interpretation,source,_);
54478 check(numberOfExistingReferences < 1);
54479} or {
54480 find mustInRelationsource_attribute_EAnnotation(problem,interpretation,source,target);
54481}
54482/**
54483 * Matcher for detecting tuples t where []abstract attribute EClass(source,target)
54484 */
54485private pattern mustInRelationabstract_attribute_EClass(
54486 problem:LogicProblem, interpretation:PartialInterpretation,
54487 source: DefinedElement, target:DefinedElement)
54488{
54489 find interpretation(problem,interpretation);
54490 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
54491 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"abstract attribute EClass");
54492 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
54493 BinaryElementRelationLink.param1(link,source);
54494 BinaryElementRelationLink.param2(link,target);
54495}
54496/**
54497 * Matcher for detecting tuples t where <>abstract attribute EClass(source,target)
54498 */
54499private pattern mayInRelationabstract_attribute_EClass(
54500 problem:LogicProblem, interpretation:PartialInterpretation,
54501 source: DefinedElement, target:DefinedElement)
54502{
54503 find interpretation(problem,interpretation);
54504 // The two endpoint of the link have to exist
54505 find mayExist(problem, interpretation, source);
54506 find mayExist(problem, interpretation, target);
54507 // Type consistency
54508 find mayInstanceOfEClass_class(problem,interpretation,source);
54509 BooleanElement(target);
54510 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
54511 // the upper bound of the multiplicity should be considered.
54512 numberOfExistingReferences == count find mustInRelationabstract_attribute_EClass(problem,interpretation,source,_);
54513 check(numberOfExistingReferences < 1);
54514} or {
54515 find mustInRelationabstract_attribute_EClass(problem,interpretation,source,target);
54516}
54517/**
54518 * Matcher for detecting tuples t where []interface attribute EClass(source,target)
54519 */
54520private pattern mustInRelationinterface_attribute_EClass(
54521 problem:LogicProblem, interpretation:PartialInterpretation,
54522 source: DefinedElement, target:DefinedElement)
54523{
54524 find interpretation(problem,interpretation);
54525 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
54526 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface attribute EClass");
54527 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
54528 BinaryElementRelationLink.param1(link,source);
54529 BinaryElementRelationLink.param2(link,target);
54530}
54531/**
54532 * Matcher for detecting tuples t where <>interface attribute EClass(source,target)
54533 */
54534private pattern mayInRelationinterface_attribute_EClass(
54535 problem:LogicProblem, interpretation:PartialInterpretation,
54536 source: DefinedElement, target:DefinedElement)
54537{
54538 find interpretation(problem,interpretation);
54539 // The two endpoint of the link have to exist
54540 find mayExist(problem, interpretation, source);
54541 find mayExist(problem, interpretation, target);
54542 // Type consistency
54543 find mayInstanceOfEClass_class(problem,interpretation,source);
54544 BooleanElement(target);
54545 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
54546 // the upper bound of the multiplicity should be considered.
54547 numberOfExistingReferences == count find mustInRelationinterface_attribute_EClass(problem,interpretation,source,_);
54548 check(numberOfExistingReferences < 1);
54549} or {
54550 find mustInRelationinterface_attribute_EClass(problem,interpretation,source,target);
54551}
54552/**
54553 * Matcher for detecting tuples t where []instanceClassName attribute EClassifier(source,target)
54554 */
54555private pattern mustInRelationinstanceClassName_attribute_EClassifier(
54556 problem:LogicProblem, interpretation:PartialInterpretation,
54557 source: DefinedElement, target:DefinedElement)
54558{
54559 find interpretation(problem,interpretation);
54560 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
54561 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"instanceClassName attribute EClassifier");
54562 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
54563 BinaryElementRelationLink.param1(link,source);
54564 BinaryElementRelationLink.param2(link,target);
54565}
54566/**
54567 * Matcher for detecting tuples t where <>instanceClassName attribute EClassifier(source,target)
54568 */
54569private pattern mayInRelationinstanceClassName_attribute_EClassifier(
54570 problem:LogicProblem, interpretation:PartialInterpretation,
54571 source: DefinedElement, target:DefinedElement)
54572{
54573 find interpretation(problem,interpretation);
54574 // The two endpoint of the link have to exist
54575 find mayExist(problem, interpretation, source);
54576 find mayExist(problem, interpretation, target);
54577 // Type consistency
54578 find mayInstanceOfEClassifier_class(problem,interpretation,source);
54579 StringElement(target);
54580 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
54581 // the upper bound of the multiplicity should be considered.
54582 numberOfExistingReferences == count find mustInRelationinstanceClassName_attribute_EClassifier(problem,interpretation,source,_);
54583 check(numberOfExistingReferences < 1);
54584} or {
54585 find mustInRelationinstanceClassName_attribute_EClassifier(problem,interpretation,source,target);
54586}
54587/**
54588 * Matcher for detecting tuples t where []instanceTypeName attribute EClassifier(source,target)
54589 */
54590private pattern mustInRelationinstanceTypeName_attribute_EClassifier(
54591 problem:LogicProblem, interpretation:PartialInterpretation,
54592 source: DefinedElement, target:DefinedElement)
54593{
54594 find interpretation(problem,interpretation);
54595 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
54596 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"instanceTypeName attribute EClassifier");
54597 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
54598 BinaryElementRelationLink.param1(link,source);
54599 BinaryElementRelationLink.param2(link,target);
54600}
54601/**
54602 * Matcher for detecting tuples t where <>instanceTypeName attribute EClassifier(source,target)
54603 */
54604private pattern mayInRelationinstanceTypeName_attribute_EClassifier(
54605 problem:LogicProblem, interpretation:PartialInterpretation,
54606 source: DefinedElement, target:DefinedElement)
54607{
54608 find interpretation(problem,interpretation);
54609 // The two endpoint of the link have to exist
54610 find mayExist(problem, interpretation, source);
54611 find mayExist(problem, interpretation, target);
54612 // Type consistency
54613 find mayInstanceOfEClassifier_class(problem,interpretation,source);
54614 StringElement(target);
54615 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
54616 // the upper bound of the multiplicity should be considered.
54617 numberOfExistingReferences == count find mustInRelationinstanceTypeName_attribute_EClassifier(problem,interpretation,source,_);
54618 check(numberOfExistingReferences < 1);
54619} or {
54620 find mustInRelationinstanceTypeName_attribute_EClassifier(problem,interpretation,source,target);
54621}
54622/**
54623 * Matcher for detecting tuples t where []serializable attribute EDataType(source,target)
54624 */
54625private pattern mustInRelationserializable_attribute_EDataType(
54626 problem:LogicProblem, interpretation:PartialInterpretation,
54627 source: DefinedElement, target:DefinedElement)
54628{
54629 find interpretation(problem,interpretation);
54630 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
54631 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"serializable attribute EDataType");
54632 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
54633 BinaryElementRelationLink.param1(link,source);
54634 BinaryElementRelationLink.param2(link,target);
54635}
54636/**
54637 * Matcher for detecting tuples t where <>serializable attribute EDataType(source,target)
54638 */
54639private pattern mayInRelationserializable_attribute_EDataType(
54640 problem:LogicProblem, interpretation:PartialInterpretation,
54641 source: DefinedElement, target:DefinedElement)
54642{
54643 find interpretation(problem,interpretation);
54644 // The two endpoint of the link have to exist
54645 find mayExist(problem, interpretation, source);
54646 find mayExist(problem, interpretation, target);
54647 // Type consistency
54648 find mayInstanceOfEDataType_class(problem,interpretation,source);
54649 BooleanElement(target);
54650 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
54651 // the upper bound of the multiplicity should be considered.
54652 numberOfExistingReferences == count find mustInRelationserializable_attribute_EDataType(problem,interpretation,source,_);
54653 check(numberOfExistingReferences < 1);
54654} or {
54655 find mustInRelationserializable_attribute_EDataType(problem,interpretation,source,target);
54656}
54657/**
54658 * Matcher for detecting tuples t where []value attribute EEnumLiteral(source,target)
54659 */
54660private pattern mustInRelationvalue_attribute_EEnumLiteral(
54661 problem:LogicProblem, interpretation:PartialInterpretation,
54662 source: DefinedElement, target:DefinedElement)
54663{
54664 find interpretation(problem,interpretation);
54665 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
54666 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"value attribute EEnumLiteral");
54667 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
54668 BinaryElementRelationLink.param1(link,source);
54669 BinaryElementRelationLink.param2(link,target);
54670}
54671/**
54672 * Matcher for detecting tuples t where <>value attribute EEnumLiteral(source,target)
54673 */
54674private pattern mayInRelationvalue_attribute_EEnumLiteral(
54675 problem:LogicProblem, interpretation:PartialInterpretation,
54676 source: DefinedElement, target:DefinedElement)
54677{
54678 find interpretation(problem,interpretation);
54679 // The two endpoint of the link have to exist
54680 find mayExist(problem, interpretation, source);
54681 find mayExist(problem, interpretation, target);
54682 // Type consistency
54683 find mayInstanceOfEEnumLiteral_class(problem,interpretation,source);
54684 IntegerElement(target);
54685 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
54686 // the upper bound of the multiplicity should be considered.
54687 numberOfExistingReferences == count find mustInRelationvalue_attribute_EEnumLiteral(problem,interpretation,source,_);
54688 check(numberOfExistingReferences < 1);
54689} or {
54690 find mustInRelationvalue_attribute_EEnumLiteral(problem,interpretation,source,target);
54691}
54692/**
54693 * Matcher for detecting tuples t where []literal attribute EEnumLiteral(source,target)
54694 */
54695private pattern mustInRelationliteral_attribute_EEnumLiteral(
54696 problem:LogicProblem, interpretation:PartialInterpretation,
54697 source: DefinedElement, target:DefinedElement)
54698{
54699 find interpretation(problem,interpretation);
54700 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
54701 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"literal attribute EEnumLiteral");
54702 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
54703 BinaryElementRelationLink.param1(link,source);
54704 BinaryElementRelationLink.param2(link,target);
54705}
54706/**
54707 * Matcher for detecting tuples t where <>literal attribute EEnumLiteral(source,target)
54708 */
54709private pattern mayInRelationliteral_attribute_EEnumLiteral(
54710 problem:LogicProblem, interpretation:PartialInterpretation,
54711 source: DefinedElement, target:DefinedElement)
54712{
54713 find interpretation(problem,interpretation);
54714 // The two endpoint of the link have to exist
54715 find mayExist(problem, interpretation, source);
54716 find mayExist(problem, interpretation, target);
54717 // Type consistency
54718 find mayInstanceOfEEnumLiteral_class(problem,interpretation,source);
54719 StringElement(target);
54720 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
54721 // the upper bound of the multiplicity should be considered.
54722 numberOfExistingReferences == count find mustInRelationliteral_attribute_EEnumLiteral(problem,interpretation,source,_);
54723 check(numberOfExistingReferences < 1);
54724} or {
54725 find mustInRelationliteral_attribute_EEnumLiteral(problem,interpretation,source,target);
54726}
54727/**
54728 * Matcher for detecting tuples t where []name attribute ENamedElement(source,target)
54729 */
54730private pattern mustInRelationname_attribute_ENamedElement(
54731 problem:LogicProblem, interpretation:PartialInterpretation,
54732 source: DefinedElement, target:DefinedElement)
54733{
54734 find interpretation(problem,interpretation);
54735 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
54736 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"name attribute ENamedElement");
54737 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
54738 BinaryElementRelationLink.param1(link,source);
54739 BinaryElementRelationLink.param2(link,target);
54740}
54741/**
54742 * Matcher for detecting tuples t where <>name attribute ENamedElement(source,target)
54743 */
54744private pattern mayInRelationname_attribute_ENamedElement(
54745 problem:LogicProblem, interpretation:PartialInterpretation,
54746 source: DefinedElement, target:DefinedElement)
54747{
54748 find interpretation(problem,interpretation);
54749 // The two endpoint of the link have to exist
54750 find mayExist(problem, interpretation, source);
54751 find mayExist(problem, interpretation, target);
54752 // Type consistency
54753 find mayInstanceOfENamedElement_class(problem,interpretation,source);
54754 StringElement(target);
54755 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
54756 // the upper bound of the multiplicity should be considered.
54757 numberOfExistingReferences == count find mustInRelationname_attribute_ENamedElement(problem,interpretation,source,_);
54758 check(numberOfExistingReferences < 1);
54759} or {
54760 find mustInRelationname_attribute_ENamedElement(problem,interpretation,source,target);
54761}
54762/**
54763 * Matcher for detecting tuples t where []nsURI attribute EPackage(source,target)
54764 */
54765private pattern mustInRelationnsURI_attribute_EPackage(
54766 problem:LogicProblem, interpretation:PartialInterpretation,
54767 source: DefinedElement, target:DefinedElement)
54768{
54769 find interpretation(problem,interpretation);
54770 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
54771 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"nsURI attribute EPackage");
54772 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
54773 BinaryElementRelationLink.param1(link,source);
54774 BinaryElementRelationLink.param2(link,target);
54775}
54776/**
54777 * Matcher for detecting tuples t where <>nsURI attribute EPackage(source,target)
54778 */
54779private pattern mayInRelationnsURI_attribute_EPackage(
54780 problem:LogicProblem, interpretation:PartialInterpretation,
54781 source: DefinedElement, target:DefinedElement)
54782{
54783 find interpretation(problem,interpretation);
54784 // The two endpoint of the link have to exist
54785 find mayExist(problem, interpretation, source);
54786 find mayExist(problem, interpretation, target);
54787 // Type consistency
54788 find mayInstanceOfEPackage_class(problem,interpretation,source);
54789 StringElement(target);
54790 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
54791 // the upper bound of the multiplicity should be considered.
54792 numberOfExistingReferences == count find mustInRelationnsURI_attribute_EPackage(problem,interpretation,source,_);
54793 check(numberOfExistingReferences < 1);
54794} or {
54795 find mustInRelationnsURI_attribute_EPackage(problem,interpretation,source,target);
54796}
54797/**
54798 * Matcher for detecting tuples t where []nsPrefix attribute EPackage(source,target)
54799 */
54800private pattern mustInRelationnsPrefix_attribute_EPackage(
54801 problem:LogicProblem, interpretation:PartialInterpretation,
54802 source: DefinedElement, target:DefinedElement)
54803{
54804 find interpretation(problem,interpretation);
54805 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
54806 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"nsPrefix attribute EPackage");
54807 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
54808 BinaryElementRelationLink.param1(link,source);
54809 BinaryElementRelationLink.param2(link,target);
54810}
54811/**
54812 * Matcher for detecting tuples t where <>nsPrefix attribute EPackage(source,target)
54813 */
54814private pattern mayInRelationnsPrefix_attribute_EPackage(
54815 problem:LogicProblem, interpretation:PartialInterpretation,
54816 source: DefinedElement, target:DefinedElement)
54817{
54818 find interpretation(problem,interpretation);
54819 // The two endpoint of the link have to exist
54820 find mayExist(problem, interpretation, source);
54821 find mayExist(problem, interpretation, target);
54822 // Type consistency
54823 find mayInstanceOfEPackage_class(problem,interpretation,source);
54824 StringElement(target);
54825 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
54826 // the upper bound of the multiplicity should be considered.
54827 numberOfExistingReferences == count find mustInRelationnsPrefix_attribute_EPackage(problem,interpretation,source,_);
54828 check(numberOfExistingReferences < 1);
54829} or {
54830 find mustInRelationnsPrefix_attribute_EPackage(problem,interpretation,source,target);
54831}
54832/**
54833 * Matcher for detecting tuples t where []containment attribute EReference(source,target)
54834 */
54835private pattern mustInRelationcontainment_attribute_EReference(
54836 problem:LogicProblem, interpretation:PartialInterpretation,
54837 source: DefinedElement, target:DefinedElement)
54838{
54839 find interpretation(problem,interpretation);
54840 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
54841 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"containment attribute EReference");
54842 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
54843 BinaryElementRelationLink.param1(link,source);
54844 BinaryElementRelationLink.param2(link,target);
54845}
54846/**
54847 * Matcher for detecting tuples t where <>containment attribute EReference(source,target)
54848 */
54849private pattern mayInRelationcontainment_attribute_EReference(
54850 problem:LogicProblem, interpretation:PartialInterpretation,
54851 source: DefinedElement, target:DefinedElement)
54852{
54853 find interpretation(problem,interpretation);
54854 // The two endpoint of the link have to exist
54855 find mayExist(problem, interpretation, source);
54856 find mayExist(problem, interpretation, target);
54857 // Type consistency
54858 find mayInstanceOfEReference_class(problem,interpretation,source);
54859 BooleanElement(target);
54860 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
54861 // the upper bound of the multiplicity should be considered.
54862 numberOfExistingReferences == count find mustInRelationcontainment_attribute_EReference(problem,interpretation,source,_);
54863 check(numberOfExistingReferences < 1);
54864} or {
54865 find mustInRelationcontainment_attribute_EReference(problem,interpretation,source,target);
54866}
54867/**
54868 * Matcher for detecting tuples t where []container attribute EReference(source,target)
54869 */
54870private pattern mustInRelationcontainer_attribute_EReference(
54871 problem:LogicProblem, interpretation:PartialInterpretation,
54872 source: DefinedElement, target:DefinedElement)
54873{
54874 find interpretation(problem,interpretation);
54875 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
54876 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"container attribute EReference");
54877 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
54878 BinaryElementRelationLink.param1(link,source);
54879 BinaryElementRelationLink.param2(link,target);
54880}
54881/**
54882 * Matcher for detecting tuples t where <>container attribute EReference(source,target)
54883 */
54884private pattern mayInRelationcontainer_attribute_EReference(
54885 problem:LogicProblem, interpretation:PartialInterpretation,
54886 source: DefinedElement, target:DefinedElement)
54887{
54888 find interpretation(problem,interpretation);
54889 // The two endpoint of the link have to exist
54890 find mayExist(problem, interpretation, source);
54891 find mayExist(problem, interpretation, target);
54892 // Type consistency
54893 find mayInstanceOfEReference_class(problem,interpretation,source);
54894 BooleanElement(target);
54895 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
54896 // the upper bound of the multiplicity should be considered.
54897 numberOfExistingReferences == count find mustInRelationcontainer_attribute_EReference(problem,interpretation,source,_);
54898 check(numberOfExistingReferences < 1);
54899} or {
54900 find mustInRelationcontainer_attribute_EReference(problem,interpretation,source,target);
54901}
54902/**
54903 * Matcher for detecting tuples t where []resolveProxies attribute EReference(source,target)
54904 */
54905private pattern mustInRelationresolveProxies_attribute_EReference(
54906 problem:LogicProblem, interpretation:PartialInterpretation,
54907 source: DefinedElement, target:DefinedElement)
54908{
54909 find interpretation(problem,interpretation);
54910 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
54911 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"resolveProxies attribute EReference");
54912 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
54913 BinaryElementRelationLink.param1(link,source);
54914 BinaryElementRelationLink.param2(link,target);
54915}
54916/**
54917 * Matcher for detecting tuples t where <>resolveProxies attribute EReference(source,target)
54918 */
54919private pattern mayInRelationresolveProxies_attribute_EReference(
54920 problem:LogicProblem, interpretation:PartialInterpretation,
54921 source: DefinedElement, target:DefinedElement)
54922{
54923 find interpretation(problem,interpretation);
54924 // The two endpoint of the link have to exist
54925 find mayExist(problem, interpretation, source);
54926 find mayExist(problem, interpretation, target);
54927 // Type consistency
54928 find mayInstanceOfEReference_class(problem,interpretation,source);
54929 BooleanElement(target);
54930 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
54931 // the upper bound of the multiplicity should be considered.
54932 numberOfExistingReferences == count find mustInRelationresolveProxies_attribute_EReference(problem,interpretation,source,_);
54933 check(numberOfExistingReferences < 1);
54934} or {
54935 find mustInRelationresolveProxies_attribute_EReference(problem,interpretation,source,target);
54936}
54937/**
54938 * Matcher for detecting tuples t where []changeable attribute EStructuralFeature(source,target)
54939 */
54940private pattern mustInRelationchangeable_attribute_EStructuralFeature(
54941 problem:LogicProblem, interpretation:PartialInterpretation,
54942 source: DefinedElement, target:DefinedElement)
54943{
54944 find interpretation(problem,interpretation);
54945 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
54946 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"changeable attribute EStructuralFeature");
54947 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
54948 BinaryElementRelationLink.param1(link,source);
54949 BinaryElementRelationLink.param2(link,target);
54950}
54951/**
54952 * Matcher for detecting tuples t where <>changeable attribute EStructuralFeature(source,target)
54953 */
54954private pattern mayInRelationchangeable_attribute_EStructuralFeature(
54955 problem:LogicProblem, interpretation:PartialInterpretation,
54956 source: DefinedElement, target:DefinedElement)
54957{
54958 find interpretation(problem,interpretation);
54959 // The two endpoint of the link have to exist
54960 find mayExist(problem, interpretation, source);
54961 find mayExist(problem, interpretation, target);
54962 // Type consistency
54963 find mayInstanceOfEStructuralFeature_class(problem,interpretation,source);
54964 BooleanElement(target);
54965 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
54966 // the upper bound of the multiplicity should be considered.
54967 numberOfExistingReferences == count find mustInRelationchangeable_attribute_EStructuralFeature(problem,interpretation,source,_);
54968 check(numberOfExistingReferences < 1);
54969} or {
54970 find mustInRelationchangeable_attribute_EStructuralFeature(problem,interpretation,source,target);
54971}
54972/**
54973 * Matcher for detecting tuples t where []volatile attribute EStructuralFeature(source,target)
54974 */
54975private pattern mustInRelationvolatile_attribute_EStructuralFeature(
54976 problem:LogicProblem, interpretation:PartialInterpretation,
54977 source: DefinedElement, target:DefinedElement)
54978{
54979 find interpretation(problem,interpretation);
54980 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
54981 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"volatile attribute EStructuralFeature");
54982 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
54983 BinaryElementRelationLink.param1(link,source);
54984 BinaryElementRelationLink.param2(link,target);
54985}
54986/**
54987 * Matcher for detecting tuples t where <>volatile attribute EStructuralFeature(source,target)
54988 */
54989private pattern mayInRelationvolatile_attribute_EStructuralFeature(
54990 problem:LogicProblem, interpretation:PartialInterpretation,
54991 source: DefinedElement, target:DefinedElement)
54992{
54993 find interpretation(problem,interpretation);
54994 // The two endpoint of the link have to exist
54995 find mayExist(problem, interpretation, source);
54996 find mayExist(problem, interpretation, target);
54997 // Type consistency
54998 find mayInstanceOfEStructuralFeature_class(problem,interpretation,source);
54999 BooleanElement(target);
55000 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
55001 // the upper bound of the multiplicity should be considered.
55002 numberOfExistingReferences == count find mustInRelationvolatile_attribute_EStructuralFeature(problem,interpretation,source,_);
55003 check(numberOfExistingReferences < 1);
55004} or {
55005 find mustInRelationvolatile_attribute_EStructuralFeature(problem,interpretation,source,target);
55006}
55007/**
55008 * Matcher for detecting tuples t where []transient attribute EStructuralFeature(source,target)
55009 */
55010private pattern mustInRelationtransient_attribute_EStructuralFeature(
55011 problem:LogicProblem, interpretation:PartialInterpretation,
55012 source: DefinedElement, target:DefinedElement)
55013{
55014 find interpretation(problem,interpretation);
55015 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
55016 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"transient attribute EStructuralFeature");
55017 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
55018 BinaryElementRelationLink.param1(link,source);
55019 BinaryElementRelationLink.param2(link,target);
55020}
55021/**
55022 * Matcher for detecting tuples t where <>transient attribute EStructuralFeature(source,target)
55023 */
55024private pattern mayInRelationtransient_attribute_EStructuralFeature(
55025 problem:LogicProblem, interpretation:PartialInterpretation,
55026 source: DefinedElement, target:DefinedElement)
55027{
55028 find interpretation(problem,interpretation);
55029 // The two endpoint of the link have to exist
55030 find mayExist(problem, interpretation, source);
55031 find mayExist(problem, interpretation, target);
55032 // Type consistency
55033 find mayInstanceOfEStructuralFeature_class(problem,interpretation,source);
55034 BooleanElement(target);
55035 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
55036 // the upper bound of the multiplicity should be considered.
55037 numberOfExistingReferences == count find mustInRelationtransient_attribute_EStructuralFeature(problem,interpretation,source,_);
55038 check(numberOfExistingReferences < 1);
55039} or {
55040 find mustInRelationtransient_attribute_EStructuralFeature(problem,interpretation,source,target);
55041}
55042/**
55043 * Matcher for detecting tuples t where []defaultValueLiteral attribute EStructuralFeature(source,target)
55044 */
55045private pattern mustInRelationdefaultValueLiteral_attribute_EStructuralFeature(
55046 problem:LogicProblem, interpretation:PartialInterpretation,
55047 source: DefinedElement, target:DefinedElement)
55048{
55049 find interpretation(problem,interpretation);
55050 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
55051 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"defaultValueLiteral attribute EStructuralFeature");
55052 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
55053 BinaryElementRelationLink.param1(link,source);
55054 BinaryElementRelationLink.param2(link,target);
55055}
55056/**
55057 * Matcher for detecting tuples t where <>defaultValueLiteral attribute EStructuralFeature(source,target)
55058 */
55059private pattern mayInRelationdefaultValueLiteral_attribute_EStructuralFeature(
55060 problem:LogicProblem, interpretation:PartialInterpretation,
55061 source: DefinedElement, target:DefinedElement)
55062{
55063 find interpretation(problem,interpretation);
55064 // The two endpoint of the link have to exist
55065 find mayExist(problem, interpretation, source);
55066 find mayExist(problem, interpretation, target);
55067 // Type consistency
55068 find mayInstanceOfEStructuralFeature_class(problem,interpretation,source);
55069 StringElement(target);
55070 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
55071 // the upper bound of the multiplicity should be considered.
55072 numberOfExistingReferences == count find mustInRelationdefaultValueLiteral_attribute_EStructuralFeature(problem,interpretation,source,_);
55073 check(numberOfExistingReferences < 1);
55074} or {
55075 find mustInRelationdefaultValueLiteral_attribute_EStructuralFeature(problem,interpretation,source,target);
55076}
55077/**
55078 * Matcher for detecting tuples t where []unsettable attribute EStructuralFeature(source,target)
55079 */
55080private pattern mustInRelationunsettable_attribute_EStructuralFeature(
55081 problem:LogicProblem, interpretation:PartialInterpretation,
55082 source: DefinedElement, target:DefinedElement)
55083{
55084 find interpretation(problem,interpretation);
55085 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
55086 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"unsettable attribute EStructuralFeature");
55087 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
55088 BinaryElementRelationLink.param1(link,source);
55089 BinaryElementRelationLink.param2(link,target);
55090}
55091/**
55092 * Matcher for detecting tuples t where <>unsettable attribute EStructuralFeature(source,target)
55093 */
55094private pattern mayInRelationunsettable_attribute_EStructuralFeature(
55095 problem:LogicProblem, interpretation:PartialInterpretation,
55096 source: DefinedElement, target:DefinedElement)
55097{
55098 find interpretation(problem,interpretation);
55099 // The two endpoint of the link have to exist
55100 find mayExist(problem, interpretation, source);
55101 find mayExist(problem, interpretation, target);
55102 // Type consistency
55103 find mayInstanceOfEStructuralFeature_class(problem,interpretation,source);
55104 BooleanElement(target);
55105 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
55106 // the upper bound of the multiplicity should be considered.
55107 numberOfExistingReferences == count find mustInRelationunsettable_attribute_EStructuralFeature(problem,interpretation,source,_);
55108 check(numberOfExistingReferences < 1);
55109} or {
55110 find mustInRelationunsettable_attribute_EStructuralFeature(problem,interpretation,source,target);
55111}
55112/**
55113 * Matcher for detecting tuples t where []derived attribute EStructuralFeature(source,target)
55114 */
55115private pattern mustInRelationderived_attribute_EStructuralFeature(
55116 problem:LogicProblem, interpretation:PartialInterpretation,
55117 source: DefinedElement, target:DefinedElement)
55118{
55119 find interpretation(problem,interpretation);
55120 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
55121 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"derived attribute EStructuralFeature");
55122 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
55123 BinaryElementRelationLink.param1(link,source);
55124 BinaryElementRelationLink.param2(link,target);
55125}
55126/**
55127 * Matcher for detecting tuples t where <>derived attribute EStructuralFeature(source,target)
55128 */
55129private pattern mayInRelationderived_attribute_EStructuralFeature(
55130 problem:LogicProblem, interpretation:PartialInterpretation,
55131 source: DefinedElement, target:DefinedElement)
55132{
55133 find interpretation(problem,interpretation);
55134 // The two endpoint of the link have to exist
55135 find mayExist(problem, interpretation, source);
55136 find mayExist(problem, interpretation, target);
55137 // Type consistency
55138 find mayInstanceOfEStructuralFeature_class(problem,interpretation,source);
55139 BooleanElement(target);
55140 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
55141 // the upper bound of the multiplicity should be considered.
55142 numberOfExistingReferences == count find mustInRelationderived_attribute_EStructuralFeature(problem,interpretation,source,_);
55143 check(numberOfExistingReferences < 1);
55144} or {
55145 find mustInRelationderived_attribute_EStructuralFeature(problem,interpretation,source,target);
55146}
55147/**
55148 * Matcher for detecting tuples t where []ordered attribute ETypedElement(source,target)
55149 */
55150private pattern mustInRelationordered_attribute_ETypedElement(
55151 problem:LogicProblem, interpretation:PartialInterpretation,
55152 source: DefinedElement, target:DefinedElement)
55153{
55154 find interpretation(problem,interpretation);
55155 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
55156 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"ordered attribute ETypedElement");
55157 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
55158 BinaryElementRelationLink.param1(link,source);
55159 BinaryElementRelationLink.param2(link,target);
55160}
55161/**
55162 * Matcher for detecting tuples t where <>ordered attribute ETypedElement(source,target)
55163 */
55164private pattern mayInRelationordered_attribute_ETypedElement(
55165 problem:LogicProblem, interpretation:PartialInterpretation,
55166 source: DefinedElement, target:DefinedElement)
55167{
55168 find interpretation(problem,interpretation);
55169 // The two endpoint of the link have to exist
55170 find mayExist(problem, interpretation, source);
55171 find mayExist(problem, interpretation, target);
55172 // Type consistency
55173 find mayInstanceOfETypedElement_class(problem,interpretation,source);
55174 BooleanElement(target);
55175 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
55176 // the upper bound of the multiplicity should be considered.
55177 numberOfExistingReferences == count find mustInRelationordered_attribute_ETypedElement(problem,interpretation,source,_);
55178 check(numberOfExistingReferences < 1);
55179} or {
55180 find mustInRelationordered_attribute_ETypedElement(problem,interpretation,source,target);
55181}
55182/**
55183 * Matcher for detecting tuples t where []unique attribute ETypedElement(source,target)
55184 */
55185private pattern mustInRelationunique_attribute_ETypedElement(
55186 problem:LogicProblem, interpretation:PartialInterpretation,
55187 source: DefinedElement, target:DefinedElement)
55188{
55189 find interpretation(problem,interpretation);
55190 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
55191 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"unique attribute ETypedElement");
55192 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
55193 BinaryElementRelationLink.param1(link,source);
55194 BinaryElementRelationLink.param2(link,target);
55195}
55196/**
55197 * Matcher for detecting tuples t where <>unique attribute ETypedElement(source,target)
55198 */
55199private pattern mayInRelationunique_attribute_ETypedElement(
55200 problem:LogicProblem, interpretation:PartialInterpretation,
55201 source: DefinedElement, target:DefinedElement)
55202{
55203 find interpretation(problem,interpretation);
55204 // The two endpoint of the link have to exist
55205 find mayExist(problem, interpretation, source);
55206 find mayExist(problem, interpretation, target);
55207 // Type consistency
55208 find mayInstanceOfETypedElement_class(problem,interpretation,source);
55209 BooleanElement(target);
55210 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
55211 // the upper bound of the multiplicity should be considered.
55212 numberOfExistingReferences == count find mustInRelationunique_attribute_ETypedElement(problem,interpretation,source,_);
55213 check(numberOfExistingReferences < 1);
55214} or {
55215 find mustInRelationunique_attribute_ETypedElement(problem,interpretation,source,target);
55216}
55217/**
55218 * Matcher for detecting tuples t where []lowerBound attribute ETypedElement(source,target)
55219 */
55220private pattern mustInRelationlowerBound_attribute_ETypedElement(
55221 problem:LogicProblem, interpretation:PartialInterpretation,
55222 source: DefinedElement, target:DefinedElement)
55223{
55224 find interpretation(problem,interpretation);
55225 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
55226 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"lowerBound attribute ETypedElement");
55227 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
55228 BinaryElementRelationLink.param1(link,source);
55229 BinaryElementRelationLink.param2(link,target);
55230}
55231/**
55232 * Matcher for detecting tuples t where <>lowerBound attribute ETypedElement(source,target)
55233 */
55234private pattern mayInRelationlowerBound_attribute_ETypedElement(
55235 problem:LogicProblem, interpretation:PartialInterpretation,
55236 source: DefinedElement, target:DefinedElement)
55237{
55238 find interpretation(problem,interpretation);
55239 // The two endpoint of the link have to exist
55240 find mayExist(problem, interpretation, source);
55241 find mayExist(problem, interpretation, target);
55242 // Type consistency
55243 find mayInstanceOfETypedElement_class(problem,interpretation,source);
55244 IntegerElement(target);
55245 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
55246 // the upper bound of the multiplicity should be considered.
55247 numberOfExistingReferences == count find mustInRelationlowerBound_attribute_ETypedElement(problem,interpretation,source,_);
55248 check(numberOfExistingReferences < 1);
55249} or {
55250 find mustInRelationlowerBound_attribute_ETypedElement(problem,interpretation,source,target);
55251}
55252/**
55253 * Matcher for detecting tuples t where []upperBound attribute ETypedElement(source,target)
55254 */
55255private pattern mustInRelationupperBound_attribute_ETypedElement(
55256 problem:LogicProblem, interpretation:PartialInterpretation,
55257 source: DefinedElement, target:DefinedElement)
55258{
55259 find interpretation(problem,interpretation);
55260 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
55261 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"upperBound attribute ETypedElement");
55262 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
55263 BinaryElementRelationLink.param1(link,source);
55264 BinaryElementRelationLink.param2(link,target);
55265}
55266/**
55267 * Matcher for detecting tuples t where <>upperBound attribute ETypedElement(source,target)
55268 */
55269private pattern mayInRelationupperBound_attribute_ETypedElement(
55270 problem:LogicProblem, interpretation:PartialInterpretation,
55271 source: DefinedElement, target:DefinedElement)
55272{
55273 find interpretation(problem,interpretation);
55274 // The two endpoint of the link have to exist
55275 find mayExist(problem, interpretation, source);
55276 find mayExist(problem, interpretation, target);
55277 // Type consistency
55278 find mayInstanceOfETypedElement_class(problem,interpretation,source);
55279 IntegerElement(target);
55280 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
55281 // the upper bound of the multiplicity should be considered.
55282 numberOfExistingReferences == count find mustInRelationupperBound_attribute_ETypedElement(problem,interpretation,source,_);
55283 check(numberOfExistingReferences < 1);
55284} or {
55285 find mustInRelationupperBound_attribute_ETypedElement(problem,interpretation,source,target);
55286}
55287/**
55288 * Matcher for detecting tuples t where []many attribute ETypedElement(source,target)
55289 */
55290private pattern mustInRelationmany_attribute_ETypedElement(
55291 problem:LogicProblem, interpretation:PartialInterpretation,
55292 source: DefinedElement, target:DefinedElement)
55293{
55294 find interpretation(problem,interpretation);
55295 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
55296 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"many attribute ETypedElement");
55297 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
55298 BinaryElementRelationLink.param1(link,source);
55299 BinaryElementRelationLink.param2(link,target);
55300}
55301/**
55302 * Matcher for detecting tuples t where <>many attribute ETypedElement(source,target)
55303 */
55304private pattern mayInRelationmany_attribute_ETypedElement(
55305 problem:LogicProblem, interpretation:PartialInterpretation,
55306 source: DefinedElement, target:DefinedElement)
55307{
55308 find interpretation(problem,interpretation);
55309 // The two endpoint of the link have to exist
55310 find mayExist(problem, interpretation, source);
55311 find mayExist(problem, interpretation, target);
55312 // Type consistency
55313 find mayInstanceOfETypedElement_class(problem,interpretation,source);
55314 BooleanElement(target);
55315 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
55316 // the upper bound of the multiplicity should be considered.
55317 numberOfExistingReferences == count find mustInRelationmany_attribute_ETypedElement(problem,interpretation,source,_);
55318 check(numberOfExistingReferences < 1);
55319} or {
55320 find mustInRelationmany_attribute_ETypedElement(problem,interpretation,source,target);
55321}
55322/**
55323 * Matcher for detecting tuples t where []required attribute ETypedElement(source,target)
55324 */
55325private pattern mustInRelationrequired_attribute_ETypedElement(
55326 problem:LogicProblem, interpretation:PartialInterpretation,
55327 source: DefinedElement, target:DefinedElement)
55328{
55329 find interpretation(problem,interpretation);
55330 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
55331 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"required attribute ETypedElement");
55332 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
55333 BinaryElementRelationLink.param1(link,source);
55334 BinaryElementRelationLink.param2(link,target);
55335}
55336/**
55337 * Matcher for detecting tuples t where <>required attribute ETypedElement(source,target)
55338 */
55339private pattern mayInRelationrequired_attribute_ETypedElement(
55340 problem:LogicProblem, interpretation:PartialInterpretation,
55341 source: DefinedElement, target:DefinedElement)
55342{
55343 find interpretation(problem,interpretation);
55344 // The two endpoint of the link have to exist
55345 find mayExist(problem, interpretation, source);
55346 find mayExist(problem, interpretation, target);
55347 // Type consistency
55348 find mayInstanceOfETypedElement_class(problem,interpretation,source);
55349 BooleanElement(target);
55350 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
55351 // the upper bound of the multiplicity should be considered.
55352 numberOfExistingReferences == count find mustInRelationrequired_attribute_ETypedElement(problem,interpretation,source,_);
55353 check(numberOfExistingReferences < 1);
55354} or {
55355 find mustInRelationrequired_attribute_ETypedElement(problem,interpretation,source,target);
55356}
55357/**
55358 * Matcher for detecting tuples t where []key attribute EStringToStringMapEntry(source,target)
55359 */
55360private pattern mustInRelationkey_attribute_EStringToStringMapEntry(
55361 problem:LogicProblem, interpretation:PartialInterpretation,
55362 source: DefinedElement, target:DefinedElement)
55363{
55364 find interpretation(problem,interpretation);
55365 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
55366 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"key attribute EStringToStringMapEntry");
55367 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
55368 BinaryElementRelationLink.param1(link,source);
55369 BinaryElementRelationLink.param2(link,target);
55370}
55371/**
55372 * Matcher for detecting tuples t where <>key attribute EStringToStringMapEntry(source,target)
55373 */
55374private pattern mayInRelationkey_attribute_EStringToStringMapEntry(
55375 problem:LogicProblem, interpretation:PartialInterpretation,
55376 source: DefinedElement, target:DefinedElement)
55377{
55378 find interpretation(problem,interpretation);
55379 // The two endpoint of the link have to exist
55380 find mayExist(problem, interpretation, source);
55381 find mayExist(problem, interpretation, target);
55382 // Type consistency
55383 find mayInstanceOfEStringToStringMapEntry_class(problem,interpretation,source);
55384 StringElement(target);
55385 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
55386 // the upper bound of the multiplicity should be considered.
55387 numberOfExistingReferences == count find mustInRelationkey_attribute_EStringToStringMapEntry(problem,interpretation,source,_);
55388 check(numberOfExistingReferences < 1);
55389} or {
55390 find mustInRelationkey_attribute_EStringToStringMapEntry(problem,interpretation,source,target);
55391}
55392/**
55393 * Matcher for detecting tuples t where []value attribute EStringToStringMapEntry(source,target)
55394 */
55395private pattern mustInRelationvalue_attribute_EStringToStringMapEntry(
55396 problem:LogicProblem, interpretation:PartialInterpretation,
55397 source: DefinedElement, target:DefinedElement)
55398{
55399 find interpretation(problem,interpretation);
55400 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
55401 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"value attribute EStringToStringMapEntry");
55402 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
55403 BinaryElementRelationLink.param1(link,source);
55404 BinaryElementRelationLink.param2(link,target);
55405}
55406/**
55407 * Matcher for detecting tuples t where <>value attribute EStringToStringMapEntry(source,target)
55408 */
55409private pattern mayInRelationvalue_attribute_EStringToStringMapEntry(
55410 problem:LogicProblem, interpretation:PartialInterpretation,
55411 source: DefinedElement, target:DefinedElement)
55412{
55413 find interpretation(problem,interpretation);
55414 // The two endpoint of the link have to exist
55415 find mayExist(problem, interpretation, source);
55416 find mayExist(problem, interpretation, target);
55417 // Type consistency
55418 find mayInstanceOfEStringToStringMapEntry_class(problem,interpretation,source);
55419 StringElement(target);
55420 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
55421 // the upper bound of the multiplicity should be considered.
55422 numberOfExistingReferences == count find mustInRelationvalue_attribute_EStringToStringMapEntry(problem,interpretation,source,_);
55423 check(numberOfExistingReferences < 1);
55424} or {
55425 find mustInRelationvalue_attribute_EStringToStringMapEntry(problem,interpretation,source,target);
55426}
55427
55428//////////
55429// 1.3 Relation Definition Indexers
55430//////////
55431
55432//////////
55433// 1.4 Containment Indexer
55434//////////
55435private pattern mustContains2(source: DefinedElement, target: DefinedElement) {
55436 find mustContains4(_,_,source,target);
55437}
55438
55439private pattern mustContains4(problem:LogicProblem, interpretation:PartialInterpretation,
55440 source: DefinedElement, target: DefinedElement)
55441 { find mustInRelationdetails_reference_EAnnotation(problem,interpretation,source,target); }or
55442
55443 { find mustInRelationcontents_reference_EAnnotation(problem,interpretation,source,target); }or
55444
55445 { find mustInRelationeOperations_reference_EClass(problem,interpretation,source,target); }or
55446
55447 { find mustInRelationeStructuralFeatures_reference_EClass(problem,interpretation,source,target); }or
55448
55449 { find mustInRelationeGenericSuperTypes_reference_EClass(problem,interpretation,source,target); }or
55450
55451 { find mustInRelationeTypeParameters_reference_EClassifier(problem,interpretation,source,target); }or
55452
55453 { find mustInRelationeLiterals_reference_EEnum(problem,interpretation,source,target); }or
55454
55455 { find mustInRelationeAnnotations_reference_EModelElement(problem,interpretation,source,target); }or
55456
55457 { find mustInRelationeTypeParameters_reference_EOperation(problem,interpretation,source,target); }or
55458
55459 { find mustInRelationeParameters_reference_EOperation(problem,interpretation,source,target); }or
55460
55461 { find mustInRelationeGenericExceptions_reference_EOperation(problem,interpretation,source,target); }or
55462
55463 { find mustInRelationeClassifiers_reference_EPackage(problem,interpretation,source,target); }or
55464
55465 { find mustInRelationeSubpackages_reference_EPackage(problem,interpretation,source,target); }or
55466
55467 { find mustInRelationeGenericType_reference_ETypedElement(problem,interpretation,source,target); }or
55468
55469 { find mustInRelationeUpperBound_reference_EGenericType(problem,interpretation,source,target); }or
55470
55471 { find mustInRelationeTypeArguments_reference_EGenericType(problem,interpretation,source,target); }or
55472
55473 { find mustInRelationeLowerBound_reference_EGenericType(problem,interpretation,source,target); }or
55474
55475 { find mustInRelationeBounds_reference_ETypeParameter(problem,interpretation,source,target); }
55476
55477private pattern mustTransitiveContains(source,target) {
55478 find mustContains2+(source,target);
55479}
55480
55481//////////
55482// 2. Invalidation Indexers
55483//////////
55484// 2.1 Invalidated by WF Queries
55485//////////
55486
55487//////////
55488// 3. Unfinishedness Indexers
55489//////////
55490// 3.1 Unfinishedness Measured by Multiplicity
55491//////////
55492pattern unfinishedLowerMultiplicity_eAttributeType_reference_EAttribute(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) {
55493 find interpretation(problem,interpretation);
55494 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
55495 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAttributeType reference EAttribute");
55496 find mustInstanceOfEAttribute_class(problem,interpretation,object);
55497 numberOfExistingReferences == count find mustInRelationeAttributeType_reference_EAttribute(problem,interpretation,object,_);
55498 check(numberOfExistingReferences < 1);
55499 missingMultiplicity == eval(1-numberOfExistingReferences);
55500}
55501pattern unfinishedLowerMultiplicity_eReferenceType_reference_EReference(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) {
55502 find interpretation(problem,interpretation);
55503 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
55504 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eReferenceType reference EReference");
55505 find mustInstanceOfEReference_class(problem,interpretation,object);
55506 numberOfExistingReferences == count find mustInRelationeReferenceType_reference_EReference(problem,interpretation,object,_);
55507 check(numberOfExistingReferences < 1);
55508 missingMultiplicity == eval(1-numberOfExistingReferences);
55509}
55510pattern unfinishedLowerMultiplicity_eRawType_reference_EGenericType(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) {
55511 find interpretation(problem,interpretation);
55512 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
55513 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eRawType reference EGenericType");
55514 find mustInstanceOfEGenericType_class(problem,interpretation,object);
55515 numberOfExistingReferences == count find mustInRelationeRawType_reference_EGenericType(problem,interpretation,object,_);
55516 check(numberOfExistingReferences < 1);
55517 missingMultiplicity == eval(1-numberOfExistingReferences);
55518}
55519
55520//////////
55521// 3.2 Unfinishedness Measured by WF Queries
55522//////////
55523
55524//////////
55525// 4. Refinement Indexers
55526//////////
55527// 4.1 Object constructors
55528//////////
55529private pattern hasElementInContainment(problem:LogicProblem, interpretation:PartialInterpretation)
55530{
55531 find interpretation(problem,interpretation);
55532 find mustInstanceOfEOperation_class(problem,interpretation,root);
55533 find mustExist(problem, interpretation, root);
55534}or{
55535 find interpretation(problem,interpretation);
55536 find mustInstanceOfENamedElement_class(problem,interpretation,root);
55537 find mustExist(problem, interpretation, root);
55538}or{
55539 find interpretation(problem,interpretation);
55540 find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,root);
55541 find mustExist(problem, interpretation, root);
55542}or{
55543 find interpretation(problem,interpretation);
55544 find mustInstanceOfEEnumLiteral_class(problem,interpretation,root);
55545 find mustExist(problem, interpretation, root);
55546}or{
55547 find interpretation(problem,interpretation);
55548 find mustInstanceOfEGenericType_class(problem,interpretation,root);
55549 find mustExist(problem, interpretation, root);
55550}or{
55551 find interpretation(problem,interpretation);
55552 find mustInstanceOfEObject_class(problem,interpretation,root);
55553 find mustExist(problem, interpretation, root);
55554}or{
55555 find interpretation(problem,interpretation);
55556 find mustInstanceOfEAttribute_class(problem,interpretation,root);
55557 find mustExist(problem, interpretation, root);
55558}or{
55559 find interpretation(problem,interpretation);
55560 find mustInstanceOfEPackage_class(problem,interpretation,root);
55561 find mustExist(problem, interpretation, root);
55562}or{
55563 find interpretation(problem,interpretation);
55564 find mustInstanceOfEParameter_class(problem,interpretation,root);
55565 find mustExist(problem, interpretation, root);
55566}or{
55567 find interpretation(problem,interpretation);
55568 find mustInstanceOfEDataType_class(problem,interpretation,root);
55569 find mustExist(problem, interpretation, root);
55570}or{
55571 find interpretation(problem,interpretation);
55572 find mustInstanceOfEClassifier_class(problem,interpretation,root);
55573 find mustExist(problem, interpretation, root);
55574}or{
55575 find interpretation(problem,interpretation);
55576 find mustInstanceOfEStructuralFeature_class(problem,interpretation,root);
55577 find mustExist(problem, interpretation, root);
55578}or{
55579 find interpretation(problem,interpretation);
55580 find mustInstanceOfEModelElement_class(problem,interpretation,root);
55581 find mustExist(problem, interpretation, root);
55582}or{
55583 find interpretation(problem,interpretation);
55584 find mustInstanceOfEAnnotation_class(problem,interpretation,root);
55585 find mustExist(problem, interpretation, root);
55586}or{
55587 find interpretation(problem,interpretation);
55588 find mustInstanceOfETypeParameter_class(problem,interpretation,root);
55589 find mustExist(problem, interpretation, root);
55590}or{
55591 find interpretation(problem,interpretation);
55592 find mustInstanceOfEReference_class(problem,interpretation,root);
55593 find mustExist(problem, interpretation, root);
55594}or{
55595 find interpretation(problem,interpretation);
55596 find mustInstanceOfEEnum_class(problem,interpretation,root);
55597 find mustExist(problem, interpretation, root);
55598}or{
55599 find interpretation(problem,interpretation);
55600 find mustInstanceOfETypedElement_class(problem,interpretation,root);
55601 find mustExist(problem, interpretation, root);
55602}or{
55603 find interpretation(problem,interpretation);
55604 find mustInstanceOfEClass_class(problem,interpretation,root);
55605 find mustExist(problem, interpretation, root);
55606}or{
55607 find interpretation(problem,interpretation);
55608 find mustInstanceOfEModelElement_class_DefinedPart(problem,interpretation,root);
55609 find mustExist(problem, interpretation, root);
55610}or{
55611 find interpretation(problem,interpretation);
55612 find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,root);
55613 find mustExist(problem, interpretation, root);
55614}or{
55615 find interpretation(problem,interpretation);
55616 find mustInstanceOfENamedElement_class_DefinedPart(problem,interpretation,root);
55617 find mustExist(problem, interpretation, root);
55618}or{
55619 find interpretation(problem,interpretation);
55620 find mustInstanceOfENamedElement_class_UndefinedPart(problem,interpretation,root);
55621 find mustExist(problem, interpretation, root);
55622}or{
55623 find interpretation(problem,interpretation);
55624 find mustInstanceOfEPackage_class_DefinedPart(problem,interpretation,root);
55625 find mustExist(problem, interpretation, root);
55626}or{
55627 find interpretation(problem,interpretation);
55628 find mustInstanceOfEPackage_class_UndefinedPart(problem,interpretation,root);
55629 find mustExist(problem, interpretation, root);
55630}
55631pattern createObject_EAnnotation_class_by_eAnnotations_reference_EModelElement_with_eModelElement_reference_EAnnotation(
55632 problem:LogicProblem, interpretation:PartialInterpretation,
55633 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
55634 container:DefinedElement)
55635{
55636 find interpretation(problem,interpretation);
55637 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
55638 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EAnnotation class");
55639 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
55640 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eAnnotations reference EModelElement");
55641 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
55642 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"eModelElement reference EAnnotation");
55643 find mustInstanceOfEModelElement_class(problem,interpretation,container);
55644 find mayInstanceOfEAnnotation_class(problem,interpretation,newObject);
55645 find mayInRelationeAnnotations_reference_EModelElement(problem,interpretation,container,newObject);
55646 find mustExist(problem, interpretation, container);
55647 neg find mustExist(problem, interpretation, newObject);
55648}
55649pattern createObject_EAnnotation_class(
55650 problem:LogicProblem, interpretation:PartialInterpretation,
55651 typeInterpretation:PartialComplexTypeInterpretation)
55652{
55653 find interpretation(problem,interpretation);
55654 neg find hasElementInContainment(problem,interpretation);
55655 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
55656 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EAnnotation class");
55657 find mayInstanceOfEAnnotation_class(problem,interpretation,newObject);
55658 find mayExist(problem, interpretation, newObject);
55659 neg find mustExist(problem, interpretation, newObject);
55660}
55661pattern createObject_EEnum_class_by_eClassifiers_reference_EPackage_with_ePackage_reference_EClassifier(
55662 problem:LogicProblem, interpretation:PartialInterpretation,
55663 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
55664 container:DefinedElement)
55665{
55666 find interpretation(problem,interpretation);
55667 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
55668 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EEnum class");
55669 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
55670 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eClassifiers reference EPackage");
55671 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
55672 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"ePackage reference EClassifier");
55673 find mustInstanceOfEPackage_class(problem,interpretation,container);
55674 find mayInstanceOfEEnum_class(problem,interpretation,newObject);
55675 find mayInRelationeClassifiers_reference_EPackage(problem,interpretation,container,newObject);
55676 find mustExist(problem, interpretation, container);
55677 neg find mustExist(problem, interpretation, newObject);
55678}
55679pattern createObject_EEnum_class(
55680 problem:LogicProblem, interpretation:PartialInterpretation,
55681 typeInterpretation:PartialComplexTypeInterpretation)
55682{
55683 find interpretation(problem,interpretation);
55684 neg find hasElementInContainment(problem,interpretation);
55685 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
55686 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EEnum class");
55687 find mayInstanceOfEEnum_class(problem,interpretation,newObject);
55688 find mayExist(problem, interpretation, newObject);
55689 neg find mustExist(problem, interpretation, newObject);
55690}
55691pattern createObject_EParameter_class_by_eParameters_reference_EOperation_with_eOperation_reference_EParameter(
55692 problem:LogicProblem, interpretation:PartialInterpretation,
55693 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
55694 container:DefinedElement)
55695{
55696 find interpretation(problem,interpretation);
55697 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
55698 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EParameter class");
55699 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
55700 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eParameters reference EOperation");
55701 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
55702 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"eOperation reference EParameter");
55703 find mustInstanceOfEOperation_class(problem,interpretation,container);
55704 find mayInstanceOfEParameter_class(problem,interpretation,newObject);
55705 find mayInRelationeParameters_reference_EOperation(problem,interpretation,container,newObject);
55706 find mustExist(problem, interpretation, container);
55707 neg find mustExist(problem, interpretation, newObject);
55708}
55709pattern createObject_EParameter_class(
55710 problem:LogicProblem, interpretation:PartialInterpretation,
55711 typeInterpretation:PartialComplexTypeInterpretation)
55712{
55713 find interpretation(problem,interpretation);
55714 neg find hasElementInContainment(problem,interpretation);
55715 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
55716 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EParameter class");
55717 find mayInstanceOfEParameter_class(problem,interpretation,newObject);
55718 find mayExist(problem, interpretation, newObject);
55719 neg find mustExist(problem, interpretation, newObject);
55720}
55721pattern createObject_EPackage_class_UndefinedPart_by_eSubpackages_reference_EPackage_with_eSuperPackage_reference_EPackage(
55722 problem:LogicProblem, interpretation:PartialInterpretation,
55723 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
55724 container:DefinedElement)
55725{
55726 find interpretation(problem,interpretation);
55727 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
55728 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EPackage class UndefinedPart");
55729 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
55730 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eSubpackages reference EPackage");
55731 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
55732 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"eSuperPackage reference EPackage");
55733 find mustInstanceOfEPackage_class(problem,interpretation,container);
55734 find mayInstanceOfEPackage_class_UndefinedPart(problem,interpretation,newObject);
55735 find mayInRelationeSubpackages_reference_EPackage(problem,interpretation,container,newObject);
55736 find mustExist(problem, interpretation, container);
55737 neg find mustExist(problem, interpretation, newObject);
55738}
55739pattern createObject_EPackage_class_UndefinedPart(
55740 problem:LogicProblem, interpretation:PartialInterpretation,
55741 typeInterpretation:PartialComplexTypeInterpretation)
55742{
55743 find interpretation(problem,interpretation);
55744 neg find hasElementInContainment(problem,interpretation);
55745 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
55746 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EPackage class UndefinedPart");
55747 find mayInstanceOfEPackage_class_UndefinedPart(problem,interpretation,newObject);
55748 find mayExist(problem, interpretation, newObject);
55749 neg find mustExist(problem, interpretation, newObject);
55750}
55751pattern createObject_EClass_class_by_eClassifiers_reference_EPackage_with_ePackage_reference_EClassifier(
55752 problem:LogicProblem, interpretation:PartialInterpretation,
55753 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
55754 container:DefinedElement)
55755{
55756 find interpretation(problem,interpretation);
55757 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
55758 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EClass class");
55759 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
55760 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eClassifiers reference EPackage");
55761 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
55762 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"ePackage reference EClassifier");
55763 find mustInstanceOfEPackage_class(problem,interpretation,container);
55764 find mayInstanceOfEClass_class(problem,interpretation,newObject);
55765 find mayInRelationeClassifiers_reference_EPackage(problem,interpretation,container,newObject);
55766 find mustExist(problem, interpretation, container);
55767 neg find mustExist(problem, interpretation, newObject);
55768}
55769pattern createObject_EClass_class(
55770 problem:LogicProblem, interpretation:PartialInterpretation,
55771 typeInterpretation:PartialComplexTypeInterpretation)
55772{
55773 find interpretation(problem,interpretation);
55774 neg find hasElementInContainment(problem,interpretation);
55775 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
55776 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EClass class");
55777 find mayInstanceOfEClass_class(problem,interpretation,newObject);
55778 find mayExist(problem, interpretation, newObject);
55779 neg find mustExist(problem, interpretation, newObject);
55780}
55781pattern createObject_EOperation_class_by_eOperations_reference_EClass_with_eContainingClass_reference_EOperation(
55782 problem:LogicProblem, interpretation:PartialInterpretation,
55783 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
55784 container:DefinedElement)
55785{
55786 find interpretation(problem,interpretation);
55787 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
55788 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EOperation class");
55789 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
55790 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eOperations reference EClass");
55791 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
55792 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"eContainingClass reference EOperation");
55793 find mustInstanceOfEClass_class(problem,interpretation,container);
55794 find mayInstanceOfEOperation_class(problem,interpretation,newObject);
55795 find mayInRelationeOperations_reference_EClass(problem,interpretation,container,newObject);
55796 find mustExist(problem, interpretation, container);
55797 neg find mustExist(problem, interpretation, newObject);
55798}
55799pattern createObject_EOperation_class(
55800 problem:LogicProblem, interpretation:PartialInterpretation,
55801 typeInterpretation:PartialComplexTypeInterpretation)
55802{
55803 find interpretation(problem,interpretation);
55804 neg find hasElementInContainment(problem,interpretation);
55805 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
55806 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EOperation class");
55807 find mayInstanceOfEOperation_class(problem,interpretation,newObject);
55808 find mayExist(problem, interpretation, newObject);
55809 neg find mustExist(problem, interpretation, newObject);
55810}
55811pattern createObject_EReference_class_by_eStructuralFeatures_reference_EClass_with_eContainingClass_reference_EStructuralFeature(
55812 problem:LogicProblem, interpretation:PartialInterpretation,
55813 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
55814 container:DefinedElement)
55815{
55816 find interpretation(problem,interpretation);
55817 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
55818 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EReference class");
55819 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
55820 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eStructuralFeatures reference EClass");
55821 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
55822 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"eContainingClass reference EStructuralFeature");
55823 find mustInstanceOfEClass_class(problem,interpretation,container);
55824 find mayInstanceOfEReference_class(problem,interpretation,newObject);
55825 find mayInRelationeStructuralFeatures_reference_EClass(problem,interpretation,container,newObject);
55826 find mustExist(problem, interpretation, container);
55827 neg find mustExist(problem, interpretation, newObject);
55828}
55829pattern createObject_EReference_class(
55830 problem:LogicProblem, interpretation:PartialInterpretation,
55831 typeInterpretation:PartialComplexTypeInterpretation)
55832{
55833 find interpretation(problem,interpretation);
55834 neg find hasElementInContainment(problem,interpretation);
55835 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
55836 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EReference class");
55837 find mayInstanceOfEReference_class(problem,interpretation,newObject);
55838 find mayExist(problem, interpretation, newObject);
55839 neg find mustExist(problem, interpretation, newObject);
55840}
55841pattern createObject_EObject_class_by_contents_reference_EAnnotation(
55842 problem:LogicProblem, interpretation:PartialInterpretation,
55843 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
55844 container:DefinedElement)
55845{
55846 find interpretation(problem,interpretation);
55847 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
55848 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EObject class");
55849 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
55850 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"contents reference EAnnotation");
55851 find mustInstanceOfEAnnotation_class(problem,interpretation,container);
55852 find mayInstanceOfEObject_class(problem,interpretation,newObject);
55853 find mayInRelationcontents_reference_EAnnotation(problem,interpretation,container,newObject);
55854 find mustExist(problem, interpretation, container);
55855 neg find mustExist(problem, interpretation, newObject);
55856}
55857pattern createObject_EObject_class(
55858 problem:LogicProblem, interpretation:PartialInterpretation,
55859 typeInterpretation:PartialComplexTypeInterpretation)
55860{
55861 find interpretation(problem,interpretation);
55862 neg find hasElementInContainment(problem,interpretation);
55863 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
55864 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EObject class");
55865 find mayInstanceOfEObject_class(problem,interpretation,newObject);
55866 find mayExist(problem, interpretation, newObject);
55867 neg find mustExist(problem, interpretation, newObject);
55868}
55869pattern createObject_EEnumLiteral_class_by_eLiterals_reference_EEnum_with_eEnum_reference_EEnumLiteral(
55870 problem:LogicProblem, interpretation:PartialInterpretation,
55871 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
55872 container:DefinedElement)
55873{
55874 find interpretation(problem,interpretation);
55875 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
55876 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EEnumLiteral class");
55877 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
55878 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eLiterals reference EEnum");
55879 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
55880 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"eEnum reference EEnumLiteral");
55881 find mustInstanceOfEEnum_class(problem,interpretation,container);
55882 find mayInstanceOfEEnumLiteral_class(problem,interpretation,newObject);
55883 find mayInRelationeLiterals_reference_EEnum(problem,interpretation,container,newObject);
55884 find mustExist(problem, interpretation, container);
55885 neg find mustExist(problem, interpretation, newObject);
55886}
55887pattern createObject_EEnumLiteral_class(
55888 problem:LogicProblem, interpretation:PartialInterpretation,
55889 typeInterpretation:PartialComplexTypeInterpretation)
55890{
55891 find interpretation(problem,interpretation);
55892 neg find hasElementInContainment(problem,interpretation);
55893 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
55894 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EEnumLiteral class");
55895 find mayInstanceOfEEnumLiteral_class(problem,interpretation,newObject);
55896 find mayExist(problem, interpretation, newObject);
55897 neg find mustExist(problem, interpretation, newObject);
55898}
55899pattern createObject_EAttribute_class_by_eStructuralFeatures_reference_EClass_with_eContainingClass_reference_EStructuralFeature(
55900 problem:LogicProblem, interpretation:PartialInterpretation,
55901 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
55902 container:DefinedElement)
55903{
55904 find interpretation(problem,interpretation);
55905 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
55906 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EAttribute class");
55907 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
55908 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eStructuralFeatures reference EClass");
55909 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
55910 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"eContainingClass reference EStructuralFeature");
55911 find mustInstanceOfEClass_class(problem,interpretation,container);
55912 find mayInstanceOfEAttribute_class(problem,interpretation,newObject);
55913 find mayInRelationeStructuralFeatures_reference_EClass(problem,interpretation,container,newObject);
55914 find mustExist(problem, interpretation, container);
55915 neg find mustExist(problem, interpretation, newObject);
55916}
55917pattern createObject_EAttribute_class(
55918 problem:LogicProblem, interpretation:PartialInterpretation,
55919 typeInterpretation:PartialComplexTypeInterpretation)
55920{
55921 find interpretation(problem,interpretation);
55922 neg find hasElementInContainment(problem,interpretation);
55923 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
55924 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EAttribute class");
55925 find mayInstanceOfEAttribute_class(problem,interpretation,newObject);
55926 find mayExist(problem, interpretation, newObject);
55927 neg find mustExist(problem, interpretation, newObject);
55928}
55929pattern createObject_EDataType_class_by_eClassifiers_reference_EPackage_with_ePackage_reference_EClassifier(
55930 problem:LogicProblem, interpretation:PartialInterpretation,
55931 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
55932 container:DefinedElement)
55933{
55934 find interpretation(problem,interpretation);
55935 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
55936 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EDataType class");
55937 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
55938 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eClassifiers reference EPackage");
55939 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
55940 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"ePackage reference EClassifier");
55941 find mustInstanceOfEPackage_class(problem,interpretation,container);
55942 find mayInstanceOfEDataType_class(problem,interpretation,newObject);
55943 find mayInRelationeClassifiers_reference_EPackage(problem,interpretation,container,newObject);
55944 find mustExist(problem, interpretation, container);
55945 neg find mustExist(problem, interpretation, newObject);
55946}
55947pattern createObject_EDataType_class(
55948 problem:LogicProblem, interpretation:PartialInterpretation,
55949 typeInterpretation:PartialComplexTypeInterpretation)
55950{
55951 find interpretation(problem,interpretation);
55952 neg find hasElementInContainment(problem,interpretation);
55953 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
55954 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EDataType class");
55955 find mayInstanceOfEDataType_class(problem,interpretation,newObject);
55956 find mayExist(problem, interpretation, newObject);
55957 neg find mustExist(problem, interpretation, newObject);
55958}
55959pattern createObject_EGenericType_class_by_eGenericSuperTypes_reference_EClass(
55960 problem:LogicProblem, interpretation:PartialInterpretation,
55961 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
55962 container:DefinedElement)
55963{
55964 find interpretation(problem,interpretation);
55965 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
55966 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class");
55967 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
55968 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eGenericSuperTypes reference EClass");
55969 find mustInstanceOfEClass_class(problem,interpretation,container);
55970 find mayInstanceOfEGenericType_class(problem,interpretation,newObject);
55971 find mayInRelationeGenericSuperTypes_reference_EClass(problem,interpretation,container,newObject);
55972 find mustExist(problem, interpretation, container);
55973 neg find mustExist(problem, interpretation, newObject);
55974}
55975pattern createObject_EGenericType_class_by_eGenericExceptions_reference_EOperation(
55976 problem:LogicProblem, interpretation:PartialInterpretation,
55977 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
55978 container:DefinedElement)
55979{
55980 find interpretation(problem,interpretation);
55981 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
55982 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class");
55983 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
55984 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eGenericExceptions reference EOperation");
55985 find mustInstanceOfEOperation_class(problem,interpretation,container);
55986 find mayInstanceOfEGenericType_class(problem,interpretation,newObject);
55987 find mayInRelationeGenericExceptions_reference_EOperation(problem,interpretation,container,newObject);
55988 find mustExist(problem, interpretation, container);
55989 neg find mustExist(problem, interpretation, newObject);
55990}
55991pattern createObject_EGenericType_class_by_eGenericType_reference_ETypedElement(
55992 problem:LogicProblem, interpretation:PartialInterpretation,
55993 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
55994 container:DefinedElement)
55995{
55996 find interpretation(problem,interpretation);
55997 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
55998 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class");
55999 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
56000 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eGenericType reference ETypedElement");
56001 find mustInstanceOfETypedElement_class(problem,interpretation,container);
56002 find mayInstanceOfEGenericType_class(problem,interpretation,newObject);
56003 find mayInRelationeGenericType_reference_ETypedElement(problem,interpretation,container,newObject);
56004 find mustExist(problem, interpretation, container);
56005 neg find mustExist(problem, interpretation, newObject);
56006}
56007pattern createObject_EGenericType_class_by_eUpperBound_reference_EGenericType(
56008 problem:LogicProblem, interpretation:PartialInterpretation,
56009 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
56010 container:DefinedElement)
56011{
56012 find interpretation(problem,interpretation);
56013 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
56014 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class");
56015 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
56016 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eUpperBound reference EGenericType");
56017 find mustInstanceOfEGenericType_class(problem,interpretation,container);
56018 find mayInstanceOfEGenericType_class(problem,interpretation,newObject);
56019 find mayInRelationeUpperBound_reference_EGenericType(problem,interpretation,container,newObject);
56020 find mustExist(problem, interpretation, container);
56021 neg find mustExist(problem, interpretation, newObject);
56022}
56023pattern createObject_EGenericType_class_by_eTypeArguments_reference_EGenericType(
56024 problem:LogicProblem, interpretation:PartialInterpretation,
56025 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
56026 container:DefinedElement)
56027{
56028 find interpretation(problem,interpretation);
56029 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
56030 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class");
56031 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
56032 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eTypeArguments reference EGenericType");
56033 find mustInstanceOfEGenericType_class(problem,interpretation,container);
56034 find mayInstanceOfEGenericType_class(problem,interpretation,newObject);
56035 find mayInRelationeTypeArguments_reference_EGenericType(problem,interpretation,container,newObject);
56036 find mustExist(problem, interpretation, container);
56037 neg find mustExist(problem, interpretation, newObject);
56038}
56039pattern createObject_EGenericType_class_by_eLowerBound_reference_EGenericType(
56040 problem:LogicProblem, interpretation:PartialInterpretation,
56041 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
56042 container:DefinedElement)
56043{
56044 find interpretation(problem,interpretation);
56045 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
56046 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class");
56047 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
56048 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eLowerBound reference EGenericType");
56049 find mustInstanceOfEGenericType_class(problem,interpretation,container);
56050 find mayInstanceOfEGenericType_class(problem,interpretation,newObject);
56051 find mayInRelationeLowerBound_reference_EGenericType(problem,interpretation,container,newObject);
56052 find mustExist(problem, interpretation, container);
56053 neg find mustExist(problem, interpretation, newObject);
56054}
56055pattern createObject_EGenericType_class_by_eBounds_reference_ETypeParameter(
56056 problem:LogicProblem, interpretation:PartialInterpretation,
56057 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
56058 container:DefinedElement)
56059{
56060 find interpretation(problem,interpretation);
56061 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
56062 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class");
56063 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
56064 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eBounds reference ETypeParameter");
56065 find mustInstanceOfETypeParameter_class(problem,interpretation,container);
56066 find mayInstanceOfEGenericType_class(problem,interpretation,newObject);
56067 find mayInRelationeBounds_reference_ETypeParameter(problem,interpretation,container,newObject);
56068 find mustExist(problem, interpretation, container);
56069 neg find mustExist(problem, interpretation, newObject);
56070}
56071pattern createObject_EGenericType_class(
56072 problem:LogicProblem, interpretation:PartialInterpretation,
56073 typeInterpretation:PartialComplexTypeInterpretation)
56074{
56075 find interpretation(problem,interpretation);
56076 neg find hasElementInContainment(problem,interpretation);
56077 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
56078 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class");
56079 find mayInstanceOfEGenericType_class(problem,interpretation,newObject);
56080 find mayExist(problem, interpretation, newObject);
56081 neg find mustExist(problem, interpretation, newObject);
56082}
56083pattern createObject_EStringToStringMapEntry_class_by_details_reference_EAnnotation(
56084 problem:LogicProblem, interpretation:PartialInterpretation,
56085 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
56086 container:DefinedElement)
56087{
56088 find interpretation(problem,interpretation);
56089 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
56090 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EStringToStringMapEntry class");
56091 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
56092 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"details reference EAnnotation");
56093 find mustInstanceOfEAnnotation_class(problem,interpretation,container);
56094 find mayInstanceOfEStringToStringMapEntry_class(problem,interpretation,newObject);
56095 find mayInRelationdetails_reference_EAnnotation(problem,interpretation,container,newObject);
56096 find mustExist(problem, interpretation, container);
56097 neg find mustExist(problem, interpretation, newObject);
56098}
56099pattern createObject_EStringToStringMapEntry_class(
56100 problem:LogicProblem, interpretation:PartialInterpretation,
56101 typeInterpretation:PartialComplexTypeInterpretation)
56102{
56103 find interpretation(problem,interpretation);
56104 neg find hasElementInContainment(problem,interpretation);
56105 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
56106 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EStringToStringMapEntry class");
56107 find mayInstanceOfEStringToStringMapEntry_class(problem,interpretation,newObject);
56108 find mayExist(problem, interpretation, newObject);
56109 neg find mustExist(problem, interpretation, newObject);
56110}
56111pattern createObject_ETypeParameter_class_by_eTypeParameters_reference_EClassifier(
56112 problem:LogicProblem, interpretation:PartialInterpretation,
56113 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
56114 container:DefinedElement)
56115{
56116 find interpretation(problem,interpretation);
56117 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
56118 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"ETypeParameter class");
56119 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
56120 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eTypeParameters reference EClassifier");
56121 find mustInstanceOfEClassifier_class(problem,interpretation,container);
56122 find mayInstanceOfETypeParameter_class(problem,interpretation,newObject);
56123 find mayInRelationeTypeParameters_reference_EClassifier(problem,interpretation,container,newObject);
56124 find mustExist(problem, interpretation, container);
56125 neg find mustExist(problem, interpretation, newObject);
56126}
56127pattern createObject_ETypeParameter_class_by_eTypeParameters_reference_EOperation(
56128 problem:LogicProblem, interpretation:PartialInterpretation,
56129 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
56130 container:DefinedElement)
56131{
56132 find interpretation(problem,interpretation);
56133 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
56134 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"ETypeParameter class");
56135 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
56136 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eTypeParameters reference EOperation");
56137 find mustInstanceOfEOperation_class(problem,interpretation,container);
56138 find mayInstanceOfETypeParameter_class(problem,interpretation,newObject);
56139 find mayInRelationeTypeParameters_reference_EOperation(problem,interpretation,container,newObject);
56140 find mustExist(problem, interpretation, container);
56141 neg find mustExist(problem, interpretation, newObject);
56142}
56143pattern createObject_ETypeParameter_class(
56144 problem:LogicProblem, interpretation:PartialInterpretation,
56145 typeInterpretation:PartialComplexTypeInterpretation)
56146{
56147 find interpretation(problem,interpretation);
56148 neg find hasElementInContainment(problem,interpretation);
56149 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
56150 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"ETypeParameter class");
56151 find mayInstanceOfETypeParameter_class(problem,interpretation,newObject);
56152 find mayExist(problem, interpretation, newObject);
56153 neg find mustExist(problem, interpretation, newObject);
56154}
56155
56156//////////
56157// 4.2 Type refinement
56158//////////
56159pattern refineTypeTo_EAnnotation_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
56160 find interpretation(problem,interpretation);
56161 PartialInterpretation.newElements(interpretation,element);
56162 find mayInstanceOfEAnnotation_class(problem,interpretation,element);
56163 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
56164 neg find mustInstanceOfENamedElement_class(problem,interpretation,element);
56165 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
56166 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
56167 neg find mustInstanceOfEObject_class(problem,interpretation,element);
56168}
56169pattern refineTypeTo_EEnum_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
56170 find interpretation(problem,interpretation);
56171 PartialInterpretation.newElements(interpretation,element);
56172 find mayInstanceOfEEnum_class(problem,interpretation,element);
56173 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
56174 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
56175 neg find mustInstanceOfEEnum_class(problem,interpretation,element);
56176 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
56177 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
56178 neg find mustInstanceOfEClass_class(problem,interpretation,element);
56179 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
56180 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
56181 neg find mustInstanceOfEObject_class(problem,interpretation,element);
56182 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
56183}
56184pattern refineTypeTo_EParameter_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
56185 find interpretation(problem,interpretation);
56186 PartialInterpretation.newElements(interpretation,element);
56187 find mayInstanceOfEParameter_class(problem,interpretation,element);
56188 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
56189 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
56190 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
56191 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
56192 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
56193 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
56194 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
56195 neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element);
56196 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
56197 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
56198 neg find mustInstanceOfEObject_class(problem,interpretation,element);
56199}
56200pattern refineTypeTo_EPackage_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
56201 find interpretation(problem,interpretation);
56202 PartialInterpretation.newElements(interpretation,element);
56203 find mayInstanceOfEPackage_class_UndefinedPart(problem,interpretation,element);
56204 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
56205 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
56206 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
56207 neg find mustInstanceOfEPackage_class_UndefinedPart(problem,interpretation,element);
56208 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
56209 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
56210 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
56211 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
56212 neg find mustInstanceOfEObject_class(problem,interpretation,element);
56213}
56214pattern refineTypeTo_EClass_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
56215 find interpretation(problem,interpretation);
56216 PartialInterpretation.newElements(interpretation,element);
56217 find mayInstanceOfEClass_class(problem,interpretation,element);
56218 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
56219 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
56220 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
56221 neg find mustInstanceOfEDataType_class(problem,interpretation,element);
56222 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
56223 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
56224 neg find mustInstanceOfEClass_class(problem,interpretation,element);
56225 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
56226 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
56227 neg find mustInstanceOfEObject_class(problem,interpretation,element);
56228}
56229pattern refineTypeTo_EOperation_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
56230 find interpretation(problem,interpretation);
56231 PartialInterpretation.newElements(interpretation,element);
56232 find mayInstanceOfEOperation_class(problem,interpretation,element);
56233 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
56234 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
56235 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
56236 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
56237 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
56238 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
56239 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
56240 neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element);
56241 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
56242 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
56243 neg find mustInstanceOfEObject_class(problem,interpretation,element);
56244}
56245pattern refineTypeTo_EReference_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
56246 find interpretation(problem,interpretation);
56247 PartialInterpretation.newElements(interpretation,element);
56248 find mayInstanceOfEReference_class(problem,interpretation,element);
56249 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
56250 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
56251 neg find mustInstanceOfEAttribute_class(problem,interpretation,element);
56252 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
56253 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
56254 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
56255 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
56256 neg find mustInstanceOfEReference_class(problem,interpretation,element);
56257 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
56258 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
56259 neg find mustInstanceOfEObject_class(problem,interpretation,element);
56260 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
56261}
56262pattern refineTypeTo_EObject_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
56263 find interpretation(problem,interpretation);
56264 PartialInterpretation.newElements(interpretation,element);
56265 find mayInstanceOfEObject_class(problem,interpretation,element);
56266 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
56267 neg find mustInstanceOfEModelElement_class(problem,interpretation,element);
56268 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
56269 neg find mustInstanceOfEObject_class(problem,interpretation,element);
56270}
56271pattern refineTypeTo_EEnumLiteral_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
56272 find interpretation(problem,interpretation);
56273 PartialInterpretation.newElements(interpretation,element);
56274 find mayInstanceOfEEnumLiteral_class(problem,interpretation,element);
56275 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
56276 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
56277 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
56278 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
56279 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
56280 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
56281 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
56282 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
56283 neg find mustInstanceOfEObject_class(problem,interpretation,element);
56284}
56285pattern refineTypeTo_EAttribute_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
56286 find interpretation(problem,interpretation);
56287 PartialInterpretation.newElements(interpretation,element);
56288 find mayInstanceOfEAttribute_class(problem,interpretation,element);
56289 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
56290 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
56291 neg find mustInstanceOfEAttribute_class(problem,interpretation,element);
56292 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
56293 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
56294 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
56295 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
56296 neg find mustInstanceOfEReference_class(problem,interpretation,element);
56297 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
56298 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
56299 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
56300 neg find mustInstanceOfEObject_class(problem,interpretation,element);
56301}
56302pattern refineTypeTo_EDataType_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
56303 find interpretation(problem,interpretation);
56304 PartialInterpretation.newElements(interpretation,element);
56305 find mayInstanceOfEDataType_class(problem,interpretation,element);
56306 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
56307 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
56308 neg find mustInstanceOfEDataType_class(problem,interpretation,element);
56309 neg find mustInstanceOfEEnum_class(problem,interpretation,element);
56310 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
56311 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
56312 neg find mustInstanceOfEClass_class(problem,interpretation,element);
56313 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
56314 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
56315 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
56316 neg find mustInstanceOfEObject_class(problem,interpretation,element);
56317}
56318pattern refineTypeTo_EGenericType_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
56319 find interpretation(problem,interpretation);
56320 PartialInterpretation.newElements(interpretation,element);
56321 find mayInstanceOfEGenericType_class(problem,interpretation,element);
56322 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
56323 neg find mustInstanceOfEModelElement_class(problem,interpretation,element);
56324 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
56325 neg find mustInstanceOfEObject_class(problem,interpretation,element);
56326}
56327pattern refineTypeTo_EStringToStringMapEntry_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
56328 find interpretation(problem,interpretation);
56329 PartialInterpretation.newElements(interpretation,element);
56330 find mayInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
56331 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
56332 neg find mustInstanceOfEModelElement_class(problem,interpretation,element);
56333 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
56334 neg find mustInstanceOfEObject_class(problem,interpretation,element);
56335}
56336pattern refineTypeTo_ETypeParameter_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
56337 find interpretation(problem,interpretation);
56338 PartialInterpretation.newElements(interpretation,element);
56339 find mayInstanceOfETypeParameter_class(problem,interpretation,element);
56340 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
56341 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
56342 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
56343 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
56344 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
56345 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
56346 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
56347 neg find mustInstanceOfEObject_class(problem,interpretation,element);
56348 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
56349}
56350
56351//////////
56352// 4.3 Relation refinement
56353//////////
56354pattern refineRelation_eAttributeType_reference_EAttribute(
56355 problem:LogicProblem, interpretation:PartialInterpretation,
56356 relationIterpretation:PartialRelationInterpretation,
56357 from: DefinedElement, to: DefinedElement)
56358{
56359 find interpretation(problem,interpretation);
56360 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
56361 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAttributeType reference EAttribute");
56362 find mustExist(problem, interpretation, from);
56363 find mustExist(problem, interpretation, to);
56364 find mustInstanceOfEAttribute_class(problem,interpretation,from);
56365 find mustInstanceOfEDataType_class(problem,interpretation,to);
56366 find mayInRelationeAttributeType_reference_EAttribute(problem,interpretation,from,to);
56367 neg find mustInRelationeAttributeType_reference_EAttribute(problem,interpretation,from,to);
56368}
56369pattern refineRelation_references_reference_EAnnotation(
56370 problem:LogicProblem, interpretation:PartialInterpretation,
56371 relationIterpretation:PartialRelationInterpretation,
56372 from: DefinedElement, to: DefinedElement)
56373{
56374 find interpretation(problem,interpretation);
56375 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
56376 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"references reference EAnnotation");
56377 find mustExist(problem, interpretation, from);
56378 find mustExist(problem, interpretation, to);
56379 find mustInstanceOfEAnnotation_class(problem,interpretation,from);
56380 find mustInstanceOfEObject_class(problem,interpretation,to);
56381 find mayInRelationreferences_reference_EAnnotation(problem,interpretation,from,to);
56382 neg find mustInRelationreferences_reference_EAnnotation(problem,interpretation,from,to);
56383}
56384pattern refineRelation_eSuperTypes_reference_EClass(
56385 problem:LogicProblem, interpretation:PartialInterpretation,
56386 relationIterpretation:PartialRelationInterpretation,
56387 from: DefinedElement, to: DefinedElement)
56388{
56389 find interpretation(problem,interpretation);
56390 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
56391 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eSuperTypes reference EClass");
56392 find mustExist(problem, interpretation, from);
56393 find mustExist(problem, interpretation, to);
56394 find mustInstanceOfEClass_class(problem,interpretation,from);
56395 find mustInstanceOfEClass_class(problem,interpretation,to);
56396 find mayInRelationeSuperTypes_reference_EClass(problem,interpretation,from,to);
56397 neg find mustInRelationeSuperTypes_reference_EClass(problem,interpretation,from,to);
56398}
56399pattern refineRelation_eAllAttributes_reference_EClass(
56400 problem:LogicProblem, interpretation:PartialInterpretation,
56401 relationIterpretation:PartialRelationInterpretation,
56402 from: DefinedElement, to: DefinedElement)
56403{
56404 find interpretation(problem,interpretation);
56405 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
56406 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllAttributes reference EClass");
56407 find mustExist(problem, interpretation, from);
56408 find mustExist(problem, interpretation, to);
56409 find mustInstanceOfEClass_class(problem,interpretation,from);
56410 find mustInstanceOfEAttribute_class(problem,interpretation,to);
56411 find mayInRelationeAllAttributes_reference_EClass(problem,interpretation,from,to);
56412 neg find mustInRelationeAllAttributes_reference_EClass(problem,interpretation,from,to);
56413}
56414pattern refineRelation_eAllReferences_reference_EClass(
56415 problem:LogicProblem, interpretation:PartialInterpretation,
56416 relationIterpretation:PartialRelationInterpretation,
56417 from: DefinedElement, to: DefinedElement)
56418{
56419 find interpretation(problem,interpretation);
56420 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
56421 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllReferences reference EClass");
56422 find mustExist(problem, interpretation, from);
56423 find mustExist(problem, interpretation, to);
56424 find mustInstanceOfEClass_class(problem,interpretation,from);
56425 find mustInstanceOfEReference_class(problem,interpretation,to);
56426 find mayInRelationeAllReferences_reference_EClass(problem,interpretation,from,to);
56427 neg find mustInRelationeAllReferences_reference_EClass(problem,interpretation,from,to);
56428}
56429pattern refineRelation_eReferences_reference_EClass(
56430 problem:LogicProblem, interpretation:PartialInterpretation,
56431 relationIterpretation:PartialRelationInterpretation,
56432 from: DefinedElement, to: DefinedElement)
56433{
56434 find interpretation(problem,interpretation);
56435 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
56436 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eReferences reference EClass");
56437 find mustExist(problem, interpretation, from);
56438 find mustExist(problem, interpretation, to);
56439 find mustInstanceOfEClass_class(problem,interpretation,from);
56440 find mustInstanceOfEReference_class(problem,interpretation,to);
56441 find mayInRelationeReferences_reference_EClass(problem,interpretation,from,to);
56442 neg find mustInRelationeReferences_reference_EClass(problem,interpretation,from,to);
56443}
56444pattern refineRelation_eAttributes_reference_EClass(
56445 problem:LogicProblem, interpretation:PartialInterpretation,
56446 relationIterpretation:PartialRelationInterpretation,
56447 from: DefinedElement, to: DefinedElement)
56448{
56449 find interpretation(problem,interpretation);
56450 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
56451 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAttributes reference EClass");
56452 find mustExist(problem, interpretation, from);
56453 find mustExist(problem, interpretation, to);
56454 find mustInstanceOfEClass_class(problem,interpretation,from);
56455 find mustInstanceOfEAttribute_class(problem,interpretation,to);
56456 find mayInRelationeAttributes_reference_EClass(problem,interpretation,from,to);
56457 neg find mustInRelationeAttributes_reference_EClass(problem,interpretation,from,to);
56458}
56459pattern refineRelation_eAllContainments_reference_EClass(
56460 problem:LogicProblem, interpretation:PartialInterpretation,
56461 relationIterpretation:PartialRelationInterpretation,
56462 from: DefinedElement, to: DefinedElement)
56463{
56464 find interpretation(problem,interpretation);
56465 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
56466 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllContainments reference EClass");
56467 find mustExist(problem, interpretation, from);
56468 find mustExist(problem, interpretation, to);
56469 find mustInstanceOfEClass_class(problem,interpretation,from);
56470 find mustInstanceOfEReference_class(problem,interpretation,to);
56471 find mayInRelationeAllContainments_reference_EClass(problem,interpretation,from,to);
56472 neg find mustInRelationeAllContainments_reference_EClass(problem,interpretation,from,to);
56473}
56474pattern refineRelation_eAllOperations_reference_EClass(
56475 problem:LogicProblem, interpretation:PartialInterpretation,
56476 relationIterpretation:PartialRelationInterpretation,
56477 from: DefinedElement, to: DefinedElement)
56478{
56479 find interpretation(problem,interpretation);
56480 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
56481 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllOperations reference EClass");
56482 find mustExist(problem, interpretation, from);
56483 find mustExist(problem, interpretation, to);
56484 find mustInstanceOfEClass_class(problem,interpretation,from);
56485 find mustInstanceOfEOperation_class(problem,interpretation,to);
56486 find mayInRelationeAllOperations_reference_EClass(problem,interpretation,from,to);
56487 neg find mustInRelationeAllOperations_reference_EClass(problem,interpretation,from,to);
56488}
56489pattern refineRelation_eAllStructuralFeatures_reference_EClass(
56490 problem:LogicProblem, interpretation:PartialInterpretation,
56491 relationIterpretation:PartialRelationInterpretation,
56492 from: DefinedElement, to: DefinedElement)
56493{
56494 find interpretation(problem,interpretation);
56495 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
56496 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllStructuralFeatures reference EClass");
56497 find mustExist(problem, interpretation, from);
56498 find mustExist(problem, interpretation, to);
56499 find mustInstanceOfEClass_class(problem,interpretation,from);
56500 find mustInstanceOfEStructuralFeature_class(problem,interpretation,to);
56501 find mayInRelationeAllStructuralFeatures_reference_EClass(problem,interpretation,from,to);
56502 neg find mustInRelationeAllStructuralFeatures_reference_EClass(problem,interpretation,from,to);
56503}
56504pattern refineRelation_eAllSuperTypes_reference_EClass(
56505 problem:LogicProblem, interpretation:PartialInterpretation,
56506 relationIterpretation:PartialRelationInterpretation,
56507 from: DefinedElement, to: DefinedElement)
56508{
56509 find interpretation(problem,interpretation);
56510 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
56511 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllSuperTypes reference EClass");
56512 find mustExist(problem, interpretation, from);
56513 find mustExist(problem, interpretation, to);
56514 find mustInstanceOfEClass_class(problem,interpretation,from);
56515 find mustInstanceOfEClass_class(problem,interpretation,to);
56516 find mayInRelationeAllSuperTypes_reference_EClass(problem,interpretation,from,to);
56517 neg find mustInRelationeAllSuperTypes_reference_EClass(problem,interpretation,from,to);
56518}
56519pattern refineRelation_eIDAttribute_reference_EClass(
56520 problem:LogicProblem, interpretation:PartialInterpretation,
56521 relationIterpretation:PartialRelationInterpretation,
56522 from: DefinedElement, to: DefinedElement)
56523{
56524 find interpretation(problem,interpretation);
56525 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
56526 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eIDAttribute reference EClass");
56527 find mustExist(problem, interpretation, from);
56528 find mustExist(problem, interpretation, to);
56529 find mustInstanceOfEClass_class(problem,interpretation,from);
56530 find mustInstanceOfEAttribute_class(problem,interpretation,to);
56531 find mayInRelationeIDAttribute_reference_EClass(problem,interpretation,from,to);
56532 neg find mustInRelationeIDAttribute_reference_EClass(problem,interpretation,from,to);
56533}
56534pattern refineRelation_eAllGenericSuperTypes_reference_EClass(
56535 problem:LogicProblem, interpretation:PartialInterpretation,
56536 relationIterpretation:PartialRelationInterpretation,
56537 from: DefinedElement, to: DefinedElement)
56538{
56539 find interpretation(problem,interpretation);
56540 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
56541 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllGenericSuperTypes reference EClass");
56542 find mustExist(problem, interpretation, from);
56543 find mustExist(problem, interpretation, to);
56544 find mustInstanceOfEClass_class(problem,interpretation,from);
56545 find mustInstanceOfEGenericType_class(problem,interpretation,to);
56546 find mayInRelationeAllGenericSuperTypes_reference_EClass(problem,interpretation,from,to);
56547 neg find mustInRelationeAllGenericSuperTypes_reference_EClass(problem,interpretation,from,to);
56548}
56549pattern refineRelation_eExceptions_reference_EOperation(
56550 problem:LogicProblem, interpretation:PartialInterpretation,
56551 relationIterpretation:PartialRelationInterpretation,
56552 from: DefinedElement, to: DefinedElement)
56553{
56554 find interpretation(problem,interpretation);
56555 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
56556 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eExceptions reference EOperation");
56557 find mustExist(problem, interpretation, from);
56558 find mustExist(problem, interpretation, to);
56559 find mustInstanceOfEOperation_class(problem,interpretation,from);
56560 find mustInstanceOfEClassifier_class(problem,interpretation,to);
56561 find mayInRelationeExceptions_reference_EOperation(problem,interpretation,from,to);
56562 neg find mustInRelationeExceptions_reference_EOperation(problem,interpretation,from,to);
56563}
56564pattern refineRelation_eOpposite_reference_EReference(
56565 problem:LogicProblem, interpretation:PartialInterpretation,
56566 relationIterpretation:PartialRelationInterpretation,
56567 from: DefinedElement, to: DefinedElement)
56568{
56569 find interpretation(problem,interpretation);
56570 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
56571 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eOpposite reference EReference");
56572 find mustExist(problem, interpretation, from);
56573 find mustExist(problem, interpretation, to);
56574 find mustInstanceOfEReference_class(problem,interpretation,from);
56575 find mustInstanceOfEReference_class(problem,interpretation,to);
56576 find mayInRelationeOpposite_reference_EReference(problem,interpretation,from,to);
56577 neg find mustInRelationeOpposite_reference_EReference(problem,interpretation,from,to);
56578}
56579pattern refineRelation_eReferenceType_reference_EReference(
56580 problem:LogicProblem, interpretation:PartialInterpretation,
56581 relationIterpretation:PartialRelationInterpretation,
56582 from: DefinedElement, to: DefinedElement)
56583{
56584 find interpretation(problem,interpretation);
56585 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
56586 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eReferenceType reference EReference");
56587 find mustExist(problem, interpretation, from);
56588 find mustExist(problem, interpretation, to);
56589 find mustInstanceOfEReference_class(problem,interpretation,from);
56590 find mustInstanceOfEClass_class(problem,interpretation,to);
56591 find mayInRelationeReferenceType_reference_EReference(problem,interpretation,from,to);
56592 neg find mustInRelationeReferenceType_reference_EReference(problem,interpretation,from,to);
56593}
56594pattern refineRelation_eKeys_reference_EReference(
56595 problem:LogicProblem, interpretation:PartialInterpretation,
56596 relationIterpretation:PartialRelationInterpretation,
56597 from: DefinedElement, to: DefinedElement)
56598{
56599 find interpretation(problem,interpretation);
56600 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
56601 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eKeys reference EReference");
56602 find mustExist(problem, interpretation, from);
56603 find mustExist(problem, interpretation, to);
56604 find mustInstanceOfEReference_class(problem,interpretation,from);
56605 find mustInstanceOfEAttribute_class(problem,interpretation,to);
56606 find mayInRelationeKeys_reference_EReference(problem,interpretation,from,to);
56607 neg find mustInRelationeKeys_reference_EReference(problem,interpretation,from,to);
56608}
56609pattern refineRelation_eType_reference_ETypedElement(
56610 problem:LogicProblem, interpretation:PartialInterpretation,
56611 relationIterpretation:PartialRelationInterpretation,
56612 from: DefinedElement, to: DefinedElement)
56613{
56614 find interpretation(problem,interpretation);
56615 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
56616 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eType reference ETypedElement");
56617 find mustExist(problem, interpretation, from);
56618 find mustExist(problem, interpretation, to);
56619 find mustInstanceOfETypedElement_class(problem,interpretation,from);
56620 find mustInstanceOfEClassifier_class(problem,interpretation,to);
56621 find mayInRelationeType_reference_ETypedElement(problem,interpretation,from,to);
56622 neg find mustInRelationeType_reference_ETypedElement(problem,interpretation,from,to);
56623}
56624pattern refineRelation_eRawType_reference_EGenericType(
56625 problem:LogicProblem, interpretation:PartialInterpretation,
56626 relationIterpretation:PartialRelationInterpretation,
56627 from: DefinedElement, to: DefinedElement)
56628{
56629 find interpretation(problem,interpretation);
56630 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
56631 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eRawType reference EGenericType");
56632 find mustExist(problem, interpretation, from);
56633 find mustExist(problem, interpretation, to);
56634 find mustInstanceOfEGenericType_class(problem,interpretation,from);
56635 find mustInstanceOfEClassifier_class(problem,interpretation,to);
56636 find mayInRelationeRawType_reference_EGenericType(problem,interpretation,from,to);
56637 neg find mustInRelationeRawType_reference_EGenericType(problem,interpretation,from,to);
56638}
56639pattern refineRelation_eTypeParameter_reference_EGenericType(
56640 problem:LogicProblem, interpretation:PartialInterpretation,
56641 relationIterpretation:PartialRelationInterpretation,
56642 from: DefinedElement, to: DefinedElement)
56643{
56644 find interpretation(problem,interpretation);
56645 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
56646 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eTypeParameter reference EGenericType");
56647 find mustExist(problem, interpretation, from);
56648 find mustExist(problem, interpretation, to);
56649 find mustInstanceOfEGenericType_class(problem,interpretation,from);
56650 find mustInstanceOfETypeParameter_class(problem,interpretation,to);
56651 find mayInRelationeTypeParameter_reference_EGenericType(problem,interpretation,from,to);
56652 neg find mustInRelationeTypeParameter_reference_EGenericType(problem,interpretation,from,to);
56653}
56654pattern refineRelation_eClassifier_reference_EGenericType(
56655 problem:LogicProblem, interpretation:PartialInterpretation,
56656 relationIterpretation:PartialRelationInterpretation,
56657 from: DefinedElement, to: DefinedElement)
56658{
56659 find interpretation(problem,interpretation);
56660 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
56661 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eClassifier reference EGenericType");
56662 find mustExist(problem, interpretation, from);
56663 find mustExist(problem, interpretation, to);
56664 find mustInstanceOfEGenericType_class(problem,interpretation,from);
56665 find mustInstanceOfEClassifier_class(problem,interpretation,to);
56666 find mayInRelationeClassifier_reference_EGenericType(problem,interpretation,from,to);
56667 neg find mustInRelationeClassifier_reference_EGenericType(problem,interpretation,from,to);
56668}
56669pattern refineRelation_iD_attribute_EAttribute(
56670 problem:LogicProblem, interpretation:PartialInterpretation,
56671 relationIterpretation:PartialRelationInterpretation,
56672 from: DefinedElement, to: DefinedElement)
56673{
56674 find interpretation(problem,interpretation);
56675 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
56676 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"iD attribute EAttribute");
56677 find mustExist(problem, interpretation, from);
56678 find mustExist(problem, interpretation, to);
56679 find mustInstanceOfEAttribute_class(problem,interpretation,from);
56680 BooleanElement(to);
56681 find mayInRelationiD_attribute_EAttribute(problem,interpretation,from,to);
56682 neg find mustInRelationiD_attribute_EAttribute(problem,interpretation,from,to);
56683}
56684pattern refineRelation_source_attribute_EAnnotation(
56685 problem:LogicProblem, interpretation:PartialInterpretation,
56686 relationIterpretation:PartialRelationInterpretation,
56687 from: DefinedElement, to: DefinedElement)
56688{
56689 find interpretation(problem,interpretation);
56690 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
56691 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"source attribute EAnnotation");
56692 find mustExist(problem, interpretation, from);
56693 find mustExist(problem, interpretation, to);
56694 find mustInstanceOfEAnnotation_class(problem,interpretation,from);
56695 StringElement(to);
56696 find mayInRelationsource_attribute_EAnnotation(problem,interpretation,from,to);
56697 neg find mustInRelationsource_attribute_EAnnotation(problem,interpretation,from,to);
56698}
56699pattern refineRelation_abstract_attribute_EClass(
56700 problem:LogicProblem, interpretation:PartialInterpretation,
56701 relationIterpretation:PartialRelationInterpretation,
56702 from: DefinedElement, to: DefinedElement)
56703{
56704 find interpretation(problem,interpretation);
56705 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
56706 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"abstract attribute EClass");
56707 find mustExist(problem, interpretation, from);
56708 find mustExist(problem, interpretation, to);
56709 find mustInstanceOfEClass_class(problem,interpretation,from);
56710 BooleanElement(to);
56711 find mayInRelationabstract_attribute_EClass(problem,interpretation,from,to);
56712 neg find mustInRelationabstract_attribute_EClass(problem,interpretation,from,to);
56713}
56714pattern refineRelation_interface_attribute_EClass(
56715 problem:LogicProblem, interpretation:PartialInterpretation,
56716 relationIterpretation:PartialRelationInterpretation,
56717 from: DefinedElement, to: DefinedElement)
56718{
56719 find interpretation(problem,interpretation);
56720 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
56721 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface attribute EClass");
56722 find mustExist(problem, interpretation, from);
56723 find mustExist(problem, interpretation, to);
56724 find mustInstanceOfEClass_class(problem,interpretation,from);
56725 BooleanElement(to);
56726 find mayInRelationinterface_attribute_EClass(problem,interpretation,from,to);
56727 neg find mustInRelationinterface_attribute_EClass(problem,interpretation,from,to);
56728}
56729pattern refineRelation_instanceClassName_attribute_EClassifier(
56730 problem:LogicProblem, interpretation:PartialInterpretation,
56731 relationIterpretation:PartialRelationInterpretation,
56732 from: DefinedElement, to: DefinedElement)
56733{
56734 find interpretation(problem,interpretation);
56735 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
56736 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"instanceClassName attribute EClassifier");
56737 find mustExist(problem, interpretation, from);
56738 find mustExist(problem, interpretation, to);
56739 find mustInstanceOfEClassifier_class(problem,interpretation,from);
56740 StringElement(to);
56741 find mayInRelationinstanceClassName_attribute_EClassifier(problem,interpretation,from,to);
56742 neg find mustInRelationinstanceClassName_attribute_EClassifier(problem,interpretation,from,to);
56743}
56744pattern refineRelation_instanceTypeName_attribute_EClassifier(
56745 problem:LogicProblem, interpretation:PartialInterpretation,
56746 relationIterpretation:PartialRelationInterpretation,
56747 from: DefinedElement, to: DefinedElement)
56748{
56749 find interpretation(problem,interpretation);
56750 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
56751 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"instanceTypeName attribute EClassifier");
56752 find mustExist(problem, interpretation, from);
56753 find mustExist(problem, interpretation, to);
56754 find mustInstanceOfEClassifier_class(problem,interpretation,from);
56755 StringElement(to);
56756 find mayInRelationinstanceTypeName_attribute_EClassifier(problem,interpretation,from,to);
56757 neg find mustInRelationinstanceTypeName_attribute_EClassifier(problem,interpretation,from,to);
56758}
56759pattern refineRelation_serializable_attribute_EDataType(
56760 problem:LogicProblem, interpretation:PartialInterpretation,
56761 relationIterpretation:PartialRelationInterpretation,
56762 from: DefinedElement, to: DefinedElement)
56763{
56764 find interpretation(problem,interpretation);
56765 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
56766 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"serializable attribute EDataType");
56767 find mustExist(problem, interpretation, from);
56768 find mustExist(problem, interpretation, to);
56769 find mustInstanceOfEDataType_class(problem,interpretation,from);
56770 BooleanElement(to);
56771 find mayInRelationserializable_attribute_EDataType(problem,interpretation,from,to);
56772 neg find mustInRelationserializable_attribute_EDataType(problem,interpretation,from,to);
56773}
56774pattern refineRelation_value_attribute_EEnumLiteral(
56775 problem:LogicProblem, interpretation:PartialInterpretation,
56776 relationIterpretation:PartialRelationInterpretation,
56777 from: DefinedElement, to: DefinedElement)
56778{
56779 find interpretation(problem,interpretation);
56780 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
56781 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"value attribute EEnumLiteral");
56782 find mustExist(problem, interpretation, from);
56783 find mustExist(problem, interpretation, to);
56784 find mustInstanceOfEEnumLiteral_class(problem,interpretation,from);
56785 IntegerElement(to);
56786 find mayInRelationvalue_attribute_EEnumLiteral(problem,interpretation,from,to);
56787 neg find mustInRelationvalue_attribute_EEnumLiteral(problem,interpretation,from,to);
56788}
56789pattern refineRelation_literal_attribute_EEnumLiteral(
56790 problem:LogicProblem, interpretation:PartialInterpretation,
56791 relationIterpretation:PartialRelationInterpretation,
56792 from: DefinedElement, to: DefinedElement)
56793{
56794 find interpretation(problem,interpretation);
56795 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
56796 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"literal attribute EEnumLiteral");
56797 find mustExist(problem, interpretation, from);
56798 find mustExist(problem, interpretation, to);
56799 find mustInstanceOfEEnumLiteral_class(problem,interpretation,from);
56800 StringElement(to);
56801 find mayInRelationliteral_attribute_EEnumLiteral(problem,interpretation,from,to);
56802 neg find mustInRelationliteral_attribute_EEnumLiteral(problem,interpretation,from,to);
56803}
56804pattern refineRelation_name_attribute_ENamedElement(
56805 problem:LogicProblem, interpretation:PartialInterpretation,
56806 relationIterpretation:PartialRelationInterpretation,
56807 from: DefinedElement, to: DefinedElement)
56808{
56809 find interpretation(problem,interpretation);
56810 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
56811 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"name attribute ENamedElement");
56812 find mustExist(problem, interpretation, from);
56813 find mustExist(problem, interpretation, to);
56814 find mustInstanceOfENamedElement_class(problem,interpretation,from);
56815 StringElement(to);
56816 find mayInRelationname_attribute_ENamedElement(problem,interpretation,from,to);
56817 neg find mustInRelationname_attribute_ENamedElement(problem,interpretation,from,to);
56818}
56819pattern refineRelation_nsURI_attribute_EPackage(
56820 problem:LogicProblem, interpretation:PartialInterpretation,
56821 relationIterpretation:PartialRelationInterpretation,
56822 from: DefinedElement, to: DefinedElement)
56823{
56824 find interpretation(problem,interpretation);
56825 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
56826 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"nsURI attribute EPackage");
56827 find mustExist(problem, interpretation, from);
56828 find mustExist(problem, interpretation, to);
56829 find mustInstanceOfEPackage_class(problem,interpretation,from);
56830 StringElement(to);
56831 find mayInRelationnsURI_attribute_EPackage(problem,interpretation,from,to);
56832 neg find mustInRelationnsURI_attribute_EPackage(problem,interpretation,from,to);
56833}
56834pattern refineRelation_nsPrefix_attribute_EPackage(
56835 problem:LogicProblem, interpretation:PartialInterpretation,
56836 relationIterpretation:PartialRelationInterpretation,
56837 from: DefinedElement, to: DefinedElement)
56838{
56839 find interpretation(problem,interpretation);
56840 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
56841 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"nsPrefix attribute EPackage");
56842 find mustExist(problem, interpretation, from);
56843 find mustExist(problem, interpretation, to);
56844 find mustInstanceOfEPackage_class(problem,interpretation,from);
56845 StringElement(to);
56846 find mayInRelationnsPrefix_attribute_EPackage(problem,interpretation,from,to);
56847 neg find mustInRelationnsPrefix_attribute_EPackage(problem,interpretation,from,to);
56848}
56849pattern refineRelation_containment_attribute_EReference(
56850 problem:LogicProblem, interpretation:PartialInterpretation,
56851 relationIterpretation:PartialRelationInterpretation,
56852 from: DefinedElement, to: DefinedElement)
56853{
56854 find interpretation(problem,interpretation);
56855 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
56856 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"containment attribute EReference");
56857 find mustExist(problem, interpretation, from);
56858 find mustExist(problem, interpretation, to);
56859 find mustInstanceOfEReference_class(problem,interpretation,from);
56860 BooleanElement(to);
56861 find mayInRelationcontainment_attribute_EReference(problem,interpretation,from,to);
56862 neg find mustInRelationcontainment_attribute_EReference(problem,interpretation,from,to);
56863}
56864pattern refineRelation_container_attribute_EReference(
56865 problem:LogicProblem, interpretation:PartialInterpretation,
56866 relationIterpretation:PartialRelationInterpretation,
56867 from: DefinedElement, to: DefinedElement)
56868{
56869 find interpretation(problem,interpretation);
56870 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
56871 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"container attribute EReference");
56872 find mustExist(problem, interpretation, from);
56873 find mustExist(problem, interpretation, to);
56874 find mustInstanceOfEReference_class(problem,interpretation,from);
56875 BooleanElement(to);
56876 find mayInRelationcontainer_attribute_EReference(problem,interpretation,from,to);
56877 neg find mustInRelationcontainer_attribute_EReference(problem,interpretation,from,to);
56878}
56879pattern refineRelation_resolveProxies_attribute_EReference(
56880 problem:LogicProblem, interpretation:PartialInterpretation,
56881 relationIterpretation:PartialRelationInterpretation,
56882 from: DefinedElement, to: DefinedElement)
56883{
56884 find interpretation(problem,interpretation);
56885 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
56886 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"resolveProxies attribute EReference");
56887 find mustExist(problem, interpretation, from);
56888 find mustExist(problem, interpretation, to);
56889 find mustInstanceOfEReference_class(problem,interpretation,from);
56890 BooleanElement(to);
56891 find mayInRelationresolveProxies_attribute_EReference(problem,interpretation,from,to);
56892 neg find mustInRelationresolveProxies_attribute_EReference(problem,interpretation,from,to);
56893}
56894pattern refineRelation_changeable_attribute_EStructuralFeature(
56895 problem:LogicProblem, interpretation:PartialInterpretation,
56896 relationIterpretation:PartialRelationInterpretation,
56897 from: DefinedElement, to: DefinedElement)
56898{
56899 find interpretation(problem,interpretation);
56900 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
56901 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"changeable attribute EStructuralFeature");
56902 find mustExist(problem, interpretation, from);
56903 find mustExist(problem, interpretation, to);
56904 find mustInstanceOfEStructuralFeature_class(problem,interpretation,from);
56905 BooleanElement(to);
56906 find mayInRelationchangeable_attribute_EStructuralFeature(problem,interpretation,from,to);
56907 neg find mustInRelationchangeable_attribute_EStructuralFeature(problem,interpretation,from,to);
56908}
56909pattern refineRelation_volatile_attribute_EStructuralFeature(
56910 problem:LogicProblem, interpretation:PartialInterpretation,
56911 relationIterpretation:PartialRelationInterpretation,
56912 from: DefinedElement, to: DefinedElement)
56913{
56914 find interpretation(problem,interpretation);
56915 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
56916 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"volatile attribute EStructuralFeature");
56917 find mustExist(problem, interpretation, from);
56918 find mustExist(problem, interpretation, to);
56919 find mustInstanceOfEStructuralFeature_class(problem,interpretation,from);
56920 BooleanElement(to);
56921 find mayInRelationvolatile_attribute_EStructuralFeature(problem,interpretation,from,to);
56922 neg find mustInRelationvolatile_attribute_EStructuralFeature(problem,interpretation,from,to);
56923}
56924pattern refineRelation_transient_attribute_EStructuralFeature(
56925 problem:LogicProblem, interpretation:PartialInterpretation,
56926 relationIterpretation:PartialRelationInterpretation,
56927 from: DefinedElement, to: DefinedElement)
56928{
56929 find interpretation(problem,interpretation);
56930 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
56931 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"transient attribute EStructuralFeature");
56932 find mustExist(problem, interpretation, from);
56933 find mustExist(problem, interpretation, to);
56934 find mustInstanceOfEStructuralFeature_class(problem,interpretation,from);
56935 BooleanElement(to);
56936 find mayInRelationtransient_attribute_EStructuralFeature(problem,interpretation,from,to);
56937 neg find mustInRelationtransient_attribute_EStructuralFeature(problem,interpretation,from,to);
56938}
56939pattern refineRelation_defaultValueLiteral_attribute_EStructuralFeature(
56940 problem:LogicProblem, interpretation:PartialInterpretation,
56941 relationIterpretation:PartialRelationInterpretation,
56942 from: DefinedElement, to: DefinedElement)
56943{
56944 find interpretation(problem,interpretation);
56945 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
56946 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"defaultValueLiteral attribute EStructuralFeature");
56947 find mustExist(problem, interpretation, from);
56948 find mustExist(problem, interpretation, to);
56949 find mustInstanceOfEStructuralFeature_class(problem,interpretation,from);
56950 StringElement(to);
56951 find mayInRelationdefaultValueLiteral_attribute_EStructuralFeature(problem,interpretation,from,to);
56952 neg find mustInRelationdefaultValueLiteral_attribute_EStructuralFeature(problem,interpretation,from,to);
56953}
56954pattern refineRelation_unsettable_attribute_EStructuralFeature(
56955 problem:LogicProblem, interpretation:PartialInterpretation,
56956 relationIterpretation:PartialRelationInterpretation,
56957 from: DefinedElement, to: DefinedElement)
56958{
56959 find interpretation(problem,interpretation);
56960 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
56961 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"unsettable attribute EStructuralFeature");
56962 find mustExist(problem, interpretation, from);
56963 find mustExist(problem, interpretation, to);
56964 find mustInstanceOfEStructuralFeature_class(problem,interpretation,from);
56965 BooleanElement(to);
56966 find mayInRelationunsettable_attribute_EStructuralFeature(problem,interpretation,from,to);
56967 neg find mustInRelationunsettable_attribute_EStructuralFeature(problem,interpretation,from,to);
56968}
56969pattern refineRelation_derived_attribute_EStructuralFeature(
56970 problem:LogicProblem, interpretation:PartialInterpretation,
56971 relationIterpretation:PartialRelationInterpretation,
56972 from: DefinedElement, to: DefinedElement)
56973{
56974 find interpretation(problem,interpretation);
56975 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
56976 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"derived attribute EStructuralFeature");
56977 find mustExist(problem, interpretation, from);
56978 find mustExist(problem, interpretation, to);
56979 find mustInstanceOfEStructuralFeature_class(problem,interpretation,from);
56980 BooleanElement(to);
56981 find mayInRelationderived_attribute_EStructuralFeature(problem,interpretation,from,to);
56982 neg find mustInRelationderived_attribute_EStructuralFeature(problem,interpretation,from,to);
56983}
56984pattern refineRelation_ordered_attribute_ETypedElement(
56985 problem:LogicProblem, interpretation:PartialInterpretation,
56986 relationIterpretation:PartialRelationInterpretation,
56987 from: DefinedElement, to: DefinedElement)
56988{
56989 find interpretation(problem,interpretation);
56990 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
56991 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"ordered attribute ETypedElement");
56992 find mustExist(problem, interpretation, from);
56993 find mustExist(problem, interpretation, to);
56994 find mustInstanceOfETypedElement_class(problem,interpretation,from);
56995 BooleanElement(to);
56996 find mayInRelationordered_attribute_ETypedElement(problem,interpretation,from,to);
56997 neg find mustInRelationordered_attribute_ETypedElement(problem,interpretation,from,to);
56998}
56999pattern refineRelation_unique_attribute_ETypedElement(
57000 problem:LogicProblem, interpretation:PartialInterpretation,
57001 relationIterpretation:PartialRelationInterpretation,
57002 from: DefinedElement, to: DefinedElement)
57003{
57004 find interpretation(problem,interpretation);
57005 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
57006 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"unique attribute ETypedElement");
57007 find mustExist(problem, interpretation, from);
57008 find mustExist(problem, interpretation, to);
57009 find mustInstanceOfETypedElement_class(problem,interpretation,from);
57010 BooleanElement(to);
57011 find mayInRelationunique_attribute_ETypedElement(problem,interpretation,from,to);
57012 neg find mustInRelationunique_attribute_ETypedElement(problem,interpretation,from,to);
57013}
57014pattern refineRelation_lowerBound_attribute_ETypedElement(
57015 problem:LogicProblem, interpretation:PartialInterpretation,
57016 relationIterpretation:PartialRelationInterpretation,
57017 from: DefinedElement, to: DefinedElement)
57018{
57019 find interpretation(problem,interpretation);
57020 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
57021 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"lowerBound attribute ETypedElement");
57022 find mustExist(problem, interpretation, from);
57023 find mustExist(problem, interpretation, to);
57024 find mustInstanceOfETypedElement_class(problem,interpretation,from);
57025 IntegerElement(to);
57026 find mayInRelationlowerBound_attribute_ETypedElement(problem,interpretation,from,to);
57027 neg find mustInRelationlowerBound_attribute_ETypedElement(problem,interpretation,from,to);
57028}
57029pattern refineRelation_upperBound_attribute_ETypedElement(
57030 problem:LogicProblem, interpretation:PartialInterpretation,
57031 relationIterpretation:PartialRelationInterpretation,
57032 from: DefinedElement, to: DefinedElement)
57033{
57034 find interpretation(problem,interpretation);
57035 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
57036 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"upperBound attribute ETypedElement");
57037 find mustExist(problem, interpretation, from);
57038 find mustExist(problem, interpretation, to);
57039 find mustInstanceOfETypedElement_class(problem,interpretation,from);
57040 IntegerElement(to);
57041 find mayInRelationupperBound_attribute_ETypedElement(problem,interpretation,from,to);
57042 neg find mustInRelationupperBound_attribute_ETypedElement(problem,interpretation,from,to);
57043}
57044pattern refineRelation_many_attribute_ETypedElement(
57045 problem:LogicProblem, interpretation:PartialInterpretation,
57046 relationIterpretation:PartialRelationInterpretation,
57047 from: DefinedElement, to: DefinedElement)
57048{
57049 find interpretation(problem,interpretation);
57050 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
57051 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"many attribute ETypedElement");
57052 find mustExist(problem, interpretation, from);
57053 find mustExist(problem, interpretation, to);
57054 find mustInstanceOfETypedElement_class(problem,interpretation,from);
57055 BooleanElement(to);
57056 find mayInRelationmany_attribute_ETypedElement(problem,interpretation,from,to);
57057 neg find mustInRelationmany_attribute_ETypedElement(problem,interpretation,from,to);
57058}
57059pattern refineRelation_required_attribute_ETypedElement(
57060 problem:LogicProblem, interpretation:PartialInterpretation,
57061 relationIterpretation:PartialRelationInterpretation,
57062 from: DefinedElement, to: DefinedElement)
57063{
57064 find interpretation(problem,interpretation);
57065 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
57066 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"required attribute ETypedElement");
57067 find mustExist(problem, interpretation, from);
57068 find mustExist(problem, interpretation, to);
57069 find mustInstanceOfETypedElement_class(problem,interpretation,from);
57070 BooleanElement(to);
57071 find mayInRelationrequired_attribute_ETypedElement(problem,interpretation,from,to);
57072 neg find mustInRelationrequired_attribute_ETypedElement(problem,interpretation,from,to);
57073}
57074pattern refineRelation_key_attribute_EStringToStringMapEntry(
57075 problem:LogicProblem, interpretation:PartialInterpretation,
57076 relationIterpretation:PartialRelationInterpretation,
57077 from: DefinedElement, to: DefinedElement)
57078{
57079 find interpretation(problem,interpretation);
57080 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
57081 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"key attribute EStringToStringMapEntry");
57082 find mustExist(problem, interpretation, from);
57083 find mustExist(problem, interpretation, to);
57084 find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,from);
57085 StringElement(to);
57086 find mayInRelationkey_attribute_EStringToStringMapEntry(problem,interpretation,from,to);
57087 neg find mustInRelationkey_attribute_EStringToStringMapEntry(problem,interpretation,from,to);
57088}
57089pattern refineRelation_value_attribute_EStringToStringMapEntry(
57090 problem:LogicProblem, interpretation:PartialInterpretation,
57091 relationIterpretation:PartialRelationInterpretation,
57092 from: DefinedElement, to: DefinedElement)
57093{
57094 find interpretation(problem,interpretation);
57095 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
57096 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"value attribute EStringToStringMapEntry");
57097 find mustExist(problem, interpretation, from);
57098 find mustExist(problem, interpretation, to);
57099 find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,from);
57100 StringElement(to);
57101 find mayInRelationvalue_attribute_EStringToStringMapEntry(problem,interpretation,from,to);
57102 neg find mustInRelationvalue_attribute_EStringToStringMapEntry(problem,interpretation,from,to);
57103}
57104import epackage "http://www.bme.hu/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage"
57105import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/problem"
57106import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/language"
57107
57108//////////
57109// 0. Util
57110//////////
57111private pattern interpretation(problem:LogicProblem, interpretation:PartialInterpretation) {
57112 PartialInterpretation.problem(interpretation,problem);
57113}
57114
57115/////////////////////////
57116// 0.1 Existence
57117/////////////////////////
57118private pattern mustExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
57119 find interpretation(problem,interpretation);
57120 LogicProblem.elements(problem,element);
57121} or {
57122 find interpretation(problem,interpretation);
57123 PartialInterpretation.newElements(interpretation,element);
57124}
57125
57126private pattern mayExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
57127 find mustExist(problem,interpretation,element);
57128} or {
57129 find interpretation(problem,interpretation);
57130 neg find elementCloseWorld(element);
57131 PartialInterpretation.openWorldElements(interpretation,element);
57132}
57133
57134private pattern elementCloseWorld(element:DefinedElement) {
57135 PartialInterpretation.openWorldElements(i,element);
57136 PartialInterpretation.maxNewElements(i,0);
57137} or {
57138 Scope.targetTypeInterpretation(scope,interpretation);
57139 PartialTypeInterpratation.elements(interpretation,element);
57140 Scope.maxNewElements(scope,0);
57141}
57142
57143////////////////////////
57144// 0.2 Equivalence
57145////////////////////////
57146pattern mayEquivalent(problem:LogicProblem, interpretation:PartialInterpretation, a: DefinedElement, b: DefinedElement) {
57147 find mayExist(problem,interpretation,a);
57148 find mayExist(problem,interpretation,b);
57149 a == b;
57150}
57151
57152////////////////////////
57153// 0.3 Required Patterns by TypeIndexer
57154////////////////////////
57155private pattern typeInterpretation(problem:LogicProblem, interpretation:PartialInterpretation, type:TypeDeclaration, typeInterpretation:PartialComplexTypeInterpretation) {
57156 find interpretation(problem,interpretation);
57157 LogicProblem.types(problem,type);
57158 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
57159 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
57160}
57161
57162private pattern directInstanceOf(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement, type:Type) {
57163 find interpretation(problem,interpretation);
57164 LogicProblem.types(problem,type);
57165 TypeDefinition.elements(type,element);
57166} or {
57167 find interpretation(problem,interpretation);
57168 find typeInterpretation(problem,interpretation,type,typeInterpretation);
57169 PartialComplexTypeInterpretation.elements(typeInterpretation,element);
57170}
57171
57172private pattern isPrimitive(element: PrimitiveElement) {
57173 PrimitiveElement(element);
57174}
57175
57176//////////
57177// 1. Problem-Specific Base Indexers
57178//////////
57179// 1.1 Type Indexers
57180//////////
57181// 1.1.1 primitive Type Indexers
57182//////////
57183
57184//////////
57185// 1.1.2 domain-specific Type Indexers
57186//////////
57187/**
57188 * An element must be an instance of type "FunctionalElement class".
57189 */
57190private pattern mustInstanceOfFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
57191 Type.name(type,"FunctionalElement class");
57192 find directInstanceOf(problem,interpretation,element,type);
57193}
57194private pattern scopeDisallowsNewFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation) {
57195 find interpretation(problem,interpretation);
57196 PartialInterpretation.scopes(interpretation,scope);
57197 Scope.targetTypeInterpretation(scope,typeInterpretation);
57198 Scope.maxNewElements(scope,0);
57199 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
57200 Type.name(type,"FunctionalElement class");
57201}
57202
57203/**
57204 * An element may be an instance of type "FunctionalElement class".
57205 */
57206private pattern mayInstanceOfFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
57207{
57208 find interpretation(problem,interpretation);
57209 PartialInterpretation.newElements(interpretation,element);
57210 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
57211 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
57212 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
57213 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
57214 neg find mustInstanceOfFunction_class(problem,interpretation,element);
57215 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
57216 neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation);
57217 neg find isPrimitive(element);
57218} or {
57219 find interpretation(problem,interpretation);
57220 PartialInterpretation.openWorldElements(interpretation,element);
57221 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
57222 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
57223 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
57224 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
57225 neg find mustInstanceOfFunction_class(problem,interpretation,element);
57226 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
57227 neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation);
57228 neg find isPrimitive(element);
57229} or
57230{ find mustInstanceOfFunctionalElement_class(problem,interpretation,element); }
57231/**
57232 * An element must be an instance of type "FunctionalArchitectureModel class".
57233 */
57234private pattern mustInstanceOfFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
57235 Type.name(type,"FunctionalArchitectureModel class");
57236 find directInstanceOf(problem,interpretation,element,type);
57237}
57238private pattern scopeDisallowsNewFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation) {
57239 find interpretation(problem,interpretation);
57240 PartialInterpretation.scopes(interpretation,scope);
57241 Scope.targetTypeInterpretation(scope,typeInterpretation);
57242 Scope.maxNewElements(scope,0);
57243 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
57244 Type.name(type,"FunctionalArchitectureModel class");
57245}
57246
57247/**
57248 * An element may be an instance of type "FunctionalArchitectureModel class".
57249 */
57250private pattern mayInstanceOfFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
57251{
57252 find interpretation(problem,interpretation);
57253 PartialInterpretation.newElements(interpretation,element);
57254 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
57255 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
57256 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
57257 neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element);
57258 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
57259 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
57260 neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation);
57261 neg find isPrimitive(element);
57262} or {
57263 find interpretation(problem,interpretation);
57264 PartialInterpretation.openWorldElements(interpretation,element);
57265 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
57266 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
57267 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
57268 neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element);
57269 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
57270 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
57271 neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation);
57272 neg find isPrimitive(element);
57273} or
57274{ find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); }
57275/**
57276 * An element must be an instance of type "Function class".
57277 */
57278private pattern mustInstanceOfFunction_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
57279 Type.name(type,"Function class");
57280 find directInstanceOf(problem,interpretation,element,type);
57281}
57282private pattern scopeDisallowsNewFunction_class(problem:LogicProblem, interpretation:PartialInterpretation) {
57283 find interpretation(problem,interpretation);
57284 PartialInterpretation.scopes(interpretation,scope);
57285 Scope.targetTypeInterpretation(scope,typeInterpretation);
57286 Scope.maxNewElements(scope,0);
57287 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
57288 Type.name(type,"Function class");
57289}
57290
57291/**
57292 * An element may be an instance of type "Function class".
57293 */
57294private pattern mayInstanceOfFunction_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
57295{
57296 find interpretation(problem,interpretation);
57297 PartialInterpretation.newElements(interpretation,element);
57298 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
57299 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
57300 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
57301 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
57302 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
57303 neg find scopeDisallowsNewFunction_class(problem, interpretation);
57304 neg find isPrimitive(element);
57305} or {
57306 find interpretation(problem,interpretation);
57307 PartialInterpretation.openWorldElements(interpretation,element);
57308 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
57309 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
57310 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
57311 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
57312 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
57313 neg find scopeDisallowsNewFunction_class(problem, interpretation);
57314 neg find isPrimitive(element);
57315} or
57316{ find mustInstanceOfFunction_class(problem,interpretation,element); }
57317/**
57318 * An element must be an instance of type "FAMTerminator class".
57319 */
57320private pattern mustInstanceOfFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
57321 Type.name(type,"FAMTerminator class");
57322 find directInstanceOf(problem,interpretation,element,type);
57323}
57324private pattern scopeDisallowsNewFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation) {
57325 find interpretation(problem,interpretation);
57326 PartialInterpretation.scopes(interpretation,scope);
57327 Scope.targetTypeInterpretation(scope,typeInterpretation);
57328 Scope.maxNewElements(scope,0);
57329 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
57330 Type.name(type,"FAMTerminator class");
57331}
57332
57333/**
57334 * An element may be an instance of type "FAMTerminator class".
57335 */
57336private pattern mayInstanceOfFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
57337{
57338 find interpretation(problem,interpretation);
57339 PartialInterpretation.newElements(interpretation,element);
57340 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
57341 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
57342 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
57343 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
57344 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
57345 neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation);
57346 neg find isPrimitive(element);
57347} or {
57348 find interpretation(problem,interpretation);
57349 PartialInterpretation.openWorldElements(interpretation,element);
57350 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
57351 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
57352 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
57353 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
57354 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
57355 neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation);
57356 neg find isPrimitive(element);
57357} or
57358{ find mustInstanceOfFAMTerminator_class(problem,interpretation,element); }
57359/**
57360 * An element must be an instance of type "InformationLink class".
57361 */
57362private pattern mustInstanceOfInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
57363 Type.name(type,"InformationLink class");
57364 find directInstanceOf(problem,interpretation,element,type);
57365}
57366private pattern scopeDisallowsNewInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation) {
57367 find interpretation(problem,interpretation);
57368 PartialInterpretation.scopes(interpretation,scope);
57369 Scope.targetTypeInterpretation(scope,typeInterpretation);
57370 Scope.maxNewElements(scope,0);
57371 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
57372 Type.name(type,"InformationLink class");
57373}
57374
57375/**
57376 * An element may be an instance of type "InformationLink class".
57377 */
57378private pattern mayInstanceOfInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
57379{
57380 find interpretation(problem,interpretation);
57381 PartialInterpretation.newElements(interpretation,element);
57382 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
57383 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
57384 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
57385 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
57386 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
57387 neg find scopeDisallowsNewInformationLink_class(problem, interpretation);
57388 neg find isPrimitive(element);
57389} or {
57390 find interpretation(problem,interpretation);
57391 PartialInterpretation.openWorldElements(interpretation,element);
57392 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
57393 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
57394 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
57395 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
57396 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
57397 neg find scopeDisallowsNewInformationLink_class(problem, interpretation);
57398 neg find isPrimitive(element);
57399} or
57400{ find mustInstanceOfInformationLink_class(problem,interpretation,element); }
57401/**
57402 * An element must be an instance of type "FunctionalInterface class".
57403 */
57404private pattern mustInstanceOfFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
57405 Type.name(type,"FunctionalInterface class");
57406 find directInstanceOf(problem,interpretation,element,type);
57407}
57408private pattern scopeDisallowsNewFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation) {
57409 find interpretation(problem,interpretation);
57410 PartialInterpretation.scopes(interpretation,scope);
57411 Scope.targetTypeInterpretation(scope,typeInterpretation);
57412 Scope.maxNewElements(scope,0);
57413 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
57414 Type.name(type,"FunctionalInterface class");
57415}
57416
57417/**
57418 * An element may be an instance of type "FunctionalInterface class".
57419 */
57420private pattern mayInstanceOfFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
57421{
57422 find interpretation(problem,interpretation);
57423 PartialInterpretation.newElements(interpretation,element);
57424 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
57425 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
57426 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
57427 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
57428 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
57429 neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation);
57430 neg find isPrimitive(element);
57431} or {
57432 find interpretation(problem,interpretation);
57433 PartialInterpretation.openWorldElements(interpretation,element);
57434 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
57435 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
57436 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
57437 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
57438 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
57439 neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation);
57440 neg find isPrimitive(element);
57441} or
57442{ find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); }
57443/**
57444 * An element must be an instance of type "FunctionalInput class".
57445 */
57446private pattern mustInstanceOfFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
57447 Type.name(type,"FunctionalInput class");
57448 find directInstanceOf(problem,interpretation,element,type);
57449}
57450private pattern scopeDisallowsNewFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation) {
57451 find interpretation(problem,interpretation);
57452 PartialInterpretation.scopes(interpretation,scope);
57453 Scope.targetTypeInterpretation(scope,typeInterpretation);
57454 Scope.maxNewElements(scope,0);
57455 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
57456 Type.name(type,"FunctionalInput class");
57457}
57458
57459/**
57460 * An element may be an instance of type "FunctionalInput class".
57461 */
57462private pattern mayInstanceOfFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
57463{
57464 find interpretation(problem,interpretation);
57465 PartialInterpretation.newElements(interpretation,element);
57466 neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element);
57467 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
57468 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
57469 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
57470 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
57471 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
57472 neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation);
57473 neg find isPrimitive(element);
57474} or {
57475 find interpretation(problem,interpretation);
57476 PartialInterpretation.openWorldElements(interpretation,element);
57477 neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element);
57478 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
57479 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
57480 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
57481 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
57482 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
57483 neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation);
57484 neg find isPrimitive(element);
57485} or
57486{ find mustInstanceOfFunctionalInput_class(problem,interpretation,element); }
57487/**
57488 * An element must be an instance of type "FunctionalOutput class".
57489 */
57490private pattern mustInstanceOfFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
57491 Type.name(type,"FunctionalOutput class");
57492 find directInstanceOf(problem,interpretation,element,type);
57493}
57494private pattern scopeDisallowsNewFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation) {
57495 find interpretation(problem,interpretation);
57496 PartialInterpretation.scopes(interpretation,scope);
57497 Scope.targetTypeInterpretation(scope,typeInterpretation);
57498 Scope.maxNewElements(scope,0);
57499 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
57500 Type.name(type,"FunctionalOutput class");
57501}
57502
57503/**
57504 * An element may be an instance of type "FunctionalOutput class".
57505 */
57506private pattern mayInstanceOfFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
57507{
57508 find interpretation(problem,interpretation);
57509 PartialInterpretation.newElements(interpretation,element);
57510 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
57511 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
57512 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
57513 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
57514 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
57515 neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element);
57516 neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation);
57517 neg find isPrimitive(element);
57518} or {
57519 find interpretation(problem,interpretation);
57520 PartialInterpretation.openWorldElements(interpretation,element);
57521 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
57522 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
57523 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
57524 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
57525 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
57526 neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element);
57527 neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation);
57528 neg find isPrimitive(element);
57529} or
57530{ find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); }
57531/**
57532 * An element must be an instance of type "FunctionalData class".
57533 */
57534private pattern mustInstanceOfFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
57535 Type.name(type,"FunctionalData class");
57536 find directInstanceOf(problem,interpretation,element,type);
57537}
57538private pattern scopeDisallowsNewFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation) {
57539 find interpretation(problem,interpretation);
57540 PartialInterpretation.scopes(interpretation,scope);
57541 Scope.targetTypeInterpretation(scope,typeInterpretation);
57542 Scope.maxNewElements(scope,0);
57543 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
57544 Type.name(type,"FunctionalData class");
57545}
57546
57547/**
57548 * An element may be an instance of type "FunctionalData class".
57549 */
57550private pattern mayInstanceOfFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
57551{
57552 find interpretation(problem,interpretation);
57553 PartialInterpretation.newElements(interpretation,element);
57554 neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element);
57555 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
57556 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
57557 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
57558 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
57559 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
57560 neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element);
57561 neg find scopeDisallowsNewFunctionalData_class(problem, interpretation);
57562 neg find isPrimitive(element);
57563} or {
57564 find interpretation(problem,interpretation);
57565 PartialInterpretation.openWorldElements(interpretation,element);
57566 neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element);
57567 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
57568 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
57569 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
57570 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
57571 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
57572 neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element);
57573 neg find scopeDisallowsNewFunctionalData_class(problem, interpretation);
57574 neg find isPrimitive(element);
57575} or
57576{ find mustInstanceOfFunctionalData_class(problem,interpretation,element); }
57577/**
57578 * An element must be an instance of type "FunctionType enum".
57579 */
57580private pattern mustInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
57581 Type.name(type,"FunctionType enum");
57582 find directInstanceOf(problem,interpretation,element,type);
57583}
57584private pattern scopeDisallowsNewFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation) {
57585 find interpretation(problem,interpretation);
57586 PartialInterpretation.scopes(interpretation,scope);
57587 Scope.targetTypeInterpretation(scope,typeInterpretation);
57588 Scope.maxNewElements(scope,0);
57589 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
57590 Type.name(type,"FunctionType enum");
57591}
57592
57593/**
57594 * An element may be an instance of type "FunctionType enum".
57595 */
57596private pattern mayInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
57597{ find mustInstanceOfFunctionType_enum(problem,interpretation,element); }
57598/**
57599 * An element must be an instance of type "FunctionalArchitectureModel class DefinedPart".
57600 */
57601private pattern mustInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
57602 Type.name(type,"FunctionalArchitectureModel class DefinedPart");
57603 find directInstanceOf(problem,interpretation,element,type);
57604}
57605private pattern scopeDisallowsNewFunctionalArchitectureModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) {
57606 find interpretation(problem,interpretation);
57607 PartialInterpretation.scopes(interpretation,scope);
57608 Scope.targetTypeInterpretation(scope,typeInterpretation);
57609 Scope.maxNewElements(scope,0);
57610 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
57611 Type.name(type,"FunctionalArchitectureModel class DefinedPart");
57612}
57613
57614/**
57615 * An element may be an instance of type "FunctionalArchitectureModel class DefinedPart".
57616 */
57617private pattern mayInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
57618{ find mustInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem,interpretation,element); }
57619/**
57620 * An element must be an instance of type "FunctionalArchitectureModel class UndefinedPart".
57621 */
57622private pattern mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
57623 Type.name(type,"FunctionalArchitectureModel class UndefinedPart");
57624 find directInstanceOf(problem,interpretation,element,type);
57625}
57626private pattern scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) {
57627 find interpretation(problem,interpretation);
57628 PartialInterpretation.scopes(interpretation,scope);
57629 Scope.targetTypeInterpretation(scope,typeInterpretation);
57630 Scope.maxNewElements(scope,0);
57631 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
57632 Type.name(type,"FunctionalArchitectureModel class UndefinedPart");
57633}
57634
57635/**
57636 * An element may be an instance of type "FunctionalArchitectureModel class UndefinedPart".
57637 */
57638private pattern mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
57639{
57640 find interpretation(problem,interpretation);
57641 PartialInterpretation.newElements(interpretation,element);
57642 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
57643 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
57644 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
57645 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
57646 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
57647 neg find scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem, interpretation);
57648 neg find isPrimitive(element);
57649} or {
57650 find interpretation(problem,interpretation);
57651 PartialInterpretation.openWorldElements(interpretation,element);
57652 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
57653 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
57654 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
57655 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
57656 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
57657 neg find scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem, interpretation);
57658 neg find isPrimitive(element);
57659} or
57660{ find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); }
57661
57662//////////
57663// 1.2 Relation Declaration Indexers
57664//////////
57665/**
57666 * Matcher for detecting tuples t where []interface reference FunctionalElement(source,target)
57667 */
57668private pattern mustInRelationinterface_reference_FunctionalElement(
57669 problem:LogicProblem, interpretation:PartialInterpretation,
57670 source: DefinedElement, target:DefinedElement)
57671{
57672 find interpretation(problem,interpretation);
57673 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
57674 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface reference FunctionalElement");
57675 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
57676 BinaryElementRelationLink.param1(link,source);
57677 BinaryElementRelationLink.param2(link,target);
57678}
57679/**
57680 * Matcher for detecting tuples t where <>interface reference FunctionalElement(source,target)
57681 */
57682private pattern mayInRelationinterface_reference_FunctionalElement(
57683 problem:LogicProblem, interpretation:PartialInterpretation,
57684 source: DefinedElement, target:DefinedElement)
57685{
57686 find interpretation(problem,interpretation);
57687 // The two endpoint of the link have to exist
57688 find mayExist(problem, interpretation, source);
57689 find mayExist(problem, interpretation, target);
57690 // Type consistency
57691 find mayInstanceOfFunctionalElement_class(problem,interpretation,source);
57692 find mayInstanceOfFunctionalInterface_class(problem,interpretation,target);
57693 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
57694 // the upper bound of the multiplicity should be considered.
57695 numberOfExistingReferences == count find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,_);
57696 check(numberOfExistingReferences < 1);
57697 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
57698 // the upper bound of the opposite reference multiplicity should be considered.
57699 numberOfExistingOppositeReferences == count find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,target,_);
57700 check(numberOfExistingOppositeReferences < 1);
57701 // The reference is containment, then a new reference cannot be create if:
57702 // 1. Multiple parents
57703 neg find mustContains4(problem,interpretation,_,target);
57704 // 2. Circle in the containment hierarchy
57705 neg find mustTransitiveContains(source,target);
57706} or {
57707 find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,target);
57708}
57709/**
57710 * Matcher for detecting tuples t where []model reference FunctionalElement(source,target)
57711 */
57712private pattern mustInRelationmodel_reference_FunctionalElement(
57713 problem:LogicProblem, interpretation:PartialInterpretation,
57714 source: DefinedElement, target:DefinedElement)
57715{
57716 find interpretation(problem,interpretation);
57717 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
57718 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement");
57719 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
57720 BinaryElementRelationLink.param1(link,source);
57721 BinaryElementRelationLink.param2(link,target);
57722}
57723/**
57724 * Matcher for detecting tuples t where <>model reference FunctionalElement(source,target)
57725 */
57726private pattern mayInRelationmodel_reference_FunctionalElement(
57727 problem:LogicProblem, interpretation:PartialInterpretation,
57728 source: DefinedElement, target:DefinedElement)
57729{
57730 find interpretation(problem,interpretation);
57731 // The two endpoint of the link have to exist
57732 find mayExist(problem, interpretation, source);
57733 find mayExist(problem, interpretation, target);
57734 // Type consistency
57735 find mayInstanceOfFunctionalElement_class(problem,interpretation,source);
57736 find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,target);
57737 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
57738 // the upper bound of the multiplicity should be considered.
57739 numberOfExistingReferences == count find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,source,_);
57740 check(numberOfExistingReferences < 1);
57741} or {
57742 find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,source,target);
57743}
57744/**
57745 * Matcher for detecting tuples t where []parent reference FunctionalElement(source,target)
57746 */
57747private pattern mustInRelationparent_reference_FunctionalElement(
57748 problem:LogicProblem, interpretation:PartialInterpretation,
57749 source: DefinedElement, target:DefinedElement)
57750{
57751 find interpretation(problem,interpretation);
57752 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
57753 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"parent reference FunctionalElement");
57754 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
57755 BinaryElementRelationLink.param1(link,source);
57756 BinaryElementRelationLink.param2(link,target);
57757}
57758/**
57759 * Matcher for detecting tuples t where <>parent reference FunctionalElement(source,target)
57760 */
57761private pattern mayInRelationparent_reference_FunctionalElement(
57762 problem:LogicProblem, interpretation:PartialInterpretation,
57763 source: DefinedElement, target:DefinedElement)
57764{
57765 find interpretation(problem,interpretation);
57766 // The two endpoint of the link have to exist
57767 find mayExist(problem, interpretation, source);
57768 find mayExist(problem, interpretation, target);
57769 // Type consistency
57770 find mayInstanceOfFunctionalElement_class(problem,interpretation,source);
57771 find mayInstanceOfFunction_class(problem,interpretation,target);
57772 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
57773 // the upper bound of the multiplicity should be considered.
57774 numberOfExistingReferences == count find mustInRelationparent_reference_FunctionalElement(problem,interpretation,source,_);
57775 check(numberOfExistingReferences < 1);
57776 // The eOpposite of the reference is containment, then a referene cannot be created if
57777 // 1. Multiple parents
57778 neg find mustContains4(problem,interpretation,source,_);
57779 // 2. Circle in the containment hierarchy
57780 neg find mustTransitiveContains(source,target);
57781} or {
57782 find mustInRelationparent_reference_FunctionalElement(problem,interpretation,source,target);
57783}
57784/**
57785 * Matcher for detecting tuples t where []rootElements reference FunctionalArchitectureModel(source,target)
57786 */
57787private pattern mustInRelationrootElements_reference_FunctionalArchitectureModel(
57788 problem:LogicProblem, interpretation:PartialInterpretation,
57789 source: DefinedElement, target:DefinedElement)
57790{
57791 find interpretation(problem,interpretation);
57792 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
57793 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"rootElements reference FunctionalArchitectureModel");
57794 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
57795 BinaryElementRelationLink.param1(link,source);
57796 BinaryElementRelationLink.param2(link,target);
57797}
57798/**
57799 * Matcher for detecting tuples t where <>rootElements reference FunctionalArchitectureModel(source,target)
57800 */
57801private pattern mayInRelationrootElements_reference_FunctionalArchitectureModel(
57802 problem:LogicProblem, interpretation:PartialInterpretation,
57803 source: DefinedElement, target:DefinedElement)
57804{
57805 find interpretation(problem,interpretation);
57806 // The two endpoint of the link have to exist
57807 find mayExist(problem, interpretation, source);
57808 find mayExist(problem, interpretation, target);
57809 // Type consistency
57810 find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,source);
57811 find mayInstanceOfFunctionalElement_class(problem,interpretation,target);
57812 // The reference is containment, then a new reference cannot be create if:
57813 // 1. Multiple parents
57814 neg find mustContains4(problem,interpretation,_,target);
57815 // 2. Circle in the containment hierarchy
57816 neg find mustTransitiveContains(source,target);
57817} or {
57818 find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,source,target);
57819}
57820/**
57821 * Matcher for detecting tuples t where []subElements reference Function(source,target)
57822 */
57823private pattern mustInRelationsubElements_reference_Function(
57824 problem:LogicProblem, interpretation:PartialInterpretation,
57825 source: DefinedElement, target:DefinedElement)
57826{
57827 find interpretation(problem,interpretation);
57828 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
57829 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"subElements reference Function");
57830 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
57831 BinaryElementRelationLink.param1(link,source);
57832 BinaryElementRelationLink.param2(link,target);
57833}
57834/**
57835 * Matcher for detecting tuples t where <>subElements reference Function(source,target)
57836 */
57837private pattern mayInRelationsubElements_reference_Function(
57838 problem:LogicProblem, interpretation:PartialInterpretation,
57839 source: DefinedElement, target:DefinedElement)
57840{
57841 find interpretation(problem,interpretation);
57842 // The two endpoint of the link have to exist
57843 find mayExist(problem, interpretation, source);
57844 find mayExist(problem, interpretation, target);
57845 // Type consistency
57846 find mayInstanceOfFunction_class(problem,interpretation,source);
57847 find mayInstanceOfFunctionalElement_class(problem,interpretation,target);
57848 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
57849 // the upper bound of the opposite reference multiplicity should be considered.
57850 numberOfExistingOppositeReferences == count find mustInRelationparent_reference_FunctionalElement(problem,interpretation,target,_);
57851 check(numberOfExistingOppositeReferences < 1);
57852 // The reference is containment, then a new reference cannot be create if:
57853 // 1. Multiple parents
57854 neg find mustContains4(problem,interpretation,_,target);
57855 // 2. Circle in the containment hierarchy
57856 neg find mustTransitiveContains(source,target);
57857} or {
57858 find mustInRelationsubElements_reference_Function(problem,interpretation,source,target);
57859}
57860/**
57861 * Matcher for detecting tuples t where []data reference FAMTerminator(source,target)
57862 */
57863private pattern mustInRelationdata_reference_FAMTerminator(
57864 problem:LogicProblem, interpretation:PartialInterpretation,
57865 source: DefinedElement, target:DefinedElement)
57866{
57867 find interpretation(problem,interpretation);
57868 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
57869 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"data reference FAMTerminator");
57870 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
57871 BinaryElementRelationLink.param1(link,source);
57872 BinaryElementRelationLink.param2(link,target);
57873}
57874/**
57875 * Matcher for detecting tuples t where <>data reference FAMTerminator(source,target)
57876 */
57877private pattern mayInRelationdata_reference_FAMTerminator(
57878 problem:LogicProblem, interpretation:PartialInterpretation,
57879 source: DefinedElement, target:DefinedElement)
57880{
57881 find interpretation(problem,interpretation);
57882 // The two endpoint of the link have to exist
57883 find mayExist(problem, interpretation, source);
57884 find mayExist(problem, interpretation, target);
57885 // Type consistency
57886 find mayInstanceOfFAMTerminator_class(problem,interpretation,source);
57887 find mayInstanceOfFunctionalData_class(problem,interpretation,target);
57888 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
57889 // the upper bound of the multiplicity should be considered.
57890 numberOfExistingReferences == count find mustInRelationdata_reference_FAMTerminator(problem,interpretation,source,_);
57891 check(numberOfExistingReferences < 1);
57892 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
57893 // the upper bound of the opposite reference multiplicity should be considered.
57894 numberOfExistingOppositeReferences == count find mustInRelationterminator_reference_FunctionalData(problem,interpretation,target,_);
57895 check(numberOfExistingOppositeReferences < 1);
57896 // The eOpposite of the reference is containment, then a referene cannot be created if
57897 // 1. Multiple parents
57898 neg find mustContains4(problem,interpretation,source,_);
57899 // 2. Circle in the containment hierarchy
57900 neg find mustTransitiveContains(source,target);
57901} or {
57902 find mustInRelationdata_reference_FAMTerminator(problem,interpretation,source,target);
57903}
57904/**
57905 * Matcher for detecting tuples t where []from reference InformationLink(source,target)
57906 */
57907private pattern mustInRelationfrom_reference_InformationLink(
57908 problem:LogicProblem, interpretation:PartialInterpretation,
57909 source: DefinedElement, target:DefinedElement)
57910{
57911 find interpretation(problem,interpretation);
57912 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
57913 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"from reference InformationLink");
57914 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
57915 BinaryElementRelationLink.param1(link,source);
57916 BinaryElementRelationLink.param2(link,target);
57917}
57918/**
57919 * Matcher for detecting tuples t where <>from reference InformationLink(source,target)
57920 */
57921private pattern mayInRelationfrom_reference_InformationLink(
57922 problem:LogicProblem, interpretation:PartialInterpretation,
57923 source: DefinedElement, target:DefinedElement)
57924{
57925 find interpretation(problem,interpretation);
57926 // The two endpoint of the link have to exist
57927 find mayExist(problem, interpretation, source);
57928 find mayExist(problem, interpretation, target);
57929 // Type consistency
57930 find mayInstanceOfInformationLink_class(problem,interpretation,source);
57931 find mayInstanceOfFunctionalOutput_class(problem,interpretation,target);
57932 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
57933 // the upper bound of the multiplicity should be considered.
57934 numberOfExistingReferences == count find mustInRelationfrom_reference_InformationLink(problem,interpretation,source,_);
57935 check(numberOfExistingReferences < 1);
57936 // The eOpposite of the reference is containment, then a referene cannot be created if
57937 // 1. Multiple parents
57938 neg find mustContains4(problem,interpretation,source,_);
57939 // 2. Circle in the containment hierarchy
57940 neg find mustTransitiveContains(source,target);
57941} or {
57942 find mustInRelationfrom_reference_InformationLink(problem,interpretation,source,target);
57943}
57944/**
57945 * Matcher for detecting tuples t where []to reference InformationLink(source,target)
57946 */
57947private pattern mustInRelationto_reference_InformationLink(
57948 problem:LogicProblem, interpretation:PartialInterpretation,
57949 source: DefinedElement, target:DefinedElement)
57950{
57951 find interpretation(problem,interpretation);
57952 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
57953 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"to reference InformationLink");
57954 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
57955 BinaryElementRelationLink.param1(link,source);
57956 BinaryElementRelationLink.param2(link,target);
57957}
57958/**
57959 * Matcher for detecting tuples t where <>to reference InformationLink(source,target)
57960 */
57961private pattern mayInRelationto_reference_InformationLink(
57962 problem:LogicProblem, interpretation:PartialInterpretation,
57963 source: DefinedElement, target:DefinedElement)
57964{
57965 find interpretation(problem,interpretation);
57966 // The two endpoint of the link have to exist
57967 find mayExist(problem, interpretation, source);
57968 find mayExist(problem, interpretation, target);
57969 // Type consistency
57970 find mayInstanceOfInformationLink_class(problem,interpretation,source);
57971 find mayInstanceOfFunctionalInput_class(problem,interpretation,target);
57972 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
57973 // the upper bound of the multiplicity should be considered.
57974 numberOfExistingReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,source,_);
57975 check(numberOfExistingReferences < 1);
57976} or {
57977 find mustInRelationto_reference_InformationLink(problem,interpretation,source,target);
57978}
57979/**
57980 * Matcher for detecting tuples t where []data reference FunctionalInterface(source,target)
57981 */
57982private pattern mustInRelationdata_reference_FunctionalInterface(
57983 problem:LogicProblem, interpretation:PartialInterpretation,
57984 source: DefinedElement, target:DefinedElement)
57985{
57986 find interpretation(problem,interpretation);
57987 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
57988 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"data reference FunctionalInterface");
57989 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
57990 BinaryElementRelationLink.param1(link,source);
57991 BinaryElementRelationLink.param2(link,target);
57992}
57993/**
57994 * Matcher for detecting tuples t where <>data reference FunctionalInterface(source,target)
57995 */
57996private pattern mayInRelationdata_reference_FunctionalInterface(
57997 problem:LogicProblem, interpretation:PartialInterpretation,
57998 source: DefinedElement, target:DefinedElement)
57999{
58000 find interpretation(problem,interpretation);
58001 // The two endpoint of the link have to exist
58002 find mayExist(problem, interpretation, source);
58003 find mayExist(problem, interpretation, target);
58004 // Type consistency
58005 find mayInstanceOfFunctionalInterface_class(problem,interpretation,source);
58006 find mayInstanceOfFunctionalData_class(problem,interpretation,target);
58007 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
58008 // the upper bound of the opposite reference multiplicity should be considered.
58009 numberOfExistingOppositeReferences == count find mustInRelationinterface_reference_FunctionalData(problem,interpretation,target,_);
58010 check(numberOfExistingOppositeReferences < 1);
58011 // The reference is containment, then a new reference cannot be create if:
58012 // 1. Multiple parents
58013 neg find mustContains4(problem,interpretation,_,target);
58014 // 2. Circle in the containment hierarchy
58015 neg find mustTransitiveContains(source,target);
58016} or {
58017 find mustInRelationdata_reference_FunctionalInterface(problem,interpretation,source,target);
58018}
58019/**
58020 * Matcher for detecting tuples t where []element reference FunctionalInterface(source,target)
58021 */
58022private pattern mustInRelationelement_reference_FunctionalInterface(
58023 problem:LogicProblem, interpretation:PartialInterpretation,
58024 source: DefinedElement, target:DefinedElement)
58025{
58026 find interpretation(problem,interpretation);
58027 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
58028 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"element reference FunctionalInterface");
58029 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
58030 BinaryElementRelationLink.param1(link,source);
58031 BinaryElementRelationLink.param2(link,target);
58032}
58033/**
58034 * Matcher for detecting tuples t where <>element reference FunctionalInterface(source,target)
58035 */
58036private pattern mayInRelationelement_reference_FunctionalInterface(
58037 problem:LogicProblem, interpretation:PartialInterpretation,
58038 source: DefinedElement, target:DefinedElement)
58039{
58040 find interpretation(problem,interpretation);
58041 // The two endpoint of the link have to exist
58042 find mayExist(problem, interpretation, source);
58043 find mayExist(problem, interpretation, target);
58044 // Type consistency
58045 find mayInstanceOfFunctionalInterface_class(problem,interpretation,source);
58046 find mayInstanceOfFunctionalElement_class(problem,interpretation,target);
58047 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
58048 // the upper bound of the multiplicity should be considered.
58049 numberOfExistingReferences == count find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,source,_);
58050 check(numberOfExistingReferences < 1);
58051 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
58052 // the upper bound of the opposite reference multiplicity should be considered.
58053 numberOfExistingOppositeReferences == count find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,target,_);
58054 check(numberOfExistingOppositeReferences < 1);
58055 // The eOpposite of the reference is containment, then a referene cannot be created if
58056 // 1. Multiple parents
58057 neg find mustContains4(problem,interpretation,source,_);
58058 // 2. Circle in the containment hierarchy
58059 neg find mustTransitiveContains(source,target);
58060} or {
58061 find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,source,target);
58062}
58063/**
58064 * Matcher for detecting tuples t where []IncomingLinks reference FunctionalInput(source,target)
58065 */
58066private pattern mustInRelationIncomingLinks_reference_FunctionalInput(
58067 problem:LogicProblem, interpretation:PartialInterpretation,
58068 source: DefinedElement, target:DefinedElement)
58069{
58070 find interpretation(problem,interpretation);
58071 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
58072 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"IncomingLinks reference FunctionalInput");
58073 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
58074 BinaryElementRelationLink.param1(link,source);
58075 BinaryElementRelationLink.param2(link,target);
58076}
58077/**
58078 * Matcher for detecting tuples t where <>IncomingLinks reference FunctionalInput(source,target)
58079 */
58080private pattern mayInRelationIncomingLinks_reference_FunctionalInput(
58081 problem:LogicProblem, interpretation:PartialInterpretation,
58082 source: DefinedElement, target:DefinedElement)
58083{
58084 find interpretation(problem,interpretation);
58085 // The two endpoint of the link have to exist
58086 find mayExist(problem, interpretation, source);
58087 find mayExist(problem, interpretation, target);
58088 // Type consistency
58089 find mayInstanceOfFunctionalInput_class(problem,interpretation,source);
58090 find mayInstanceOfInformationLink_class(problem,interpretation,target);
58091 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
58092 // the upper bound of the opposite reference multiplicity should be considered.
58093 numberOfExistingOppositeReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,target,_);
58094 check(numberOfExistingOppositeReferences < 1);
58095} or {
58096 find mustInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,source,target);
58097}
58098/**
58099 * Matcher for detecting tuples t where []outgoingLinks reference FunctionalOutput(source,target)
58100 */
58101private pattern mustInRelationoutgoingLinks_reference_FunctionalOutput(
58102 problem:LogicProblem, interpretation:PartialInterpretation,
58103 source: DefinedElement, target:DefinedElement)
58104{
58105 find interpretation(problem,interpretation);
58106 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
58107 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"outgoingLinks reference FunctionalOutput");
58108 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
58109 BinaryElementRelationLink.param1(link,source);
58110 BinaryElementRelationLink.param2(link,target);
58111}
58112/**
58113 * Matcher for detecting tuples t where <>outgoingLinks reference FunctionalOutput(source,target)
58114 */
58115private pattern mayInRelationoutgoingLinks_reference_FunctionalOutput(
58116 problem:LogicProblem, interpretation:PartialInterpretation,
58117 source: DefinedElement, target:DefinedElement)
58118{
58119 find interpretation(problem,interpretation);
58120 // The two endpoint of the link have to exist
58121 find mayExist(problem, interpretation, source);
58122 find mayExist(problem, interpretation, target);
58123 // Type consistency
58124 find mayInstanceOfFunctionalOutput_class(problem,interpretation,source);
58125 find mayInstanceOfInformationLink_class(problem,interpretation,target);
58126 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
58127 // the upper bound of the opposite reference multiplicity should be considered.
58128 numberOfExistingOppositeReferences == count find mustInRelationfrom_reference_InformationLink(problem,interpretation,target,_);
58129 check(numberOfExistingOppositeReferences < 1);
58130 // The reference is containment, then a new reference cannot be create if:
58131 // 1. Multiple parents
58132 neg find mustContains4(problem,interpretation,_,target);
58133 // 2. Circle in the containment hierarchy
58134 neg find mustTransitiveContains(source,target);
58135} or {
58136 find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,source,target);
58137}
58138/**
58139 * Matcher for detecting tuples t where []terminator reference FunctionalData(source,target)
58140 */
58141private pattern mustInRelationterminator_reference_FunctionalData(
58142 problem:LogicProblem, interpretation:PartialInterpretation,
58143 source: DefinedElement, target:DefinedElement)
58144{
58145 find interpretation(problem,interpretation);
58146 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
58147 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"terminator reference FunctionalData");
58148 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
58149 BinaryElementRelationLink.param1(link,source);
58150 BinaryElementRelationLink.param2(link,target);
58151}
58152/**
58153 * Matcher for detecting tuples t where <>terminator reference FunctionalData(source,target)
58154 */
58155private pattern mayInRelationterminator_reference_FunctionalData(
58156 problem:LogicProblem, interpretation:PartialInterpretation,
58157 source: DefinedElement, target:DefinedElement)
58158{
58159 find interpretation(problem,interpretation);
58160 // The two endpoint of the link have to exist
58161 find mayExist(problem, interpretation, source);
58162 find mayExist(problem, interpretation, target);
58163 // Type consistency
58164 find mayInstanceOfFunctionalData_class(problem,interpretation,source);
58165 find mayInstanceOfFAMTerminator_class(problem,interpretation,target);
58166 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
58167 // the upper bound of the multiplicity should be considered.
58168 numberOfExistingReferences == count find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,_);
58169 check(numberOfExistingReferences < 1);
58170 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
58171 // the upper bound of the opposite reference multiplicity should be considered.
58172 numberOfExistingOppositeReferences == count find mustInRelationdata_reference_FAMTerminator(problem,interpretation,target,_);
58173 check(numberOfExistingOppositeReferences < 1);
58174 // The reference is containment, then a new reference cannot be create if:
58175 // 1. Multiple parents
58176 neg find mustContains4(problem,interpretation,_,target);
58177 // 2. Circle in the containment hierarchy
58178 neg find mustTransitiveContains(source,target);
58179} or {
58180 find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,target);
58181}
58182/**
58183 * Matcher for detecting tuples t where []interface reference FunctionalData(source,target)
58184 */
58185private pattern mustInRelationinterface_reference_FunctionalData(
58186 problem:LogicProblem, interpretation:PartialInterpretation,
58187 source: DefinedElement, target:DefinedElement)
58188{
58189 find interpretation(problem,interpretation);
58190 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
58191 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface reference FunctionalData");
58192 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
58193 BinaryElementRelationLink.param1(link,source);
58194 BinaryElementRelationLink.param2(link,target);
58195}
58196/**
58197 * Matcher for detecting tuples t where <>interface reference FunctionalData(source,target)
58198 */
58199private pattern mayInRelationinterface_reference_FunctionalData(
58200 problem:LogicProblem, interpretation:PartialInterpretation,
58201 source: DefinedElement, target:DefinedElement)
58202{
58203 find interpretation(problem,interpretation);
58204 // The two endpoint of the link have to exist
58205 find mayExist(problem, interpretation, source);
58206 find mayExist(problem, interpretation, target);
58207 // Type consistency
58208 find mayInstanceOfFunctionalData_class(problem,interpretation,source);
58209 find mayInstanceOfFunctionalInterface_class(problem,interpretation,target);
58210 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
58211 // the upper bound of the multiplicity should be considered.
58212 numberOfExistingReferences == count find mustInRelationinterface_reference_FunctionalData(problem,interpretation,source,_);
58213 check(numberOfExistingReferences < 1);
58214 // The eOpposite of the reference is containment, then a referene cannot be created if
58215 // 1. Multiple parents
58216 neg find mustContains4(problem,interpretation,source,_);
58217 // 2. Circle in the containment hierarchy
58218 neg find mustTransitiveContains(source,target);
58219} or {
58220 find mustInRelationinterface_reference_FunctionalData(problem,interpretation,source,target);
58221}
58222/**
58223 * Matcher for detecting tuples t where []type attribute Function(source,target)
58224 */
58225private pattern mustInRelationtype_attribute_Function(
58226 problem:LogicProblem, interpretation:PartialInterpretation,
58227 source: DefinedElement, target:DefinedElement)
58228{
58229 find interpretation(problem,interpretation);
58230 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
58231 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function");
58232 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
58233 BinaryElementRelationLink.param1(link,source);
58234 BinaryElementRelationLink.param2(link,target);
58235}
58236/**
58237 * Matcher for detecting tuples t where <>type attribute Function(source,target)
58238 */
58239private pattern mayInRelationtype_attribute_Function(
58240 problem:LogicProblem, interpretation:PartialInterpretation,
58241 source: DefinedElement, target:DefinedElement)
58242{
58243 find interpretation(problem,interpretation);
58244 // The two endpoint of the link have to exist
58245 find mayExist(problem, interpretation, source);
58246 find mayExist(problem, interpretation, target);
58247 // Type consistency
58248 find mayInstanceOfFunction_class(problem,interpretation,source);
58249 find mayInstanceOfFunctionType_enum(problem,interpretation,target);
58250 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
58251 // the upper bound of the multiplicity should be considered.
58252 numberOfExistingReferences == count find mustInRelationtype_attribute_Function(problem,interpretation,source,_);
58253 check(numberOfExistingReferences < 1);
58254} or {
58255 find mustInRelationtype_attribute_Function(problem,interpretation,source,target);
58256}
58257
58258//////////
58259// 1.3 Relation Definition Indexers
58260//////////
58261
58262//////////
58263// 1.4 Containment Indexer
58264//////////
58265private pattern mustContains2(source: DefinedElement, target: DefinedElement) {
58266 find mustContains4(_,_,source,target);
58267}
58268
58269private pattern mustContains4(problem:LogicProblem, interpretation:PartialInterpretation,
58270 source: DefinedElement, target: DefinedElement)
58271 { find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,target); }or
58272
58273 { find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,source,target); }or
58274
58275 { find mustInRelationsubElements_reference_Function(problem,interpretation,source,target); }or
58276
58277 { find mustInRelationdata_reference_FunctionalInterface(problem,interpretation,source,target); }or
58278
58279 { find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,source,target); }or
58280
58281 { find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,target); }
58282
58283private pattern mustTransitiveContains(source,target) {
58284 find mustContains2+(source,target);
58285}
58286
58287//////////
58288// 2. Invalidation Indexers
58289//////////
58290// 2.1 Invalidated by WF Queries
58291//////////
58292
58293//////////
58294// 3. Unfinishedness Indexers
58295//////////
58296// 3.1 Unfinishedness Measured by Multiplicity
58297//////////
58298pattern unfinishedLowerMultiplicity_model_reference_FunctionalElement(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) {
58299 find interpretation(problem,interpretation);
58300 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
58301 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement");
58302 find mustInstanceOfFunctionalElement_class(problem,interpretation,object);
58303 numberOfExistingReferences == count find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,object,_);
58304 check(numberOfExistingReferences < 1);
58305 missingMultiplicity == eval(1-numberOfExistingReferences);
58306}
58307pattern unfinishedLowerMultiplicity_to_reference_InformationLink(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) {
58308 find interpretation(problem,interpretation);
58309 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
58310 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"to reference InformationLink");
58311 find mustInstanceOfInformationLink_class(problem,interpretation,object);
58312 numberOfExistingReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,object,_);
58313 check(numberOfExistingReferences < 1);
58314 missingMultiplicity == eval(1-numberOfExistingReferences);
58315}
58316pattern unfinishedLowerMultiplicity_type_attribute_Function(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) {
58317 find interpretation(problem,interpretation);
58318 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
58319 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function");
58320 find mustInstanceOfFunction_class(problem,interpretation,object);
58321 numberOfExistingReferences == count find mustInRelationtype_attribute_Function(problem,interpretation,object,_);
58322 check(numberOfExistingReferences < 1);
58323 missingMultiplicity == eval(1-numberOfExistingReferences);
58324}
58325
58326//////////
58327// 3.2 Unfinishedness Measured by WF Queries
58328//////////
58329
58330//////////
58331// 4. Refinement Indexers
58332//////////
58333// 4.1 Object constructors
58334//////////
58335private pattern hasElementInContainment(problem:LogicProblem, interpretation:PartialInterpretation)
58336{
58337 find interpretation(problem,interpretation);
58338 find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,root);
58339 find mustExist(problem, interpretation, root);
58340}or{
58341 find interpretation(problem,interpretation);
58342 find mustInstanceOfFunctionalData_class(problem,interpretation,root);
58343 find mustExist(problem, interpretation, root);
58344}or{
58345 find interpretation(problem,interpretation);
58346 find mustInstanceOfFunction_class(problem,interpretation,root);
58347 find mustExist(problem, interpretation, root);
58348}or{
58349 find interpretation(problem,interpretation);
58350 find mustInstanceOfFAMTerminator_class(problem,interpretation,root);
58351 find mustExist(problem, interpretation, root);
58352}or{
58353 find interpretation(problem,interpretation);
58354 find mustInstanceOfInformationLink_class(problem,interpretation,root);
58355 find mustExist(problem, interpretation, root);
58356}or{
58357 find interpretation(problem,interpretation);
58358 find mustInstanceOfFunctionalInterface_class(problem,interpretation,root);
58359 find mustExist(problem, interpretation, root);
58360}or{
58361 find interpretation(problem,interpretation);
58362 find mustInstanceOfFunctionalElement_class(problem,interpretation,root);
58363 find mustExist(problem, interpretation, root);
58364}or{
58365 find interpretation(problem,interpretation);
58366 find mustInstanceOfFunctionalInput_class(problem,interpretation,root);
58367 find mustExist(problem, interpretation, root);
58368}or{
58369 find interpretation(problem,interpretation);
58370 find mustInstanceOfFunctionalOutput_class(problem,interpretation,root);
58371 find mustExist(problem, interpretation, root);
58372}or{
58373 find interpretation(problem,interpretation);
58374 find mustInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem,interpretation,root);
58375 find mustExist(problem, interpretation, root);
58376}or{
58377 find interpretation(problem,interpretation);
58378 find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,root);
58379 find mustExist(problem, interpretation, root);
58380}
58381pattern createObject_FunctionalOutput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData(
58382 problem:LogicProblem, interpretation:PartialInterpretation,
58383 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
58384 container:DefinedElement)
58385{
58386 find interpretation(problem,interpretation);
58387 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
58388 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class");
58389 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
58390 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface");
58391 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
58392 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData");
58393 find mustInstanceOfFunctionalInterface_class(problem,interpretation,container);
58394 find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject);
58395 find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject);
58396 find mustExist(problem, interpretation, container);
58397 neg find mustExist(problem, interpretation, newObject);
58398}
58399pattern createObject_FunctionalOutput_class(
58400 problem:LogicProblem, interpretation:PartialInterpretation,
58401 typeInterpretation:PartialComplexTypeInterpretation)
58402{
58403 find interpretation(problem,interpretation);
58404 neg find hasElementInContainment(problem,interpretation);
58405 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
58406 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class");
58407 find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject);
58408 find mayExist(problem, interpretation, newObject);
58409 neg find mustExist(problem, interpretation, newObject);
58410}
58411pattern createObject_FAMTerminator_class_by_terminator_reference_FunctionalData_with_data_reference_FAMTerminator(
58412 problem:LogicProblem, interpretation:PartialInterpretation,
58413 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
58414 container:DefinedElement)
58415{
58416 find interpretation(problem,interpretation);
58417 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
58418 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class");
58419 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
58420 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"terminator reference FunctionalData");
58421 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
58422 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"data reference FAMTerminator");
58423 find mustInstanceOfFunctionalData_class(problem,interpretation,container);
58424 find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject);
58425 find mayInRelationterminator_reference_FunctionalData(problem,interpretation,container,newObject);
58426 find mustExist(problem, interpretation, container);
58427 neg find mustExist(problem, interpretation, newObject);
58428}
58429pattern createObject_FAMTerminator_class(
58430 problem:LogicProblem, interpretation:PartialInterpretation,
58431 typeInterpretation:PartialComplexTypeInterpretation)
58432{
58433 find interpretation(problem,interpretation);
58434 neg find hasElementInContainment(problem,interpretation);
58435 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
58436 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class");
58437 find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject);
58438 find mayExist(problem, interpretation, newObject);
58439 neg find mustExist(problem, interpretation, newObject);
58440}
58441pattern createObject_FunctionalInterface_class_by_interface_reference_FunctionalElement_with_element_reference_FunctionalInterface(
58442 problem:LogicProblem, interpretation:PartialInterpretation,
58443 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
58444 container:DefinedElement)
58445{
58446 find interpretation(problem,interpretation);
58447 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
58448 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class");
58449 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
58450 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"interface reference FunctionalElement");
58451 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
58452 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"element reference FunctionalInterface");
58453 find mustInstanceOfFunctionalElement_class(problem,interpretation,container);
58454 find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject);
58455 find mayInRelationinterface_reference_FunctionalElement(problem,interpretation,container,newObject);
58456 find mustExist(problem, interpretation, container);
58457 neg find mustExist(problem, interpretation, newObject);
58458}
58459pattern createObject_FunctionalInterface_class(
58460 problem:LogicProblem, interpretation:PartialInterpretation,
58461 typeInterpretation:PartialComplexTypeInterpretation)
58462{
58463 find interpretation(problem,interpretation);
58464 neg find hasElementInContainment(problem,interpretation);
58465 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
58466 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class");
58467 find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject);
58468 find mayExist(problem, interpretation, newObject);
58469 neg find mustExist(problem, interpretation, newObject);
58470}
58471pattern createObject_FunctionalArchitectureModel_class_UndefinedPart(
58472 problem:LogicProblem, interpretation:PartialInterpretation,
58473 typeInterpretation:PartialComplexTypeInterpretation)
58474{
58475 find interpretation(problem,interpretation);
58476 neg find hasElementInContainment(problem,interpretation);
58477 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
58478 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalArchitectureModel class UndefinedPart");
58479 find mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,newObject);
58480 find mayExist(problem, interpretation, newObject);
58481 neg find mustExist(problem, interpretation, newObject);
58482}
58483pattern createObject_Function_class_by_rootElements_reference_FunctionalArchitectureModel(
58484 problem:LogicProblem, interpretation:PartialInterpretation,
58485 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
58486 container:DefinedElement)
58487{
58488 find interpretation(problem,interpretation);
58489 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
58490 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class");
58491 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
58492 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"rootElements reference FunctionalArchitectureModel");
58493 find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,container);
58494 find mayInstanceOfFunction_class(problem,interpretation,newObject);
58495 find mayInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,container,newObject);
58496 find mustExist(problem, interpretation, container);
58497 neg find mustExist(problem, interpretation, newObject);
58498}
58499pattern createObject_Function_class_by_subElements_reference_Function_with_parent_reference_FunctionalElement(
58500 problem:LogicProblem, interpretation:PartialInterpretation,
58501 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
58502 container:DefinedElement)
58503{
58504 find interpretation(problem,interpretation);
58505 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
58506 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class");
58507 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
58508 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"subElements reference Function");
58509 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
58510 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"parent reference FunctionalElement");
58511 find mustInstanceOfFunction_class(problem,interpretation,container);
58512 find mayInstanceOfFunction_class(problem,interpretation,newObject);
58513 find mayInRelationsubElements_reference_Function(problem,interpretation,container,newObject);
58514 find mustExist(problem, interpretation, container);
58515 neg find mustExist(problem, interpretation, newObject);
58516}
58517pattern createObject_Function_class(
58518 problem:LogicProblem, interpretation:PartialInterpretation,
58519 typeInterpretation:PartialComplexTypeInterpretation)
58520{
58521 find interpretation(problem,interpretation);
58522 neg find hasElementInContainment(problem,interpretation);
58523 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
58524 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class");
58525 find mayInstanceOfFunction_class(problem,interpretation,newObject);
58526 find mayExist(problem, interpretation, newObject);
58527 neg find mustExist(problem, interpretation, newObject);
58528}
58529pattern createObject_InformationLink_class_by_outgoingLinks_reference_FunctionalOutput_with_from_reference_InformationLink(
58530 problem:LogicProblem, interpretation:PartialInterpretation,
58531 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
58532 container:DefinedElement)
58533{
58534 find interpretation(problem,interpretation);
58535 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
58536 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class");
58537 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
58538 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"outgoingLinks reference FunctionalOutput");
58539 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
58540 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"from reference InformationLink");
58541 find mustInstanceOfFunctionalOutput_class(problem,interpretation,container);
58542 find mayInstanceOfInformationLink_class(problem,interpretation,newObject);
58543 find mayInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,container,newObject);
58544 find mustExist(problem, interpretation, container);
58545 neg find mustExist(problem, interpretation, newObject);
58546}
58547pattern createObject_InformationLink_class(
58548 problem:LogicProblem, interpretation:PartialInterpretation,
58549 typeInterpretation:PartialComplexTypeInterpretation)
58550{
58551 find interpretation(problem,interpretation);
58552 neg find hasElementInContainment(problem,interpretation);
58553 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
58554 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class");
58555 find mayInstanceOfInformationLink_class(problem,interpretation,newObject);
58556 find mayExist(problem, interpretation, newObject);
58557 neg find mustExist(problem, interpretation, newObject);
58558}
58559pattern createObject_FunctionalInput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData(
58560 problem:LogicProblem, interpretation:PartialInterpretation,
58561 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
58562 container:DefinedElement)
58563{
58564 find interpretation(problem,interpretation);
58565 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
58566 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class");
58567 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
58568 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface");
58569 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
58570 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData");
58571 find mustInstanceOfFunctionalInterface_class(problem,interpretation,container);
58572 find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject);
58573 find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject);
58574 find mustExist(problem, interpretation, container);
58575 neg find mustExist(problem, interpretation, newObject);
58576}
58577pattern createObject_FunctionalInput_class(
58578 problem:LogicProblem, interpretation:PartialInterpretation,
58579 typeInterpretation:PartialComplexTypeInterpretation)
58580{
58581 find interpretation(problem,interpretation);
58582 neg find hasElementInContainment(problem,interpretation);
58583 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
58584 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class");
58585 find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject);
58586 find mayExist(problem, interpretation, newObject);
58587 neg find mustExist(problem, interpretation, newObject);
58588}
58589
58590//////////
58591// 4.2 Type refinement
58592//////////
58593pattern refineTypeTo_FunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
58594 find interpretation(problem,interpretation);
58595 PartialInterpretation.newElements(interpretation,element);
58596 find mayInstanceOfFunctionalOutput_class(problem,interpretation,element);
58597 neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element);
58598 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
58599 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
58600 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
58601 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
58602 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
58603 neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element);
58604}
58605pattern refineTypeTo_FAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
58606 find interpretation(problem,interpretation);
58607 PartialInterpretation.newElements(interpretation,element);
58608 find mayInstanceOfFAMTerminator_class(problem,interpretation,element);
58609 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
58610 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
58611 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
58612 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
58613 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
58614 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
58615}
58616pattern refineTypeTo_FunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
58617 find interpretation(problem,interpretation);
58618 PartialInterpretation.newElements(interpretation,element);
58619 find mayInstanceOfFunctionalInterface_class(problem,interpretation,element);
58620 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
58621 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
58622 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
58623 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
58624 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
58625 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
58626}
58627pattern refineTypeTo_FunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
58628 find interpretation(problem,interpretation);
58629 PartialInterpretation.newElements(interpretation,element);
58630 find mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element);
58631 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
58632 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
58633 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
58634 neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element);
58635 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
58636 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
58637}
58638pattern refineTypeTo_Function_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
58639 find interpretation(problem,interpretation);
58640 PartialInterpretation.newElements(interpretation,element);
58641 find mayInstanceOfFunction_class(problem,interpretation,element);
58642 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
58643 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
58644 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
58645 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
58646 neg find mustInstanceOfFunction_class(problem,interpretation,element);
58647 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
58648}
58649pattern refineTypeTo_InformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
58650 find interpretation(problem,interpretation);
58651 PartialInterpretation.newElements(interpretation,element);
58652 find mayInstanceOfInformationLink_class(problem,interpretation,element);
58653 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
58654 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
58655 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
58656 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
58657 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
58658 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
58659}
58660pattern refineTypeTo_FunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
58661 find interpretation(problem,interpretation);
58662 PartialInterpretation.newElements(interpretation,element);
58663 find mayInstanceOfFunctionalInput_class(problem,interpretation,element);
58664 neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element);
58665 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
58666 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
58667 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
58668 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
58669 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
58670 neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element);
58671}
58672
58673//////////
58674// 4.3 Relation refinement
58675//////////
58676pattern refineRelation_model_reference_FunctionalElement(
58677 problem:LogicProblem, interpretation:PartialInterpretation,
58678 relationIterpretation:PartialRelationInterpretation,
58679 from: DefinedElement, to: DefinedElement)
58680{
58681 find interpretation(problem,interpretation);
58682 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
58683 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement");
58684 find mustExist(problem, interpretation, from);
58685 find mustExist(problem, interpretation, to);
58686 find mustInstanceOfFunctionalElement_class(problem,interpretation,from);
58687 find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,to);
58688 find mayInRelationmodel_reference_FunctionalElement(problem,interpretation,from,to);
58689 neg find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,from,to);
58690}
58691pattern refineRelation_IncomingLinks_reference_FunctionalInput_and_to_reference_InformationLink(
58692 problem:LogicProblem, interpretation:PartialInterpretation,
58693 relationIterpretation:PartialRelationInterpretation, oppositeInterpretation:PartialRelationInterpretation,
58694 from: DefinedElement, to: DefinedElement)
58695{
58696 find interpretation(problem,interpretation);
58697 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
58698 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"IncomingLinks reference FunctionalInput");
58699 PartialInterpretation.partialrelationinterpretation(interpretation,oppositeInterpretation);
58700 PartialRelationInterpretation.interpretationOf.name(oppositeInterpretation,"to reference InformationLink");
58701 find mustExist(problem, interpretation, from);
58702 find mustExist(problem, interpretation, to);
58703 find mustInstanceOfFunctionalInput_class(problem,interpretation,from);
58704 find mustInstanceOfInformationLink_class(problem,interpretation,to);
58705 find mayInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,from,to);
58706 neg find mustInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,from,to);
58707}
58708pattern refineRelation_type_attribute_Function(
58709 problem:LogicProblem, interpretation:PartialInterpretation,
58710 relationIterpretation:PartialRelationInterpretation,
58711 from: DefinedElement, to: DefinedElement)
58712{
58713 find interpretation(problem,interpretation);
58714 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
58715 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function");
58716 find mustExist(problem, interpretation, from);
58717 find mustExist(problem, interpretation, to);
58718 find mustInstanceOfFunction_class(problem,interpretation,from);
58719 find mustInstanceOfFunctionType_enum(problem,interpretation,to);
58720 find mayInRelationtype_attribute_Function(problem,interpretation,from,to);
58721 neg find mustInRelationtype_attribute_Function(problem,interpretation,from,to);
58722}
58723import epackage "http://www.bme.hu/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage"
58724import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/problem"
58725import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/language"
58726
58727//////////
58728// 0. Util
58729//////////
58730private pattern interpretation(problem:LogicProblem, interpretation:PartialInterpretation) {
58731 PartialInterpretation.problem(interpretation,problem);
58732}
58733
58734/////////////////////////
58735// 0.1 Existence
58736/////////////////////////
58737private pattern mustExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
58738 find interpretation(problem,interpretation);
58739 LogicProblem.elements(problem,element);
58740} or {
58741 find interpretation(problem,interpretation);
58742 PartialInterpretation.newElements(interpretation,element);
58743}
58744
58745private pattern mayExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
58746 find mustExist(problem,interpretation,element);
58747} or {
58748 find interpretation(problem,interpretation);
58749 neg find elementCloseWorld(element);
58750 PartialInterpretation.openWorldElements(interpretation,element);
58751}
58752
58753private pattern elementCloseWorld(element:DefinedElement) {
58754 PartialInterpretation.openWorldElements(i,element);
58755 PartialInterpretation.maxNewElements(i,0);
58756} or {
58757 Scope.targetTypeInterpretation(scope,interpretation);
58758 PartialTypeInterpratation.elements(interpretation,element);
58759 Scope.maxNewElements(scope,0);
58760}
58761
58762////////////////////////
58763// 0.2 Equivalence
58764////////////////////////
58765pattern mayEquivalent(problem:LogicProblem, interpretation:PartialInterpretation, a: DefinedElement, b: DefinedElement) {
58766 find mayExist(problem,interpretation,a);
58767 find mayExist(problem,interpretation,b);
58768 a == b;
58769}
58770
58771////////////////////////
58772// 0.3 Required Patterns by TypeIndexer
58773////////////////////////
58774private pattern typeInterpretation(problem:LogicProblem, interpretation:PartialInterpretation, type:TypeDeclaration, typeInterpretation:PartialComplexTypeInterpretation) {
58775 find interpretation(problem,interpretation);
58776 LogicProblem.types(problem,type);
58777 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
58778 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
58779}
58780
58781private pattern directInstanceOf(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement, type:Type) {
58782 find interpretation(problem,interpretation);
58783 LogicProblem.types(problem,type);
58784 TypeDefinition.elements(type,element);
58785} or {
58786 find interpretation(problem,interpretation);
58787 find typeInterpretation(problem,interpretation,type,typeInterpretation);
58788 PartialComplexTypeInterpretation.elements(typeInterpretation,element);
58789}
58790
58791private pattern isPrimitive(element: PrimitiveElement) {
58792 PrimitiveElement(element);
58793}
58794
58795//////////
58796// 1. Problem-Specific Base Indexers
58797//////////
58798// 1.1 Type Indexers
58799//////////
58800// 1.1.1 primitive Type Indexers
58801//////////
58802
58803//////////
58804// 1.1.2 domain-specific Type Indexers
58805//////////
58806/**
58807 * An element must be an instance of type "EAttribute class".
58808 */
58809private pattern mustInstanceOfEAttribute_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
58810 Type.name(type,"EAttribute class");
58811 find directInstanceOf(problem,interpretation,element,type);
58812}
58813private pattern scopeDisallowsNewEAttribute_class(problem:LogicProblem, interpretation:PartialInterpretation) {
58814 find interpretation(problem,interpretation);
58815 PartialInterpretation.scopes(interpretation,scope);
58816 Scope.targetTypeInterpretation(scope,typeInterpretation);
58817 Scope.maxNewElements(scope,0);
58818 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
58819 Type.name(type,"EAttribute class");
58820}
58821
58822/**
58823 * An element may be an instance of type "EAttribute class".
58824 */
58825private pattern mayInstanceOfEAttribute_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
58826{
58827 find interpretation(problem,interpretation);
58828 PartialInterpretation.newElements(interpretation,element);
58829 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
58830 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
58831 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
58832 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
58833 neg find mustInstanceOfEReference_class(problem,interpretation,element);
58834 neg find mustInstanceOfEObject_class(problem,interpretation,element);
58835 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
58836 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
58837 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
58838 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
58839 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
58840 neg find scopeDisallowsNewEAttribute_class(problem, interpretation);
58841 neg find isPrimitive(element);
58842} or {
58843 find interpretation(problem,interpretation);
58844 PartialInterpretation.openWorldElements(interpretation,element);
58845 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
58846 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
58847 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
58848 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
58849 neg find mustInstanceOfEReference_class(problem,interpretation,element);
58850 neg find mustInstanceOfEObject_class(problem,interpretation,element);
58851 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
58852 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
58853 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
58854 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
58855 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
58856 neg find scopeDisallowsNewEAttribute_class(problem, interpretation);
58857 neg find isPrimitive(element);
58858} or
58859{ find mustInstanceOfEAttribute_class(problem,interpretation,element); }
58860/**
58861 * An element must be an instance of type "EAnnotation class".
58862 */
58863private pattern mustInstanceOfEAnnotation_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
58864 Type.name(type,"EAnnotation class");
58865 find directInstanceOf(problem,interpretation,element,type);
58866}
58867private pattern scopeDisallowsNewEAnnotation_class(problem:LogicProblem, interpretation:PartialInterpretation) {
58868 find interpretation(problem,interpretation);
58869 PartialInterpretation.scopes(interpretation,scope);
58870 Scope.targetTypeInterpretation(scope,typeInterpretation);
58871 Scope.maxNewElements(scope,0);
58872 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
58873 Type.name(type,"EAnnotation class");
58874}
58875
58876/**
58877 * An element may be an instance of type "EAnnotation class".
58878 */
58879private pattern mayInstanceOfEAnnotation_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
58880{
58881 find interpretation(problem,interpretation);
58882 PartialInterpretation.newElements(interpretation,element);
58883 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
58884 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
58885 neg find mustInstanceOfEObject_class(problem,interpretation,element);
58886 neg find mustInstanceOfENamedElement_class(problem,interpretation,element);
58887 neg find scopeDisallowsNewEAnnotation_class(problem, interpretation);
58888 neg find isPrimitive(element);
58889} or {
58890 find interpretation(problem,interpretation);
58891 PartialInterpretation.openWorldElements(interpretation,element);
58892 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
58893 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
58894 neg find mustInstanceOfEObject_class(problem,interpretation,element);
58895 neg find mustInstanceOfENamedElement_class(problem,interpretation,element);
58896 neg find scopeDisallowsNewEAnnotation_class(problem, interpretation);
58897 neg find isPrimitive(element);
58898} or
58899{ find mustInstanceOfEAnnotation_class(problem,interpretation,element); }
58900/**
58901 * An element must be an instance of type "EClass class".
58902 */
58903private pattern mustInstanceOfEClass_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
58904 Type.name(type,"EClass class");
58905 find directInstanceOf(problem,interpretation,element,type);
58906}
58907private pattern scopeDisallowsNewEClass_class(problem:LogicProblem, interpretation:PartialInterpretation) {
58908 find interpretation(problem,interpretation);
58909 PartialInterpretation.scopes(interpretation,scope);
58910 Scope.targetTypeInterpretation(scope,typeInterpretation);
58911 Scope.maxNewElements(scope,0);
58912 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
58913 Type.name(type,"EClass class");
58914}
58915
58916/**
58917 * An element may be an instance of type "EClass class".
58918 */
58919private pattern mayInstanceOfEClass_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
58920{
58921 find interpretation(problem,interpretation);
58922 PartialInterpretation.newElements(interpretation,element);
58923 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
58924 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
58925 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
58926 neg find mustInstanceOfEObject_class(problem,interpretation,element);
58927 neg find mustInstanceOfEDataType_class(problem,interpretation,element);
58928 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
58929 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
58930 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
58931 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
58932 neg find scopeDisallowsNewEClass_class(problem, interpretation);
58933 neg find isPrimitive(element);
58934} or {
58935 find interpretation(problem,interpretation);
58936 PartialInterpretation.openWorldElements(interpretation,element);
58937 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
58938 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
58939 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
58940 neg find mustInstanceOfEObject_class(problem,interpretation,element);
58941 neg find mustInstanceOfEDataType_class(problem,interpretation,element);
58942 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
58943 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
58944 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
58945 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
58946 neg find scopeDisallowsNewEClass_class(problem, interpretation);
58947 neg find isPrimitive(element);
58948} or
58949{ find mustInstanceOfEClass_class(problem,interpretation,element); }
58950/**
58951 * An element must be an instance of type "EClassifier class".
58952 */
58953private pattern mustInstanceOfEClassifier_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
58954 Type.name(type,"EClassifier class");
58955 find directInstanceOf(problem,interpretation,element,type);
58956}
58957private pattern scopeDisallowsNewEClassifier_class(problem:LogicProblem, interpretation:PartialInterpretation) {
58958 find interpretation(problem,interpretation);
58959 PartialInterpretation.scopes(interpretation,scope);
58960 Scope.targetTypeInterpretation(scope,typeInterpretation);
58961 Scope.maxNewElements(scope,0);
58962 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
58963 Type.name(type,"EClassifier class");
58964}
58965
58966/**
58967 * An element may be an instance of type "EClassifier class".
58968 */
58969private pattern mayInstanceOfEClassifier_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
58970{
58971 find interpretation(problem,interpretation);
58972 PartialInterpretation.newElements(interpretation,element);
58973 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
58974 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
58975 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
58976 neg find mustInstanceOfEObject_class(problem,interpretation,element);
58977 neg find mustInstanceOfEDataType_class(problem,interpretation,element);
58978 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
58979 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
58980 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
58981 neg find mustInstanceOfEClass_class(problem,interpretation,element);
58982 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
58983 neg find scopeDisallowsNewEClassifier_class(problem, interpretation);
58984 neg find isPrimitive(element);
58985} or {
58986 find interpretation(problem,interpretation);
58987 PartialInterpretation.openWorldElements(interpretation,element);
58988 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
58989 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
58990 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
58991 neg find mustInstanceOfEObject_class(problem,interpretation,element);
58992 neg find mustInstanceOfEDataType_class(problem,interpretation,element);
58993 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
58994 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
58995 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
58996 neg find mustInstanceOfEClass_class(problem,interpretation,element);
58997 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
58998 neg find scopeDisallowsNewEClassifier_class(problem, interpretation);
58999 neg find isPrimitive(element);
59000} or
59001{ find mustInstanceOfEClassifier_class(problem,interpretation,element); }
59002/**
59003 * An element must be an instance of type "EDataType class".
59004 */
59005private pattern mustInstanceOfEDataType_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
59006 Type.name(type,"EDataType class");
59007 find directInstanceOf(problem,interpretation,element,type);
59008}
59009private pattern scopeDisallowsNewEDataType_class(problem:LogicProblem, interpretation:PartialInterpretation) {
59010 find interpretation(problem,interpretation);
59011 PartialInterpretation.scopes(interpretation,scope);
59012 Scope.targetTypeInterpretation(scope,typeInterpretation);
59013 Scope.maxNewElements(scope,0);
59014 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
59015 Type.name(type,"EDataType class");
59016}
59017
59018/**
59019 * An element may be an instance of type "EDataType class".
59020 */
59021private pattern mayInstanceOfEDataType_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
59022{
59023 find interpretation(problem,interpretation);
59024 PartialInterpretation.newElements(interpretation,element);
59025 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
59026 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
59027 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
59028 neg find mustInstanceOfEEnum_class(problem,interpretation,element);
59029 neg find mustInstanceOfEObject_class(problem,interpretation,element);
59030 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
59031 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
59032 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
59033 neg find mustInstanceOfEClass_class(problem,interpretation,element);
59034 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
59035 neg find scopeDisallowsNewEDataType_class(problem, interpretation);
59036 neg find isPrimitive(element);
59037} or {
59038 find interpretation(problem,interpretation);
59039 PartialInterpretation.openWorldElements(interpretation,element);
59040 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
59041 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
59042 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
59043 neg find mustInstanceOfEEnum_class(problem,interpretation,element);
59044 neg find mustInstanceOfEObject_class(problem,interpretation,element);
59045 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
59046 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
59047 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
59048 neg find mustInstanceOfEClass_class(problem,interpretation,element);
59049 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
59050 neg find scopeDisallowsNewEDataType_class(problem, interpretation);
59051 neg find isPrimitive(element);
59052} or
59053{ find mustInstanceOfEDataType_class(problem,interpretation,element); }
59054/**
59055 * An element must be an instance of type "EEnum class".
59056 */
59057private pattern mustInstanceOfEEnum_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
59058 Type.name(type,"EEnum class");
59059 find directInstanceOf(problem,interpretation,element,type);
59060}
59061private pattern scopeDisallowsNewEEnum_class(problem:LogicProblem, interpretation:PartialInterpretation) {
59062 find interpretation(problem,interpretation);
59063 PartialInterpretation.scopes(interpretation,scope);
59064 Scope.targetTypeInterpretation(scope,typeInterpretation);
59065 Scope.maxNewElements(scope,0);
59066 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
59067 Type.name(type,"EEnum class");
59068}
59069
59070/**
59071 * An element may be an instance of type "EEnum class".
59072 */
59073private pattern mayInstanceOfEEnum_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
59074{
59075 find interpretation(problem,interpretation);
59076 PartialInterpretation.newElements(interpretation,element);
59077 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
59078 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
59079 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
59080 neg find mustInstanceOfEObject_class(problem,interpretation,element);
59081 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
59082 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
59083 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
59084 neg find mustInstanceOfEClass_class(problem,interpretation,element);
59085 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
59086 neg find scopeDisallowsNewEEnum_class(problem, interpretation);
59087 neg find isPrimitive(element);
59088} or {
59089 find interpretation(problem,interpretation);
59090 PartialInterpretation.openWorldElements(interpretation,element);
59091 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
59092 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
59093 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
59094 neg find mustInstanceOfEObject_class(problem,interpretation,element);
59095 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
59096 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
59097 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
59098 neg find mustInstanceOfEClass_class(problem,interpretation,element);
59099 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
59100 neg find scopeDisallowsNewEEnum_class(problem, interpretation);
59101 neg find isPrimitive(element);
59102} or
59103{ find mustInstanceOfEEnum_class(problem,interpretation,element); }
59104/**
59105 * An element must be an instance of type "EEnumLiteral class".
59106 */
59107private pattern mustInstanceOfEEnumLiteral_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
59108 Type.name(type,"EEnumLiteral class");
59109 find directInstanceOf(problem,interpretation,element,type);
59110}
59111private pattern scopeDisallowsNewEEnumLiteral_class(problem:LogicProblem, interpretation:PartialInterpretation) {
59112 find interpretation(problem,interpretation);
59113 PartialInterpretation.scopes(interpretation,scope);
59114 Scope.targetTypeInterpretation(scope,typeInterpretation);
59115 Scope.maxNewElements(scope,0);
59116 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
59117 Type.name(type,"EEnumLiteral class");
59118}
59119
59120/**
59121 * An element may be an instance of type "EEnumLiteral class".
59122 */
59123private pattern mayInstanceOfEEnumLiteral_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
59124{
59125 find interpretation(problem,interpretation);
59126 PartialInterpretation.newElements(interpretation,element);
59127 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
59128 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
59129 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
59130 neg find mustInstanceOfEObject_class(problem,interpretation,element);
59131 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
59132 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
59133 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
59134 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
59135 neg find scopeDisallowsNewEEnumLiteral_class(problem, interpretation);
59136 neg find isPrimitive(element);
59137} or {
59138 find interpretation(problem,interpretation);
59139 PartialInterpretation.openWorldElements(interpretation,element);
59140 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
59141 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
59142 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
59143 neg find mustInstanceOfEObject_class(problem,interpretation,element);
59144 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
59145 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
59146 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
59147 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
59148 neg find scopeDisallowsNewEEnumLiteral_class(problem, interpretation);
59149 neg find isPrimitive(element);
59150} or
59151{ find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); }
59152/**
59153 * An element must be an instance of type "EModelElement class".
59154 */
59155private pattern mustInstanceOfEModelElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
59156 Type.name(type,"EModelElement class");
59157 find directInstanceOf(problem,interpretation,element,type);
59158}
59159private pattern scopeDisallowsNewEModelElement_class(problem:LogicProblem, interpretation:PartialInterpretation) {
59160 find interpretation(problem,interpretation);
59161 PartialInterpretation.scopes(interpretation,scope);
59162 Scope.targetTypeInterpretation(scope,typeInterpretation);
59163 Scope.maxNewElements(scope,0);
59164 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
59165 Type.name(type,"EModelElement class");
59166}
59167
59168/**
59169 * An element may be an instance of type "EModelElement class".
59170 */
59171private pattern mayInstanceOfEModelElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
59172{
59173 find interpretation(problem,interpretation);
59174 PartialInterpretation.newElements(interpretation,element);
59175 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
59176 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
59177 neg find mustInstanceOfEObject_class(problem,interpretation,element);
59178 neg find mustInstanceOfENamedElement_class(problem,interpretation,element);
59179 neg find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,element);
59180 neg find scopeDisallowsNewEModelElement_class(problem, interpretation);
59181 neg find isPrimitive(element);
59182} or {
59183 find interpretation(problem,interpretation);
59184 PartialInterpretation.openWorldElements(interpretation,element);
59185 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
59186 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
59187 neg find mustInstanceOfEObject_class(problem,interpretation,element);
59188 neg find mustInstanceOfENamedElement_class(problem,interpretation,element);
59189 neg find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,element);
59190 neg find scopeDisallowsNewEModelElement_class(problem, interpretation);
59191 neg find isPrimitive(element);
59192} or
59193{ find mustInstanceOfEModelElement_class(problem,interpretation,element); }
59194/**
59195 * An element must be an instance of type "ENamedElement class".
59196 */
59197private pattern mustInstanceOfENamedElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
59198 Type.name(type,"ENamedElement class");
59199 find directInstanceOf(problem,interpretation,element,type);
59200}
59201private pattern scopeDisallowsNewENamedElement_class(problem:LogicProblem, interpretation:PartialInterpretation) {
59202 find interpretation(problem,interpretation);
59203 PartialInterpretation.scopes(interpretation,scope);
59204 Scope.targetTypeInterpretation(scope,typeInterpretation);
59205 Scope.maxNewElements(scope,0);
59206 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
59207 Type.name(type,"ENamedElement class");
59208}
59209
59210/**
59211 * An element may be an instance of type "ENamedElement class".
59212 */
59213private pattern mayInstanceOfENamedElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
59214{
59215 find interpretation(problem,interpretation);
59216 PartialInterpretation.newElements(interpretation,element);
59217 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
59218 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
59219 neg find mustInstanceOfEObject_class(problem,interpretation,element);
59220 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
59221 neg find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,element);
59222 neg find scopeDisallowsNewENamedElement_class(problem, interpretation);
59223 neg find isPrimitive(element);
59224} or {
59225 find interpretation(problem,interpretation);
59226 PartialInterpretation.openWorldElements(interpretation,element);
59227 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
59228 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
59229 neg find mustInstanceOfEObject_class(problem,interpretation,element);
59230 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
59231 neg find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,element);
59232 neg find scopeDisallowsNewENamedElement_class(problem, interpretation);
59233 neg find isPrimitive(element);
59234} or
59235{ find mustInstanceOfENamedElement_class(problem,interpretation,element); }
59236/**
59237 * An element must be an instance of type "EObject class".
59238 */
59239private pattern mustInstanceOfEObject_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
59240 Type.name(type,"EObject class");
59241 find directInstanceOf(problem,interpretation,element,type);
59242}
59243private pattern scopeDisallowsNewEObject_class(problem:LogicProblem, interpretation:PartialInterpretation) {
59244 find interpretation(problem,interpretation);
59245 PartialInterpretation.scopes(interpretation,scope);
59246 Scope.targetTypeInterpretation(scope,typeInterpretation);
59247 Scope.maxNewElements(scope,0);
59248 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
59249 Type.name(type,"EObject class");
59250}
59251
59252/**
59253 * An element may be an instance of type "EObject class".
59254 */
59255private pattern mayInstanceOfEObject_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
59256{
59257 find interpretation(problem,interpretation);
59258 PartialInterpretation.newElements(interpretation,element);
59259 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
59260 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
59261 neg find mustInstanceOfEModelElement_class(problem,interpretation,element);
59262 neg find scopeDisallowsNewEObject_class(problem, interpretation);
59263 neg find isPrimitive(element);
59264} or {
59265 find interpretation(problem,interpretation);
59266 PartialInterpretation.openWorldElements(interpretation,element);
59267 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
59268 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
59269 neg find mustInstanceOfEModelElement_class(problem,interpretation,element);
59270 neg find scopeDisallowsNewEObject_class(problem, interpretation);
59271 neg find isPrimitive(element);
59272} or
59273{ find mustInstanceOfEObject_class(problem,interpretation,element); }
59274/**
59275 * An element must be an instance of type "EOperation class".
59276 */
59277private pattern mustInstanceOfEOperation_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
59278 Type.name(type,"EOperation class");
59279 find directInstanceOf(problem,interpretation,element,type);
59280}
59281private pattern scopeDisallowsNewEOperation_class(problem:LogicProblem, interpretation:PartialInterpretation) {
59282 find interpretation(problem,interpretation);
59283 PartialInterpretation.scopes(interpretation,scope);
59284 Scope.targetTypeInterpretation(scope,typeInterpretation);
59285 Scope.maxNewElements(scope,0);
59286 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
59287 Type.name(type,"EOperation class");
59288}
59289
59290/**
59291 * An element may be an instance of type "EOperation class".
59292 */
59293private pattern mayInstanceOfEOperation_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
59294{
59295 find interpretation(problem,interpretation);
59296 PartialInterpretation.newElements(interpretation,element);
59297 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
59298 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
59299 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
59300 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
59301 neg find mustInstanceOfEObject_class(problem,interpretation,element);
59302 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
59303 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
59304 neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element);
59305 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
59306 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
59307 neg find scopeDisallowsNewEOperation_class(problem, interpretation);
59308 neg find isPrimitive(element);
59309} or {
59310 find interpretation(problem,interpretation);
59311 PartialInterpretation.openWorldElements(interpretation,element);
59312 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
59313 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
59314 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
59315 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
59316 neg find mustInstanceOfEObject_class(problem,interpretation,element);
59317 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
59318 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
59319 neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element);
59320 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
59321 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
59322 neg find scopeDisallowsNewEOperation_class(problem, interpretation);
59323 neg find isPrimitive(element);
59324} or
59325{ find mustInstanceOfEOperation_class(problem,interpretation,element); }
59326/**
59327 * An element must be an instance of type "EPackage class".
59328 */
59329private pattern mustInstanceOfEPackage_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
59330 Type.name(type,"EPackage class");
59331 find directInstanceOf(problem,interpretation,element,type);
59332}
59333private pattern scopeDisallowsNewEPackage_class(problem:LogicProblem, interpretation:PartialInterpretation) {
59334 find interpretation(problem,interpretation);
59335 PartialInterpretation.scopes(interpretation,scope);
59336 Scope.targetTypeInterpretation(scope,typeInterpretation);
59337 Scope.maxNewElements(scope,0);
59338 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
59339 Type.name(type,"EPackage class");
59340}
59341
59342/**
59343 * An element may be an instance of type "EPackage class".
59344 */
59345private pattern mayInstanceOfEPackage_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
59346{
59347 find interpretation(problem,interpretation);
59348 PartialInterpretation.newElements(interpretation,element);
59349 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
59350 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
59351 neg find mustInstanceOfEObject_class(problem,interpretation,element);
59352 neg find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,element);
59353 neg find scopeDisallowsNewEPackage_class(problem, interpretation);
59354 neg find isPrimitive(element);
59355} or {
59356 find interpretation(problem,interpretation);
59357 PartialInterpretation.openWorldElements(interpretation,element);
59358 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
59359 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
59360 neg find mustInstanceOfEObject_class(problem,interpretation,element);
59361 neg find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,element);
59362 neg find scopeDisallowsNewEPackage_class(problem, interpretation);
59363 neg find isPrimitive(element);
59364} or
59365{ find mustInstanceOfEPackage_class(problem,interpretation,element); }
59366/**
59367 * An element must be an instance of type "EParameter class".
59368 */
59369private pattern mustInstanceOfEParameter_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
59370 Type.name(type,"EParameter class");
59371 find directInstanceOf(problem,interpretation,element,type);
59372}
59373private pattern scopeDisallowsNewEParameter_class(problem:LogicProblem, interpretation:PartialInterpretation) {
59374 find interpretation(problem,interpretation);
59375 PartialInterpretation.scopes(interpretation,scope);
59376 Scope.targetTypeInterpretation(scope,typeInterpretation);
59377 Scope.maxNewElements(scope,0);
59378 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
59379 Type.name(type,"EParameter class");
59380}
59381
59382/**
59383 * An element may be an instance of type "EParameter class".
59384 */
59385private pattern mayInstanceOfEParameter_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
59386{
59387 find interpretation(problem,interpretation);
59388 PartialInterpretation.newElements(interpretation,element);
59389 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
59390 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
59391 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
59392 neg find mustInstanceOfEObject_class(problem,interpretation,element);
59393 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
59394 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
59395 neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element);
59396 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
59397 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
59398 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
59399 neg find scopeDisallowsNewEParameter_class(problem, interpretation);
59400 neg find isPrimitive(element);
59401} or {
59402 find interpretation(problem,interpretation);
59403 PartialInterpretation.openWorldElements(interpretation,element);
59404 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
59405 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
59406 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
59407 neg find mustInstanceOfEObject_class(problem,interpretation,element);
59408 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
59409 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
59410 neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element);
59411 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
59412 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
59413 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
59414 neg find scopeDisallowsNewEParameter_class(problem, interpretation);
59415 neg find isPrimitive(element);
59416} or
59417{ find mustInstanceOfEParameter_class(problem,interpretation,element); }
59418/**
59419 * An element must be an instance of type "EReference class".
59420 */
59421private pattern mustInstanceOfEReference_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
59422 Type.name(type,"EReference class");
59423 find directInstanceOf(problem,interpretation,element,type);
59424}
59425private pattern scopeDisallowsNewEReference_class(problem:LogicProblem, interpretation:PartialInterpretation) {
59426 find interpretation(problem,interpretation);
59427 PartialInterpretation.scopes(interpretation,scope);
59428 Scope.targetTypeInterpretation(scope,typeInterpretation);
59429 Scope.maxNewElements(scope,0);
59430 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
59431 Type.name(type,"EReference class");
59432}
59433
59434/**
59435 * An element may be an instance of type "EReference class".
59436 */
59437private pattern mayInstanceOfEReference_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
59438{
59439 find interpretation(problem,interpretation);
59440 PartialInterpretation.newElements(interpretation,element);
59441 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
59442 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
59443 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
59444 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
59445 neg find mustInstanceOfEObject_class(problem,interpretation,element);
59446 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
59447 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
59448 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
59449 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
59450 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
59451 neg find mustInstanceOfEAttribute_class(problem,interpretation,element);
59452 neg find scopeDisallowsNewEReference_class(problem, interpretation);
59453 neg find isPrimitive(element);
59454} or {
59455 find interpretation(problem,interpretation);
59456 PartialInterpretation.openWorldElements(interpretation,element);
59457 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
59458 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
59459 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
59460 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
59461 neg find mustInstanceOfEObject_class(problem,interpretation,element);
59462 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
59463 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
59464 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
59465 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
59466 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
59467 neg find mustInstanceOfEAttribute_class(problem,interpretation,element);
59468 neg find scopeDisallowsNewEReference_class(problem, interpretation);
59469 neg find isPrimitive(element);
59470} or
59471{ find mustInstanceOfEReference_class(problem,interpretation,element); }
59472/**
59473 * An element must be an instance of type "EStructuralFeature class".
59474 */
59475private pattern mustInstanceOfEStructuralFeature_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
59476 Type.name(type,"EStructuralFeature class");
59477 find directInstanceOf(problem,interpretation,element,type);
59478}
59479private pattern scopeDisallowsNewEStructuralFeature_class(problem:LogicProblem, interpretation:PartialInterpretation) {
59480 find interpretation(problem,interpretation);
59481 PartialInterpretation.scopes(interpretation,scope);
59482 Scope.targetTypeInterpretation(scope,typeInterpretation);
59483 Scope.maxNewElements(scope,0);
59484 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
59485 Type.name(type,"EStructuralFeature class");
59486}
59487
59488/**
59489 * An element may be an instance of type "EStructuralFeature class".
59490 */
59491private pattern mayInstanceOfEStructuralFeature_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
59492{
59493 find interpretation(problem,interpretation);
59494 PartialInterpretation.newElements(interpretation,element);
59495 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
59496 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
59497 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
59498 neg find mustInstanceOfEReference_class(problem,interpretation,element);
59499 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
59500 neg find mustInstanceOfEObject_class(problem,interpretation,element);
59501 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
59502 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
59503 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
59504 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
59505 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
59506 neg find mustInstanceOfEAttribute_class(problem,interpretation,element);
59507 neg find scopeDisallowsNewEStructuralFeature_class(problem, interpretation);
59508 neg find isPrimitive(element);
59509} or {
59510 find interpretation(problem,interpretation);
59511 PartialInterpretation.openWorldElements(interpretation,element);
59512 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
59513 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
59514 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
59515 neg find mustInstanceOfEReference_class(problem,interpretation,element);
59516 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
59517 neg find mustInstanceOfEObject_class(problem,interpretation,element);
59518 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
59519 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
59520 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
59521 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
59522 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
59523 neg find mustInstanceOfEAttribute_class(problem,interpretation,element);
59524 neg find scopeDisallowsNewEStructuralFeature_class(problem, interpretation);
59525 neg find isPrimitive(element);
59526} or
59527{ find mustInstanceOfEStructuralFeature_class(problem,interpretation,element); }
59528/**
59529 * An element must be an instance of type "ETypedElement class".
59530 */
59531private pattern mustInstanceOfETypedElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
59532 Type.name(type,"ETypedElement class");
59533 find directInstanceOf(problem,interpretation,element,type);
59534}
59535private pattern scopeDisallowsNewETypedElement_class(problem:LogicProblem, interpretation:PartialInterpretation) {
59536 find interpretation(problem,interpretation);
59537 PartialInterpretation.scopes(interpretation,scope);
59538 Scope.targetTypeInterpretation(scope,typeInterpretation);
59539 Scope.maxNewElements(scope,0);
59540 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
59541 Type.name(type,"ETypedElement class");
59542}
59543
59544/**
59545 * An element may be an instance of type "ETypedElement class".
59546 */
59547private pattern mayInstanceOfETypedElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
59548{
59549 find interpretation(problem,interpretation);
59550 PartialInterpretation.newElements(interpretation,element);
59551 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
59552 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
59553 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
59554 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
59555 neg find mustInstanceOfEObject_class(problem,interpretation,element);
59556 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
59557 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
59558 neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element);
59559 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
59560 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
59561 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
59562 neg find scopeDisallowsNewETypedElement_class(problem, interpretation);
59563 neg find isPrimitive(element);
59564} or {
59565 find interpretation(problem,interpretation);
59566 PartialInterpretation.openWorldElements(interpretation,element);
59567 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
59568 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
59569 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
59570 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
59571 neg find mustInstanceOfEObject_class(problem,interpretation,element);
59572 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
59573 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
59574 neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element);
59575 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
59576 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
59577 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
59578 neg find scopeDisallowsNewETypedElement_class(problem, interpretation);
59579 neg find isPrimitive(element);
59580} or
59581{ find mustInstanceOfETypedElement_class(problem,interpretation,element); }
59582/**
59583 * An element must be an instance of type "EStringToStringMapEntry class".
59584 */
59585private pattern mustInstanceOfEStringToStringMapEntry_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
59586 Type.name(type,"EStringToStringMapEntry class");
59587 find directInstanceOf(problem,interpretation,element,type);
59588}
59589private pattern scopeDisallowsNewEStringToStringMapEntry_class(problem:LogicProblem, interpretation:PartialInterpretation) {
59590 find interpretation(problem,interpretation);
59591 PartialInterpretation.scopes(interpretation,scope);
59592 Scope.targetTypeInterpretation(scope,typeInterpretation);
59593 Scope.maxNewElements(scope,0);
59594 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
59595 Type.name(type,"EStringToStringMapEntry class");
59596}
59597
59598/**
59599 * An element may be an instance of type "EStringToStringMapEntry class".
59600 */
59601private pattern mayInstanceOfEStringToStringMapEntry_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
59602{
59603 find interpretation(problem,interpretation);
59604 PartialInterpretation.newElements(interpretation,element);
59605 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
59606 neg find mustInstanceOfEObject_class(problem,interpretation,element);
59607 neg find mustInstanceOfEModelElement_class(problem,interpretation,element);
59608 neg find scopeDisallowsNewEStringToStringMapEntry_class(problem, interpretation);
59609 neg find isPrimitive(element);
59610} or {
59611 find interpretation(problem,interpretation);
59612 PartialInterpretation.openWorldElements(interpretation,element);
59613 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
59614 neg find mustInstanceOfEObject_class(problem,interpretation,element);
59615 neg find mustInstanceOfEModelElement_class(problem,interpretation,element);
59616 neg find scopeDisallowsNewEStringToStringMapEntry_class(problem, interpretation);
59617 neg find isPrimitive(element);
59618} or
59619{ find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); }
59620/**
59621 * An element must be an instance of type "EGenericType class".
59622 */
59623private pattern mustInstanceOfEGenericType_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
59624 Type.name(type,"EGenericType class");
59625 find directInstanceOf(problem,interpretation,element,type);
59626}
59627private pattern scopeDisallowsNewEGenericType_class(problem:LogicProblem, interpretation:PartialInterpretation) {
59628 find interpretation(problem,interpretation);
59629 PartialInterpretation.scopes(interpretation,scope);
59630 Scope.targetTypeInterpretation(scope,typeInterpretation);
59631 Scope.maxNewElements(scope,0);
59632 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
59633 Type.name(type,"EGenericType class");
59634}
59635
59636/**
59637 * An element may be an instance of type "EGenericType class".
59638 */
59639private pattern mayInstanceOfEGenericType_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
59640{
59641 find interpretation(problem,interpretation);
59642 PartialInterpretation.newElements(interpretation,element);
59643 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
59644 neg find mustInstanceOfEObject_class(problem,interpretation,element);
59645 neg find mustInstanceOfEModelElement_class(problem,interpretation,element);
59646 neg find scopeDisallowsNewEGenericType_class(problem, interpretation);
59647 neg find isPrimitive(element);
59648} or {
59649 find interpretation(problem,interpretation);
59650 PartialInterpretation.openWorldElements(interpretation,element);
59651 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
59652 neg find mustInstanceOfEObject_class(problem,interpretation,element);
59653 neg find mustInstanceOfEModelElement_class(problem,interpretation,element);
59654 neg find scopeDisallowsNewEGenericType_class(problem, interpretation);
59655 neg find isPrimitive(element);
59656} or
59657{ find mustInstanceOfEGenericType_class(problem,interpretation,element); }
59658/**
59659 * An element must be an instance of type "ETypeParameter class".
59660 */
59661private pattern mustInstanceOfETypeParameter_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
59662 Type.name(type,"ETypeParameter class");
59663 find directInstanceOf(problem,interpretation,element,type);
59664}
59665private pattern scopeDisallowsNewETypeParameter_class(problem:LogicProblem, interpretation:PartialInterpretation) {
59666 find interpretation(problem,interpretation);
59667 PartialInterpretation.scopes(interpretation,scope);
59668 Scope.targetTypeInterpretation(scope,typeInterpretation);
59669 Scope.maxNewElements(scope,0);
59670 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
59671 Type.name(type,"ETypeParameter class");
59672}
59673
59674/**
59675 * An element may be an instance of type "ETypeParameter class".
59676 */
59677private pattern mayInstanceOfETypeParameter_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
59678{
59679 find interpretation(problem,interpretation);
59680 PartialInterpretation.newElements(interpretation,element);
59681 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
59682 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
59683 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
59684 neg find mustInstanceOfEObject_class(problem,interpretation,element);
59685 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
59686 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
59687 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
59688 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
59689 neg find scopeDisallowsNewETypeParameter_class(problem, interpretation);
59690 neg find isPrimitive(element);
59691} or {
59692 find interpretation(problem,interpretation);
59693 PartialInterpretation.openWorldElements(interpretation,element);
59694 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
59695 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
59696 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
59697 neg find mustInstanceOfEObject_class(problem,interpretation,element);
59698 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
59699 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
59700 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
59701 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
59702 neg find scopeDisallowsNewETypeParameter_class(problem, interpretation);
59703 neg find isPrimitive(element);
59704} or
59705{ find mustInstanceOfETypeParameter_class(problem,interpretation,element); }
59706/**
59707 * An element must be an instance of type "EModelElement class DefinedPart".
59708 */
59709private pattern mustInstanceOfEModelElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
59710 Type.name(type,"EModelElement class DefinedPart");
59711 find directInstanceOf(problem,interpretation,element,type);
59712}
59713private pattern scopeDisallowsNewEModelElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) {
59714 find interpretation(problem,interpretation);
59715 PartialInterpretation.scopes(interpretation,scope);
59716 Scope.targetTypeInterpretation(scope,typeInterpretation);
59717 Scope.maxNewElements(scope,0);
59718 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
59719 Type.name(type,"EModelElement class DefinedPart");
59720}
59721
59722/**
59723 * An element may be an instance of type "EModelElement class DefinedPart".
59724 */
59725private pattern mayInstanceOfEModelElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
59726{ find mustInstanceOfEModelElement_class_DefinedPart(problem,interpretation,element); }
59727/**
59728 * An element must be an instance of type "EModelElement class UndefinedPart".
59729 */
59730private pattern mustInstanceOfEModelElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
59731 Type.name(type,"EModelElement class UndefinedPart");
59732 find directInstanceOf(problem,interpretation,element,type);
59733}
59734private pattern scopeDisallowsNewEModelElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) {
59735 find interpretation(problem,interpretation);
59736 PartialInterpretation.scopes(interpretation,scope);
59737 Scope.targetTypeInterpretation(scope,typeInterpretation);
59738 Scope.maxNewElements(scope,0);
59739 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
59740 Type.name(type,"EModelElement class UndefinedPart");
59741}
59742
59743/**
59744 * An element may be an instance of type "EModelElement class UndefinedPart".
59745 */
59746private pattern mayInstanceOfEModelElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
59747{
59748 find interpretation(problem,interpretation);
59749 PartialInterpretation.newElements(interpretation,element);
59750 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
59751 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
59752 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
59753 neg find mustInstanceOfEObject_class(problem,interpretation,element);
59754 neg find mustInstanceOfENamedElement_class(problem,interpretation,element);
59755 neg find scopeDisallowsNewEModelElement_class_UndefinedPart(problem, interpretation);
59756 neg find isPrimitive(element);
59757} or {
59758 find interpretation(problem,interpretation);
59759 PartialInterpretation.openWorldElements(interpretation,element);
59760 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
59761 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
59762 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
59763 neg find mustInstanceOfEObject_class(problem,interpretation,element);
59764 neg find mustInstanceOfENamedElement_class(problem,interpretation,element);
59765 neg find scopeDisallowsNewEModelElement_class_UndefinedPart(problem, interpretation);
59766 neg find isPrimitive(element);
59767} or
59768{ find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,element); }
59769/**
59770 * An element must be an instance of type "ENamedElement class DefinedPart".
59771 */
59772private pattern mustInstanceOfENamedElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
59773 Type.name(type,"ENamedElement class DefinedPart");
59774 find directInstanceOf(problem,interpretation,element,type);
59775}
59776private pattern scopeDisallowsNewENamedElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) {
59777 find interpretation(problem,interpretation);
59778 PartialInterpretation.scopes(interpretation,scope);
59779 Scope.targetTypeInterpretation(scope,typeInterpretation);
59780 Scope.maxNewElements(scope,0);
59781 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
59782 Type.name(type,"ENamedElement class DefinedPart");
59783}
59784
59785/**
59786 * An element may be an instance of type "ENamedElement class DefinedPart".
59787 */
59788private pattern mayInstanceOfENamedElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
59789{ find mustInstanceOfENamedElement_class_DefinedPart(problem,interpretation,element); }
59790/**
59791 * An element must be an instance of type "ENamedElement class UndefinedPart".
59792 */
59793private pattern mustInstanceOfENamedElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
59794 Type.name(type,"ENamedElement class UndefinedPart");
59795 find directInstanceOf(problem,interpretation,element,type);
59796}
59797private pattern scopeDisallowsNewENamedElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) {
59798 find interpretation(problem,interpretation);
59799 PartialInterpretation.scopes(interpretation,scope);
59800 Scope.targetTypeInterpretation(scope,typeInterpretation);
59801 Scope.maxNewElements(scope,0);
59802 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
59803 Type.name(type,"ENamedElement class UndefinedPart");
59804}
59805
59806/**
59807 * An element may be an instance of type "ENamedElement class UndefinedPart".
59808 */
59809private pattern mayInstanceOfENamedElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
59810{
59811 find interpretation(problem,interpretation);
59812 PartialInterpretation.newElements(interpretation,element);
59813 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
59814 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
59815 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
59816 neg find mustInstanceOfEObject_class(problem,interpretation,element);
59817 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
59818 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
59819 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
59820 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
59821 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
59822 neg find scopeDisallowsNewENamedElement_class_UndefinedPart(problem, interpretation);
59823 neg find isPrimitive(element);
59824} or {
59825 find interpretation(problem,interpretation);
59826 PartialInterpretation.openWorldElements(interpretation,element);
59827 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
59828 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
59829 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
59830 neg find mustInstanceOfEObject_class(problem,interpretation,element);
59831 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
59832 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
59833 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
59834 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
59835 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
59836 neg find scopeDisallowsNewENamedElement_class_UndefinedPart(problem, interpretation);
59837 neg find isPrimitive(element);
59838} or
59839{ find mustInstanceOfENamedElement_class_UndefinedPart(problem,interpretation,element); }
59840/**
59841 * An element must be an instance of type "EPackage class DefinedPart".
59842 */
59843private pattern mustInstanceOfEPackage_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
59844 Type.name(type,"EPackage class DefinedPart");
59845 find directInstanceOf(problem,interpretation,element,type);
59846}
59847private pattern scopeDisallowsNewEPackage_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) {
59848 find interpretation(problem,interpretation);
59849 PartialInterpretation.scopes(interpretation,scope);
59850 Scope.targetTypeInterpretation(scope,typeInterpretation);
59851 Scope.maxNewElements(scope,0);
59852 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
59853 Type.name(type,"EPackage class DefinedPart");
59854}
59855
59856/**
59857 * An element may be an instance of type "EPackage class DefinedPart".
59858 */
59859private pattern mayInstanceOfEPackage_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
59860{ find mustInstanceOfEPackage_class_DefinedPart(problem,interpretation,element); }
59861/**
59862 * An element must be an instance of type "EPackage class UndefinedPart".
59863 */
59864private pattern mustInstanceOfEPackage_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
59865 Type.name(type,"EPackage class UndefinedPart");
59866 find directInstanceOf(problem,interpretation,element,type);
59867}
59868private pattern scopeDisallowsNewEPackage_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) {
59869 find interpretation(problem,interpretation);
59870 PartialInterpretation.scopes(interpretation,scope);
59871 Scope.targetTypeInterpretation(scope,typeInterpretation);
59872 Scope.maxNewElements(scope,0);
59873 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
59874 Type.name(type,"EPackage class UndefinedPart");
59875}
59876
59877/**
59878 * An element may be an instance of type "EPackage class UndefinedPart".
59879 */
59880private pattern mayInstanceOfEPackage_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
59881{
59882 find interpretation(problem,interpretation);
59883 PartialInterpretation.newElements(interpretation,element);
59884 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
59885 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
59886 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
59887 neg find mustInstanceOfEObject_class(problem,interpretation,element);
59888 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
59889 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
59890 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
59891 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
59892 neg find scopeDisallowsNewEPackage_class_UndefinedPart(problem, interpretation);
59893 neg find isPrimitive(element);
59894} or {
59895 find interpretation(problem,interpretation);
59896 PartialInterpretation.openWorldElements(interpretation,element);
59897 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
59898 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
59899 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
59900 neg find mustInstanceOfEObject_class(problem,interpretation,element);
59901 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
59902 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
59903 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
59904 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
59905 neg find scopeDisallowsNewEPackage_class_UndefinedPart(problem, interpretation);
59906 neg find isPrimitive(element);
59907} or
59908{ find mustInstanceOfEPackage_class_UndefinedPart(problem,interpretation,element); }
59909
59910//////////
59911// 1.2 Relation Declaration Indexers
59912//////////
59913/**
59914 * Matcher for detecting tuples t where []eAttributeType reference EAttribute(source,target)
59915 */
59916private pattern mustInRelationeAttributeType_reference_EAttribute(
59917 problem:LogicProblem, interpretation:PartialInterpretation,
59918 source: DefinedElement, target:DefinedElement)
59919{
59920 find interpretation(problem,interpretation);
59921 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
59922 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAttributeType reference EAttribute");
59923 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
59924 BinaryElementRelationLink.param1(link,source);
59925 BinaryElementRelationLink.param2(link,target);
59926}
59927/**
59928 * Matcher for detecting tuples t where <>eAttributeType reference EAttribute(source,target)
59929 */
59930private pattern mayInRelationeAttributeType_reference_EAttribute(
59931 problem:LogicProblem, interpretation:PartialInterpretation,
59932 source: DefinedElement, target:DefinedElement)
59933{
59934 find interpretation(problem,interpretation);
59935 // The two endpoint of the link have to exist
59936 find mayExist(problem, interpretation, source);
59937 find mayExist(problem, interpretation, target);
59938 // Type consistency
59939 find mayInstanceOfEAttribute_class(problem,interpretation,source);
59940 find mayInstanceOfEDataType_class(problem,interpretation,target);
59941 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
59942 // the upper bound of the multiplicity should be considered.
59943 numberOfExistingReferences == count find mustInRelationeAttributeType_reference_EAttribute(problem,interpretation,source,_);
59944 check(numberOfExistingReferences < 1);
59945} or {
59946 find mustInRelationeAttributeType_reference_EAttribute(problem,interpretation,source,target);
59947}
59948/**
59949 * Matcher for detecting tuples t where []details reference EAnnotation(source,target)
59950 */
59951private pattern mustInRelationdetails_reference_EAnnotation(
59952 problem:LogicProblem, interpretation:PartialInterpretation,
59953 source: DefinedElement, target:DefinedElement)
59954{
59955 find interpretation(problem,interpretation);
59956 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
59957 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"details reference EAnnotation");
59958 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
59959 BinaryElementRelationLink.param1(link,source);
59960 BinaryElementRelationLink.param2(link,target);
59961}
59962/**
59963 * Matcher for detecting tuples t where <>details reference EAnnotation(source,target)
59964 */
59965private pattern mayInRelationdetails_reference_EAnnotation(
59966 problem:LogicProblem, interpretation:PartialInterpretation,
59967 source: DefinedElement, target:DefinedElement)
59968{
59969 find interpretation(problem,interpretation);
59970 // The two endpoint of the link have to exist
59971 find mayExist(problem, interpretation, source);
59972 find mayExist(problem, interpretation, target);
59973 // Type consistency
59974 find mayInstanceOfEAnnotation_class(problem,interpretation,source);
59975 find mayInstanceOfEStringToStringMapEntry_class(problem,interpretation,target);
59976 // The reference is containment, then a new reference cannot be create if:
59977 // 1. Multiple parents
59978 neg find mustContains4(problem,interpretation,_,target);
59979 // 2. Circle in the containment hierarchy
59980 neg find mustTransitiveContains(source,target);
59981} or {
59982 find mustInRelationdetails_reference_EAnnotation(problem,interpretation,source,target);
59983}
59984/**
59985 * Matcher for detecting tuples t where []eModelElement reference EAnnotation(source,target)
59986 */
59987private pattern mustInRelationeModelElement_reference_EAnnotation(
59988 problem:LogicProblem, interpretation:PartialInterpretation,
59989 source: DefinedElement, target:DefinedElement)
59990{
59991 find interpretation(problem,interpretation);
59992 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
59993 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eModelElement reference EAnnotation");
59994 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
59995 BinaryElementRelationLink.param1(link,source);
59996 BinaryElementRelationLink.param2(link,target);
59997}
59998/**
59999 * Matcher for detecting tuples t where <>eModelElement reference EAnnotation(source,target)
60000 */
60001private pattern mayInRelationeModelElement_reference_EAnnotation(
60002 problem:LogicProblem, interpretation:PartialInterpretation,
60003 source: DefinedElement, target:DefinedElement)
60004{
60005 find interpretation(problem,interpretation);
60006 // The two endpoint of the link have to exist
60007 find mayExist(problem, interpretation, source);
60008 find mayExist(problem, interpretation, target);
60009 // Type consistency
60010 find mayInstanceOfEAnnotation_class(problem,interpretation,source);
60011 find mayInstanceOfEModelElement_class(problem,interpretation,target);
60012 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
60013 // the upper bound of the multiplicity should be considered.
60014 numberOfExistingReferences == count find mustInRelationeModelElement_reference_EAnnotation(problem,interpretation,source,_);
60015 check(numberOfExistingReferences < 1);
60016 // The eOpposite of the reference is containment, then a referene cannot be created if
60017 // 1. Multiple parents
60018 neg find mustContains4(problem,interpretation,source,_);
60019 // 2. Circle in the containment hierarchy
60020 neg find mustTransitiveContains(source,target);
60021} or {
60022 find mustInRelationeModelElement_reference_EAnnotation(problem,interpretation,source,target);
60023}
60024/**
60025 * Matcher for detecting tuples t where []contents reference EAnnotation(source,target)
60026 */
60027private pattern mustInRelationcontents_reference_EAnnotation(
60028 problem:LogicProblem, interpretation:PartialInterpretation,
60029 source: DefinedElement, target:DefinedElement)
60030{
60031 find interpretation(problem,interpretation);
60032 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
60033 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"contents reference EAnnotation");
60034 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
60035 BinaryElementRelationLink.param1(link,source);
60036 BinaryElementRelationLink.param2(link,target);
60037}
60038/**
60039 * Matcher for detecting tuples t where <>contents reference EAnnotation(source,target)
60040 */
60041private pattern mayInRelationcontents_reference_EAnnotation(
60042 problem:LogicProblem, interpretation:PartialInterpretation,
60043 source: DefinedElement, target:DefinedElement)
60044{
60045 find interpretation(problem,interpretation);
60046 // The two endpoint of the link have to exist
60047 find mayExist(problem, interpretation, source);
60048 find mayExist(problem, interpretation, target);
60049 // Type consistency
60050 find mayInstanceOfEAnnotation_class(problem,interpretation,source);
60051 find mayInstanceOfEObject_class(problem,interpretation,target);
60052 // The reference is containment, then a new reference cannot be create if:
60053 // 1. Multiple parents
60054 neg find mustContains4(problem,interpretation,_,target);
60055 // 2. Circle in the containment hierarchy
60056 neg find mustTransitiveContains(source,target);
60057} or {
60058 find mustInRelationcontents_reference_EAnnotation(problem,interpretation,source,target);
60059}
60060/**
60061 * Matcher for detecting tuples t where []references reference EAnnotation(source,target)
60062 */
60063private pattern mustInRelationreferences_reference_EAnnotation(
60064 problem:LogicProblem, interpretation:PartialInterpretation,
60065 source: DefinedElement, target:DefinedElement)
60066{
60067 find interpretation(problem,interpretation);
60068 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
60069 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"references reference EAnnotation");
60070 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
60071 BinaryElementRelationLink.param1(link,source);
60072 BinaryElementRelationLink.param2(link,target);
60073}
60074/**
60075 * Matcher for detecting tuples t where <>references reference EAnnotation(source,target)
60076 */
60077private pattern mayInRelationreferences_reference_EAnnotation(
60078 problem:LogicProblem, interpretation:PartialInterpretation,
60079 source: DefinedElement, target:DefinedElement)
60080{
60081 find interpretation(problem,interpretation);
60082 // The two endpoint of the link have to exist
60083 find mayExist(problem, interpretation, source);
60084 find mayExist(problem, interpretation, target);
60085 // Type consistency
60086 find mayInstanceOfEAnnotation_class(problem,interpretation,source);
60087 find mayInstanceOfEObject_class(problem,interpretation,target);
60088} or {
60089 find mustInRelationreferences_reference_EAnnotation(problem,interpretation,source,target);
60090}
60091/**
60092 * Matcher for detecting tuples t where []eSuperTypes reference EClass(source,target)
60093 */
60094private pattern mustInRelationeSuperTypes_reference_EClass(
60095 problem:LogicProblem, interpretation:PartialInterpretation,
60096 source: DefinedElement, target:DefinedElement)
60097{
60098 find interpretation(problem,interpretation);
60099 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
60100 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eSuperTypes reference EClass");
60101 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
60102 BinaryElementRelationLink.param1(link,source);
60103 BinaryElementRelationLink.param2(link,target);
60104}
60105/**
60106 * Matcher for detecting tuples t where <>eSuperTypes reference EClass(source,target)
60107 */
60108private pattern mayInRelationeSuperTypes_reference_EClass(
60109 problem:LogicProblem, interpretation:PartialInterpretation,
60110 source: DefinedElement, target:DefinedElement)
60111{
60112 find interpretation(problem,interpretation);
60113 // The two endpoint of the link have to exist
60114 find mayExist(problem, interpretation, source);
60115 find mayExist(problem, interpretation, target);
60116 // Type consistency
60117 find mayInstanceOfEClass_class(problem,interpretation,source);
60118 find mayInstanceOfEClass_class(problem,interpretation,target);
60119} or {
60120 find mustInRelationeSuperTypes_reference_EClass(problem,interpretation,source,target);
60121}
60122/**
60123 * Matcher for detecting tuples t where []eOperations reference EClass(source,target)
60124 */
60125private pattern mustInRelationeOperations_reference_EClass(
60126 problem:LogicProblem, interpretation:PartialInterpretation,
60127 source: DefinedElement, target:DefinedElement)
60128{
60129 find interpretation(problem,interpretation);
60130 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
60131 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eOperations reference EClass");
60132 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
60133 BinaryElementRelationLink.param1(link,source);
60134 BinaryElementRelationLink.param2(link,target);
60135}
60136/**
60137 * Matcher for detecting tuples t where <>eOperations reference EClass(source,target)
60138 */
60139private pattern mayInRelationeOperations_reference_EClass(
60140 problem:LogicProblem, interpretation:PartialInterpretation,
60141 source: DefinedElement, target:DefinedElement)
60142{
60143 find interpretation(problem,interpretation);
60144 // The two endpoint of the link have to exist
60145 find mayExist(problem, interpretation, source);
60146 find mayExist(problem, interpretation, target);
60147 // Type consistency
60148 find mayInstanceOfEClass_class(problem,interpretation,source);
60149 find mayInstanceOfEOperation_class(problem,interpretation,target);
60150 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
60151 // the upper bound of the opposite reference multiplicity should be considered.
60152 numberOfExistingOppositeReferences == count find mustInRelationeContainingClass_reference_EOperation(problem,interpretation,target,_);
60153 check(numberOfExistingOppositeReferences < 1);
60154 // The reference is containment, then a new reference cannot be create if:
60155 // 1. Multiple parents
60156 neg find mustContains4(problem,interpretation,_,target);
60157 // 2. Circle in the containment hierarchy
60158 neg find mustTransitiveContains(source,target);
60159} or {
60160 find mustInRelationeOperations_reference_EClass(problem,interpretation,source,target);
60161}
60162/**
60163 * Matcher for detecting tuples t where []eAllAttributes reference EClass(source,target)
60164 */
60165private pattern mustInRelationeAllAttributes_reference_EClass(
60166 problem:LogicProblem, interpretation:PartialInterpretation,
60167 source: DefinedElement, target:DefinedElement)
60168{
60169 find interpretation(problem,interpretation);
60170 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
60171 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllAttributes reference EClass");
60172 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
60173 BinaryElementRelationLink.param1(link,source);
60174 BinaryElementRelationLink.param2(link,target);
60175}
60176/**
60177 * Matcher for detecting tuples t where <>eAllAttributes reference EClass(source,target)
60178 */
60179private pattern mayInRelationeAllAttributes_reference_EClass(
60180 problem:LogicProblem, interpretation:PartialInterpretation,
60181 source: DefinedElement, target:DefinedElement)
60182{
60183 find interpretation(problem,interpretation);
60184 // The two endpoint of the link have to exist
60185 find mayExist(problem, interpretation, source);
60186 find mayExist(problem, interpretation, target);
60187 // Type consistency
60188 find mayInstanceOfEClass_class(problem,interpretation,source);
60189 find mayInstanceOfEAttribute_class(problem,interpretation,target);
60190} or {
60191 find mustInRelationeAllAttributes_reference_EClass(problem,interpretation,source,target);
60192}
60193/**
60194 * Matcher for detecting tuples t where []eAllReferences reference EClass(source,target)
60195 */
60196private pattern mustInRelationeAllReferences_reference_EClass(
60197 problem:LogicProblem, interpretation:PartialInterpretation,
60198 source: DefinedElement, target:DefinedElement)
60199{
60200 find interpretation(problem,interpretation);
60201 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
60202 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllReferences reference EClass");
60203 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
60204 BinaryElementRelationLink.param1(link,source);
60205 BinaryElementRelationLink.param2(link,target);
60206}
60207/**
60208 * Matcher for detecting tuples t where <>eAllReferences reference EClass(source,target)
60209 */
60210private pattern mayInRelationeAllReferences_reference_EClass(
60211 problem:LogicProblem, interpretation:PartialInterpretation,
60212 source: DefinedElement, target:DefinedElement)
60213{
60214 find interpretation(problem,interpretation);
60215 // The two endpoint of the link have to exist
60216 find mayExist(problem, interpretation, source);
60217 find mayExist(problem, interpretation, target);
60218 // Type consistency
60219 find mayInstanceOfEClass_class(problem,interpretation,source);
60220 find mayInstanceOfEReference_class(problem,interpretation,target);
60221} or {
60222 find mustInRelationeAllReferences_reference_EClass(problem,interpretation,source,target);
60223}
60224/**
60225 * Matcher for detecting tuples t where []eReferences reference EClass(source,target)
60226 */
60227private pattern mustInRelationeReferences_reference_EClass(
60228 problem:LogicProblem, interpretation:PartialInterpretation,
60229 source: DefinedElement, target:DefinedElement)
60230{
60231 find interpretation(problem,interpretation);
60232 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
60233 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eReferences reference EClass");
60234 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
60235 BinaryElementRelationLink.param1(link,source);
60236 BinaryElementRelationLink.param2(link,target);
60237}
60238/**
60239 * Matcher for detecting tuples t where <>eReferences reference EClass(source,target)
60240 */
60241private pattern mayInRelationeReferences_reference_EClass(
60242 problem:LogicProblem, interpretation:PartialInterpretation,
60243 source: DefinedElement, target:DefinedElement)
60244{
60245 find interpretation(problem,interpretation);
60246 // The two endpoint of the link have to exist
60247 find mayExist(problem, interpretation, source);
60248 find mayExist(problem, interpretation, target);
60249 // Type consistency
60250 find mayInstanceOfEClass_class(problem,interpretation,source);
60251 find mayInstanceOfEReference_class(problem,interpretation,target);
60252} or {
60253 find mustInRelationeReferences_reference_EClass(problem,interpretation,source,target);
60254}
60255/**
60256 * Matcher for detecting tuples t where []eAttributes reference EClass(source,target)
60257 */
60258private pattern mustInRelationeAttributes_reference_EClass(
60259 problem:LogicProblem, interpretation:PartialInterpretation,
60260 source: DefinedElement, target:DefinedElement)
60261{
60262 find interpretation(problem,interpretation);
60263 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
60264 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAttributes reference EClass");
60265 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
60266 BinaryElementRelationLink.param1(link,source);
60267 BinaryElementRelationLink.param2(link,target);
60268}
60269/**
60270 * Matcher for detecting tuples t where <>eAttributes reference EClass(source,target)
60271 */
60272private pattern mayInRelationeAttributes_reference_EClass(
60273 problem:LogicProblem, interpretation:PartialInterpretation,
60274 source: DefinedElement, target:DefinedElement)
60275{
60276 find interpretation(problem,interpretation);
60277 // The two endpoint of the link have to exist
60278 find mayExist(problem, interpretation, source);
60279 find mayExist(problem, interpretation, target);
60280 // Type consistency
60281 find mayInstanceOfEClass_class(problem,interpretation,source);
60282 find mayInstanceOfEAttribute_class(problem,interpretation,target);
60283} or {
60284 find mustInRelationeAttributes_reference_EClass(problem,interpretation,source,target);
60285}
60286/**
60287 * Matcher for detecting tuples t where []eAllContainments reference EClass(source,target)
60288 */
60289private pattern mustInRelationeAllContainments_reference_EClass(
60290 problem:LogicProblem, interpretation:PartialInterpretation,
60291 source: DefinedElement, target:DefinedElement)
60292{
60293 find interpretation(problem,interpretation);
60294 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
60295 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllContainments reference EClass");
60296 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
60297 BinaryElementRelationLink.param1(link,source);
60298 BinaryElementRelationLink.param2(link,target);
60299}
60300/**
60301 * Matcher for detecting tuples t where <>eAllContainments reference EClass(source,target)
60302 */
60303private pattern mayInRelationeAllContainments_reference_EClass(
60304 problem:LogicProblem, interpretation:PartialInterpretation,
60305 source: DefinedElement, target:DefinedElement)
60306{
60307 find interpretation(problem,interpretation);
60308 // The two endpoint of the link have to exist
60309 find mayExist(problem, interpretation, source);
60310 find mayExist(problem, interpretation, target);
60311 // Type consistency
60312 find mayInstanceOfEClass_class(problem,interpretation,source);
60313 find mayInstanceOfEReference_class(problem,interpretation,target);
60314} or {
60315 find mustInRelationeAllContainments_reference_EClass(problem,interpretation,source,target);
60316}
60317/**
60318 * Matcher for detecting tuples t where []eAllOperations reference EClass(source,target)
60319 */
60320private pattern mustInRelationeAllOperations_reference_EClass(
60321 problem:LogicProblem, interpretation:PartialInterpretation,
60322 source: DefinedElement, target:DefinedElement)
60323{
60324 find interpretation(problem,interpretation);
60325 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
60326 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllOperations reference EClass");
60327 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
60328 BinaryElementRelationLink.param1(link,source);
60329 BinaryElementRelationLink.param2(link,target);
60330}
60331/**
60332 * Matcher for detecting tuples t where <>eAllOperations reference EClass(source,target)
60333 */
60334private pattern mayInRelationeAllOperations_reference_EClass(
60335 problem:LogicProblem, interpretation:PartialInterpretation,
60336 source: DefinedElement, target:DefinedElement)
60337{
60338 find interpretation(problem,interpretation);
60339 // The two endpoint of the link have to exist
60340 find mayExist(problem, interpretation, source);
60341 find mayExist(problem, interpretation, target);
60342 // Type consistency
60343 find mayInstanceOfEClass_class(problem,interpretation,source);
60344 find mayInstanceOfEOperation_class(problem,interpretation,target);
60345} or {
60346 find mustInRelationeAllOperations_reference_EClass(problem,interpretation,source,target);
60347}
60348/**
60349 * Matcher for detecting tuples t where []eAllStructuralFeatures reference EClass(source,target)
60350 */
60351private pattern mustInRelationeAllStructuralFeatures_reference_EClass(
60352 problem:LogicProblem, interpretation:PartialInterpretation,
60353 source: DefinedElement, target:DefinedElement)
60354{
60355 find interpretation(problem,interpretation);
60356 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
60357 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllStructuralFeatures reference EClass");
60358 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
60359 BinaryElementRelationLink.param1(link,source);
60360 BinaryElementRelationLink.param2(link,target);
60361}
60362/**
60363 * Matcher for detecting tuples t where <>eAllStructuralFeatures reference EClass(source,target)
60364 */
60365private pattern mayInRelationeAllStructuralFeatures_reference_EClass(
60366 problem:LogicProblem, interpretation:PartialInterpretation,
60367 source: DefinedElement, target:DefinedElement)
60368{
60369 find interpretation(problem,interpretation);
60370 // The two endpoint of the link have to exist
60371 find mayExist(problem, interpretation, source);
60372 find mayExist(problem, interpretation, target);
60373 // Type consistency
60374 find mayInstanceOfEClass_class(problem,interpretation,source);
60375 find mayInstanceOfEStructuralFeature_class(problem,interpretation,target);
60376} or {
60377 find mustInRelationeAllStructuralFeatures_reference_EClass(problem,interpretation,source,target);
60378}
60379/**
60380 * Matcher for detecting tuples t where []eAllSuperTypes reference EClass(source,target)
60381 */
60382private pattern mustInRelationeAllSuperTypes_reference_EClass(
60383 problem:LogicProblem, interpretation:PartialInterpretation,
60384 source: DefinedElement, target:DefinedElement)
60385{
60386 find interpretation(problem,interpretation);
60387 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
60388 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllSuperTypes reference EClass");
60389 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
60390 BinaryElementRelationLink.param1(link,source);
60391 BinaryElementRelationLink.param2(link,target);
60392}
60393/**
60394 * Matcher for detecting tuples t where <>eAllSuperTypes reference EClass(source,target)
60395 */
60396private pattern mayInRelationeAllSuperTypes_reference_EClass(
60397 problem:LogicProblem, interpretation:PartialInterpretation,
60398 source: DefinedElement, target:DefinedElement)
60399{
60400 find interpretation(problem,interpretation);
60401 // The two endpoint of the link have to exist
60402 find mayExist(problem, interpretation, source);
60403 find mayExist(problem, interpretation, target);
60404 // Type consistency
60405 find mayInstanceOfEClass_class(problem,interpretation,source);
60406 find mayInstanceOfEClass_class(problem,interpretation,target);
60407} or {
60408 find mustInRelationeAllSuperTypes_reference_EClass(problem,interpretation,source,target);
60409}
60410/**
60411 * Matcher for detecting tuples t where []eIDAttribute reference EClass(source,target)
60412 */
60413private pattern mustInRelationeIDAttribute_reference_EClass(
60414 problem:LogicProblem, interpretation:PartialInterpretation,
60415 source: DefinedElement, target:DefinedElement)
60416{
60417 find interpretation(problem,interpretation);
60418 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
60419 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eIDAttribute reference EClass");
60420 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
60421 BinaryElementRelationLink.param1(link,source);
60422 BinaryElementRelationLink.param2(link,target);
60423}
60424/**
60425 * Matcher for detecting tuples t where <>eIDAttribute reference EClass(source,target)
60426 */
60427private pattern mayInRelationeIDAttribute_reference_EClass(
60428 problem:LogicProblem, interpretation:PartialInterpretation,
60429 source: DefinedElement, target:DefinedElement)
60430{
60431 find interpretation(problem,interpretation);
60432 // The two endpoint of the link have to exist
60433 find mayExist(problem, interpretation, source);
60434 find mayExist(problem, interpretation, target);
60435 // Type consistency
60436 find mayInstanceOfEClass_class(problem,interpretation,source);
60437 find mayInstanceOfEAttribute_class(problem,interpretation,target);
60438 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
60439 // the upper bound of the multiplicity should be considered.
60440 numberOfExistingReferences == count find mustInRelationeIDAttribute_reference_EClass(problem,interpretation,source,_);
60441 check(numberOfExistingReferences < 1);
60442} or {
60443 find mustInRelationeIDAttribute_reference_EClass(problem,interpretation,source,target);
60444}
60445/**
60446 * Matcher for detecting tuples t where []eStructuralFeatures reference EClass(source,target)
60447 */
60448private pattern mustInRelationeStructuralFeatures_reference_EClass(
60449 problem:LogicProblem, interpretation:PartialInterpretation,
60450 source: DefinedElement, target:DefinedElement)
60451{
60452 find interpretation(problem,interpretation);
60453 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
60454 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eStructuralFeatures reference EClass");
60455 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
60456 BinaryElementRelationLink.param1(link,source);
60457 BinaryElementRelationLink.param2(link,target);
60458}
60459/**
60460 * Matcher for detecting tuples t where <>eStructuralFeatures reference EClass(source,target)
60461 */
60462private pattern mayInRelationeStructuralFeatures_reference_EClass(
60463 problem:LogicProblem, interpretation:PartialInterpretation,
60464 source: DefinedElement, target:DefinedElement)
60465{
60466 find interpretation(problem,interpretation);
60467 // The two endpoint of the link have to exist
60468 find mayExist(problem, interpretation, source);
60469 find mayExist(problem, interpretation, target);
60470 // Type consistency
60471 find mayInstanceOfEClass_class(problem,interpretation,source);
60472 find mayInstanceOfEStructuralFeature_class(problem,interpretation,target);
60473 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
60474 // the upper bound of the opposite reference multiplicity should be considered.
60475 numberOfExistingOppositeReferences == count find mustInRelationeContainingClass_reference_EStructuralFeature(problem,interpretation,target,_);
60476 check(numberOfExistingOppositeReferences < 1);
60477 // The reference is containment, then a new reference cannot be create if:
60478 // 1. Multiple parents
60479 neg find mustContains4(problem,interpretation,_,target);
60480 // 2. Circle in the containment hierarchy
60481 neg find mustTransitiveContains(source,target);
60482} or {
60483 find mustInRelationeStructuralFeatures_reference_EClass(problem,interpretation,source,target);
60484}
60485/**
60486 * Matcher for detecting tuples t where []eGenericSuperTypes reference EClass(source,target)
60487 */
60488private pattern mustInRelationeGenericSuperTypes_reference_EClass(
60489 problem:LogicProblem, interpretation:PartialInterpretation,
60490 source: DefinedElement, target:DefinedElement)
60491{
60492 find interpretation(problem,interpretation);
60493 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
60494 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eGenericSuperTypes reference EClass");
60495 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
60496 BinaryElementRelationLink.param1(link,source);
60497 BinaryElementRelationLink.param2(link,target);
60498}
60499/**
60500 * Matcher for detecting tuples t where <>eGenericSuperTypes reference EClass(source,target)
60501 */
60502private pattern mayInRelationeGenericSuperTypes_reference_EClass(
60503 problem:LogicProblem, interpretation:PartialInterpretation,
60504 source: DefinedElement, target:DefinedElement)
60505{
60506 find interpretation(problem,interpretation);
60507 // The two endpoint of the link have to exist
60508 find mayExist(problem, interpretation, source);
60509 find mayExist(problem, interpretation, target);
60510 // Type consistency
60511 find mayInstanceOfEClass_class(problem,interpretation,source);
60512 find mayInstanceOfEGenericType_class(problem,interpretation,target);
60513 // The reference is containment, then a new reference cannot be create if:
60514 // 1. Multiple parents
60515 neg find mustContains4(problem,interpretation,_,target);
60516 // 2. Circle in the containment hierarchy
60517 neg find mustTransitiveContains(source,target);
60518} or {
60519 find mustInRelationeGenericSuperTypes_reference_EClass(problem,interpretation,source,target);
60520}
60521/**
60522 * Matcher for detecting tuples t where []eAllGenericSuperTypes reference EClass(source,target)
60523 */
60524private pattern mustInRelationeAllGenericSuperTypes_reference_EClass(
60525 problem:LogicProblem, interpretation:PartialInterpretation,
60526 source: DefinedElement, target:DefinedElement)
60527{
60528 find interpretation(problem,interpretation);
60529 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
60530 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllGenericSuperTypes reference EClass");
60531 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
60532 BinaryElementRelationLink.param1(link,source);
60533 BinaryElementRelationLink.param2(link,target);
60534}
60535/**
60536 * Matcher for detecting tuples t where <>eAllGenericSuperTypes reference EClass(source,target)
60537 */
60538private pattern mayInRelationeAllGenericSuperTypes_reference_EClass(
60539 problem:LogicProblem, interpretation:PartialInterpretation,
60540 source: DefinedElement, target:DefinedElement)
60541{
60542 find interpretation(problem,interpretation);
60543 // The two endpoint of the link have to exist
60544 find mayExist(problem, interpretation, source);
60545 find mayExist(problem, interpretation, target);
60546 // Type consistency
60547 find mayInstanceOfEClass_class(problem,interpretation,source);
60548 find mayInstanceOfEGenericType_class(problem,interpretation,target);
60549} or {
60550 find mustInRelationeAllGenericSuperTypes_reference_EClass(problem,interpretation,source,target);
60551}
60552/**
60553 * Matcher for detecting tuples t where []ePackage reference EClassifier(source,target)
60554 */
60555private pattern mustInRelationePackage_reference_EClassifier(
60556 problem:LogicProblem, interpretation:PartialInterpretation,
60557 source: DefinedElement, target:DefinedElement)
60558{
60559 find interpretation(problem,interpretation);
60560 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
60561 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"ePackage reference EClassifier");
60562 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
60563 BinaryElementRelationLink.param1(link,source);
60564 BinaryElementRelationLink.param2(link,target);
60565}
60566/**
60567 * Matcher for detecting tuples t where <>ePackage reference EClassifier(source,target)
60568 */
60569private pattern mayInRelationePackage_reference_EClassifier(
60570 problem:LogicProblem, interpretation:PartialInterpretation,
60571 source: DefinedElement, target:DefinedElement)
60572{
60573 find interpretation(problem,interpretation);
60574 // The two endpoint of the link have to exist
60575 find mayExist(problem, interpretation, source);
60576 find mayExist(problem, interpretation, target);
60577 // Type consistency
60578 find mayInstanceOfEClassifier_class(problem,interpretation,source);
60579 find mayInstanceOfEPackage_class(problem,interpretation,target);
60580 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
60581 // the upper bound of the multiplicity should be considered.
60582 numberOfExistingReferences == count find mustInRelationePackage_reference_EClassifier(problem,interpretation,source,_);
60583 check(numberOfExistingReferences < 1);
60584 // The eOpposite of the reference is containment, then a referene cannot be created if
60585 // 1. Multiple parents
60586 neg find mustContains4(problem,interpretation,source,_);
60587 // 2. Circle in the containment hierarchy
60588 neg find mustTransitiveContains(source,target);
60589} or {
60590 find mustInRelationePackage_reference_EClassifier(problem,interpretation,source,target);
60591}
60592/**
60593 * Matcher for detecting tuples t where []eTypeParameters reference EClassifier(source,target)
60594 */
60595private pattern mustInRelationeTypeParameters_reference_EClassifier(
60596 problem:LogicProblem, interpretation:PartialInterpretation,
60597 source: DefinedElement, target:DefinedElement)
60598{
60599 find interpretation(problem,interpretation);
60600 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
60601 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eTypeParameters reference EClassifier");
60602 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
60603 BinaryElementRelationLink.param1(link,source);
60604 BinaryElementRelationLink.param2(link,target);
60605}
60606/**
60607 * Matcher for detecting tuples t where <>eTypeParameters reference EClassifier(source,target)
60608 */
60609private pattern mayInRelationeTypeParameters_reference_EClassifier(
60610 problem:LogicProblem, interpretation:PartialInterpretation,
60611 source: DefinedElement, target:DefinedElement)
60612{
60613 find interpretation(problem,interpretation);
60614 // The two endpoint of the link have to exist
60615 find mayExist(problem, interpretation, source);
60616 find mayExist(problem, interpretation, target);
60617 // Type consistency
60618 find mayInstanceOfEClassifier_class(problem,interpretation,source);
60619 find mayInstanceOfETypeParameter_class(problem,interpretation,target);
60620 // The reference is containment, then a new reference cannot be create if:
60621 // 1. Multiple parents
60622 neg find mustContains4(problem,interpretation,_,target);
60623 // 2. Circle in the containment hierarchy
60624 neg find mustTransitiveContains(source,target);
60625} or {
60626 find mustInRelationeTypeParameters_reference_EClassifier(problem,interpretation,source,target);
60627}
60628/**
60629 * Matcher for detecting tuples t where []eLiterals reference EEnum(source,target)
60630 */
60631private pattern mustInRelationeLiterals_reference_EEnum(
60632 problem:LogicProblem, interpretation:PartialInterpretation,
60633 source: DefinedElement, target:DefinedElement)
60634{
60635 find interpretation(problem,interpretation);
60636 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
60637 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eLiterals reference EEnum");
60638 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
60639 BinaryElementRelationLink.param1(link,source);
60640 BinaryElementRelationLink.param2(link,target);
60641}
60642/**
60643 * Matcher for detecting tuples t where <>eLiterals reference EEnum(source,target)
60644 */
60645private pattern mayInRelationeLiterals_reference_EEnum(
60646 problem:LogicProblem, interpretation:PartialInterpretation,
60647 source: DefinedElement, target:DefinedElement)
60648{
60649 find interpretation(problem,interpretation);
60650 // The two endpoint of the link have to exist
60651 find mayExist(problem, interpretation, source);
60652 find mayExist(problem, interpretation, target);
60653 // Type consistency
60654 find mayInstanceOfEEnum_class(problem,interpretation,source);
60655 find mayInstanceOfEEnumLiteral_class(problem,interpretation,target);
60656 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
60657 // the upper bound of the opposite reference multiplicity should be considered.
60658 numberOfExistingOppositeReferences == count find mustInRelationeEnum_reference_EEnumLiteral(problem,interpretation,target,_);
60659 check(numberOfExistingOppositeReferences < 1);
60660 // The reference is containment, then a new reference cannot be create if:
60661 // 1. Multiple parents
60662 neg find mustContains4(problem,interpretation,_,target);
60663 // 2. Circle in the containment hierarchy
60664 neg find mustTransitiveContains(source,target);
60665} or {
60666 find mustInRelationeLiterals_reference_EEnum(problem,interpretation,source,target);
60667}
60668/**
60669 * Matcher for detecting tuples t where []eEnum reference EEnumLiteral(source,target)
60670 */
60671private pattern mustInRelationeEnum_reference_EEnumLiteral(
60672 problem:LogicProblem, interpretation:PartialInterpretation,
60673 source: DefinedElement, target:DefinedElement)
60674{
60675 find interpretation(problem,interpretation);
60676 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
60677 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eEnum reference EEnumLiteral");
60678 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
60679 BinaryElementRelationLink.param1(link,source);
60680 BinaryElementRelationLink.param2(link,target);
60681}
60682/**
60683 * Matcher for detecting tuples t where <>eEnum reference EEnumLiteral(source,target)
60684 */
60685private pattern mayInRelationeEnum_reference_EEnumLiteral(
60686 problem:LogicProblem, interpretation:PartialInterpretation,
60687 source: DefinedElement, target:DefinedElement)
60688{
60689 find interpretation(problem,interpretation);
60690 // The two endpoint of the link have to exist
60691 find mayExist(problem, interpretation, source);
60692 find mayExist(problem, interpretation, target);
60693 // Type consistency
60694 find mayInstanceOfEEnumLiteral_class(problem,interpretation,source);
60695 find mayInstanceOfEEnum_class(problem,interpretation,target);
60696 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
60697 // the upper bound of the multiplicity should be considered.
60698 numberOfExistingReferences == count find mustInRelationeEnum_reference_EEnumLiteral(problem,interpretation,source,_);
60699 check(numberOfExistingReferences < 1);
60700 // The eOpposite of the reference is containment, then a referene cannot be created if
60701 // 1. Multiple parents
60702 neg find mustContains4(problem,interpretation,source,_);
60703 // 2. Circle in the containment hierarchy
60704 neg find mustTransitiveContains(source,target);
60705} or {
60706 find mustInRelationeEnum_reference_EEnumLiteral(problem,interpretation,source,target);
60707}
60708/**
60709 * Matcher for detecting tuples t where []eAnnotations reference EModelElement(source,target)
60710 */
60711private pattern mustInRelationeAnnotations_reference_EModelElement(
60712 problem:LogicProblem, interpretation:PartialInterpretation,
60713 source: DefinedElement, target:DefinedElement)
60714{
60715 find interpretation(problem,interpretation);
60716 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
60717 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAnnotations reference EModelElement");
60718 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
60719 BinaryElementRelationLink.param1(link,source);
60720 BinaryElementRelationLink.param2(link,target);
60721}
60722/**
60723 * Matcher for detecting tuples t where <>eAnnotations reference EModelElement(source,target)
60724 */
60725private pattern mayInRelationeAnnotations_reference_EModelElement(
60726 problem:LogicProblem, interpretation:PartialInterpretation,
60727 source: DefinedElement, target:DefinedElement)
60728{
60729 find interpretation(problem,interpretation);
60730 // The two endpoint of the link have to exist
60731 find mayExist(problem, interpretation, source);
60732 find mayExist(problem, interpretation, target);
60733 // Type consistency
60734 find mayInstanceOfEModelElement_class(problem,interpretation,source);
60735 find mayInstanceOfEAnnotation_class(problem,interpretation,target);
60736 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
60737 // the upper bound of the opposite reference multiplicity should be considered.
60738 numberOfExistingOppositeReferences == count find mustInRelationeModelElement_reference_EAnnotation(problem,interpretation,target,_);
60739 check(numberOfExistingOppositeReferences < 1);
60740 // The reference is containment, then a new reference cannot be create if:
60741 // 1. Multiple parents
60742 neg find mustContains4(problem,interpretation,_,target);
60743 // 2. Circle in the containment hierarchy
60744 neg find mustTransitiveContains(source,target);
60745} or {
60746 find mustInRelationeAnnotations_reference_EModelElement(problem,interpretation,source,target);
60747}
60748/**
60749 * Matcher for detecting tuples t where []eContainingClass reference EOperation(source,target)
60750 */
60751private pattern mustInRelationeContainingClass_reference_EOperation(
60752 problem:LogicProblem, interpretation:PartialInterpretation,
60753 source: DefinedElement, target:DefinedElement)
60754{
60755 find interpretation(problem,interpretation);
60756 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
60757 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eContainingClass reference EOperation");
60758 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
60759 BinaryElementRelationLink.param1(link,source);
60760 BinaryElementRelationLink.param2(link,target);
60761}
60762/**
60763 * Matcher for detecting tuples t where <>eContainingClass reference EOperation(source,target)
60764 */
60765private pattern mayInRelationeContainingClass_reference_EOperation(
60766 problem:LogicProblem, interpretation:PartialInterpretation,
60767 source: DefinedElement, target:DefinedElement)
60768{
60769 find interpretation(problem,interpretation);
60770 // The two endpoint of the link have to exist
60771 find mayExist(problem, interpretation, source);
60772 find mayExist(problem, interpretation, target);
60773 // Type consistency
60774 find mayInstanceOfEOperation_class(problem,interpretation,source);
60775 find mayInstanceOfEClass_class(problem,interpretation,target);
60776 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
60777 // the upper bound of the multiplicity should be considered.
60778 numberOfExistingReferences == count find mustInRelationeContainingClass_reference_EOperation(problem,interpretation,source,_);
60779 check(numberOfExistingReferences < 1);
60780 // The eOpposite of the reference is containment, then a referene cannot be created if
60781 // 1. Multiple parents
60782 neg find mustContains4(problem,interpretation,source,_);
60783 // 2. Circle in the containment hierarchy
60784 neg find mustTransitiveContains(source,target);
60785} or {
60786 find mustInRelationeContainingClass_reference_EOperation(problem,interpretation,source,target);
60787}
60788/**
60789 * Matcher for detecting tuples t where []eTypeParameters reference EOperation(source,target)
60790 */
60791private pattern mustInRelationeTypeParameters_reference_EOperation(
60792 problem:LogicProblem, interpretation:PartialInterpretation,
60793 source: DefinedElement, target:DefinedElement)
60794{
60795 find interpretation(problem,interpretation);
60796 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
60797 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eTypeParameters reference EOperation");
60798 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
60799 BinaryElementRelationLink.param1(link,source);
60800 BinaryElementRelationLink.param2(link,target);
60801}
60802/**
60803 * Matcher for detecting tuples t where <>eTypeParameters reference EOperation(source,target)
60804 */
60805private pattern mayInRelationeTypeParameters_reference_EOperation(
60806 problem:LogicProblem, interpretation:PartialInterpretation,
60807 source: DefinedElement, target:DefinedElement)
60808{
60809 find interpretation(problem,interpretation);
60810 // The two endpoint of the link have to exist
60811 find mayExist(problem, interpretation, source);
60812 find mayExist(problem, interpretation, target);
60813 // Type consistency
60814 find mayInstanceOfEOperation_class(problem,interpretation,source);
60815 find mayInstanceOfETypeParameter_class(problem,interpretation,target);
60816 // The reference is containment, then a new reference cannot be create if:
60817 // 1. Multiple parents
60818 neg find mustContains4(problem,interpretation,_,target);
60819 // 2. Circle in the containment hierarchy
60820 neg find mustTransitiveContains(source,target);
60821} or {
60822 find mustInRelationeTypeParameters_reference_EOperation(problem,interpretation,source,target);
60823}
60824/**
60825 * Matcher for detecting tuples t where []eParameters reference EOperation(source,target)
60826 */
60827private pattern mustInRelationeParameters_reference_EOperation(
60828 problem:LogicProblem, interpretation:PartialInterpretation,
60829 source: DefinedElement, target:DefinedElement)
60830{
60831 find interpretation(problem,interpretation);
60832 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
60833 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eParameters reference EOperation");
60834 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
60835 BinaryElementRelationLink.param1(link,source);
60836 BinaryElementRelationLink.param2(link,target);
60837}
60838/**
60839 * Matcher for detecting tuples t where <>eParameters reference EOperation(source,target)
60840 */
60841private pattern mayInRelationeParameters_reference_EOperation(
60842 problem:LogicProblem, interpretation:PartialInterpretation,
60843 source: DefinedElement, target:DefinedElement)
60844{
60845 find interpretation(problem,interpretation);
60846 // The two endpoint of the link have to exist
60847 find mayExist(problem, interpretation, source);
60848 find mayExist(problem, interpretation, target);
60849 // Type consistency
60850 find mayInstanceOfEOperation_class(problem,interpretation,source);
60851 find mayInstanceOfEParameter_class(problem,interpretation,target);
60852 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
60853 // the upper bound of the opposite reference multiplicity should be considered.
60854 numberOfExistingOppositeReferences == count find mustInRelationeOperation_reference_EParameter(problem,interpretation,target,_);
60855 check(numberOfExistingOppositeReferences < 1);
60856 // The reference is containment, then a new reference cannot be create if:
60857 // 1. Multiple parents
60858 neg find mustContains4(problem,interpretation,_,target);
60859 // 2. Circle in the containment hierarchy
60860 neg find mustTransitiveContains(source,target);
60861} or {
60862 find mustInRelationeParameters_reference_EOperation(problem,interpretation,source,target);
60863}
60864/**
60865 * Matcher for detecting tuples t where []eExceptions reference EOperation(source,target)
60866 */
60867private pattern mustInRelationeExceptions_reference_EOperation(
60868 problem:LogicProblem, interpretation:PartialInterpretation,
60869 source: DefinedElement, target:DefinedElement)
60870{
60871 find interpretation(problem,interpretation);
60872 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
60873 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eExceptions reference EOperation");
60874 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
60875 BinaryElementRelationLink.param1(link,source);
60876 BinaryElementRelationLink.param2(link,target);
60877}
60878/**
60879 * Matcher for detecting tuples t where <>eExceptions reference EOperation(source,target)
60880 */
60881private pattern mayInRelationeExceptions_reference_EOperation(
60882 problem:LogicProblem, interpretation:PartialInterpretation,
60883 source: DefinedElement, target:DefinedElement)
60884{
60885 find interpretation(problem,interpretation);
60886 // The two endpoint of the link have to exist
60887 find mayExist(problem, interpretation, source);
60888 find mayExist(problem, interpretation, target);
60889 // Type consistency
60890 find mayInstanceOfEOperation_class(problem,interpretation,source);
60891 find mayInstanceOfEClassifier_class(problem,interpretation,target);
60892} or {
60893 find mustInRelationeExceptions_reference_EOperation(problem,interpretation,source,target);
60894}
60895/**
60896 * Matcher for detecting tuples t where []eGenericExceptions reference EOperation(source,target)
60897 */
60898private pattern mustInRelationeGenericExceptions_reference_EOperation(
60899 problem:LogicProblem, interpretation:PartialInterpretation,
60900 source: DefinedElement, target:DefinedElement)
60901{
60902 find interpretation(problem,interpretation);
60903 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
60904 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eGenericExceptions reference EOperation");
60905 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
60906 BinaryElementRelationLink.param1(link,source);
60907 BinaryElementRelationLink.param2(link,target);
60908}
60909/**
60910 * Matcher for detecting tuples t where <>eGenericExceptions reference EOperation(source,target)
60911 */
60912private pattern mayInRelationeGenericExceptions_reference_EOperation(
60913 problem:LogicProblem, interpretation:PartialInterpretation,
60914 source: DefinedElement, target:DefinedElement)
60915{
60916 find interpretation(problem,interpretation);
60917 // The two endpoint of the link have to exist
60918 find mayExist(problem, interpretation, source);
60919 find mayExist(problem, interpretation, target);
60920 // Type consistency
60921 find mayInstanceOfEOperation_class(problem,interpretation,source);
60922 find mayInstanceOfEGenericType_class(problem,interpretation,target);
60923 // The reference is containment, then a new reference cannot be create if:
60924 // 1. Multiple parents
60925 neg find mustContains4(problem,interpretation,_,target);
60926 // 2. Circle in the containment hierarchy
60927 neg find mustTransitiveContains(source,target);
60928} or {
60929 find mustInRelationeGenericExceptions_reference_EOperation(problem,interpretation,source,target);
60930}
60931/**
60932 * Matcher for detecting tuples t where []eClassifiers reference EPackage(source,target)
60933 */
60934private pattern mustInRelationeClassifiers_reference_EPackage(
60935 problem:LogicProblem, interpretation:PartialInterpretation,
60936 source: DefinedElement, target:DefinedElement)
60937{
60938 find interpretation(problem,interpretation);
60939 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
60940 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eClassifiers reference EPackage");
60941 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
60942 BinaryElementRelationLink.param1(link,source);
60943 BinaryElementRelationLink.param2(link,target);
60944}
60945/**
60946 * Matcher for detecting tuples t where <>eClassifiers reference EPackage(source,target)
60947 */
60948private pattern mayInRelationeClassifiers_reference_EPackage(
60949 problem:LogicProblem, interpretation:PartialInterpretation,
60950 source: DefinedElement, target:DefinedElement)
60951{
60952 find interpretation(problem,interpretation);
60953 // The two endpoint of the link have to exist
60954 find mayExist(problem, interpretation, source);
60955 find mayExist(problem, interpretation, target);
60956 // Type consistency
60957 find mayInstanceOfEPackage_class(problem,interpretation,source);
60958 find mayInstanceOfEClassifier_class(problem,interpretation,target);
60959 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
60960 // the upper bound of the opposite reference multiplicity should be considered.
60961 numberOfExistingOppositeReferences == count find mustInRelationePackage_reference_EClassifier(problem,interpretation,target,_);
60962 check(numberOfExistingOppositeReferences < 1);
60963 // The reference is containment, then a new reference cannot be create if:
60964 // 1. Multiple parents
60965 neg find mustContains4(problem,interpretation,_,target);
60966 // 2. Circle in the containment hierarchy
60967 neg find mustTransitiveContains(source,target);
60968} or {
60969 find mustInRelationeClassifiers_reference_EPackage(problem,interpretation,source,target);
60970}
60971/**
60972 * Matcher for detecting tuples t where []eSubpackages reference EPackage(source,target)
60973 */
60974private pattern mustInRelationeSubpackages_reference_EPackage(
60975 problem:LogicProblem, interpretation:PartialInterpretation,
60976 source: DefinedElement, target:DefinedElement)
60977{
60978 find interpretation(problem,interpretation);
60979 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
60980 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eSubpackages reference EPackage");
60981 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
60982 BinaryElementRelationLink.param1(link,source);
60983 BinaryElementRelationLink.param2(link,target);
60984}
60985/**
60986 * Matcher for detecting tuples t where <>eSubpackages reference EPackage(source,target)
60987 */
60988private pattern mayInRelationeSubpackages_reference_EPackage(
60989 problem:LogicProblem, interpretation:PartialInterpretation,
60990 source: DefinedElement, target:DefinedElement)
60991{
60992 find interpretation(problem,interpretation);
60993 // The two endpoint of the link have to exist
60994 find mayExist(problem, interpretation, source);
60995 find mayExist(problem, interpretation, target);
60996 // Type consistency
60997 find mayInstanceOfEPackage_class(problem,interpretation,source);
60998 find mayInstanceOfEPackage_class(problem,interpretation,target);
60999 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
61000 // the upper bound of the opposite reference multiplicity should be considered.
61001 numberOfExistingOppositeReferences == count find mustInRelationeSuperPackage_reference_EPackage(problem,interpretation,target,_);
61002 check(numberOfExistingOppositeReferences < 1);
61003 // The reference is containment, then a new reference cannot be create if:
61004 // 1. Multiple parents
61005 neg find mustContains4(problem,interpretation,_,target);
61006 // 2. Circle in the containment hierarchy
61007 neg find mustTransitiveContains(source,target);
61008} or {
61009 find mustInRelationeSubpackages_reference_EPackage(problem,interpretation,source,target);
61010}
61011/**
61012 * Matcher for detecting tuples t where []eSuperPackage reference EPackage(source,target)
61013 */
61014private pattern mustInRelationeSuperPackage_reference_EPackage(
61015 problem:LogicProblem, interpretation:PartialInterpretation,
61016 source: DefinedElement, target:DefinedElement)
61017{
61018 find interpretation(problem,interpretation);
61019 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
61020 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eSuperPackage reference EPackage");
61021 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
61022 BinaryElementRelationLink.param1(link,source);
61023 BinaryElementRelationLink.param2(link,target);
61024}
61025/**
61026 * Matcher for detecting tuples t where <>eSuperPackage reference EPackage(source,target)
61027 */
61028private pattern mayInRelationeSuperPackage_reference_EPackage(
61029 problem:LogicProblem, interpretation:PartialInterpretation,
61030 source: DefinedElement, target:DefinedElement)
61031{
61032 find interpretation(problem,interpretation);
61033 // The two endpoint of the link have to exist
61034 find mayExist(problem, interpretation, source);
61035 find mayExist(problem, interpretation, target);
61036 // Type consistency
61037 find mayInstanceOfEPackage_class(problem,interpretation,source);
61038 find mayInstanceOfEPackage_class(problem,interpretation,target);
61039 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
61040 // the upper bound of the multiplicity should be considered.
61041 numberOfExistingReferences == count find mustInRelationeSuperPackage_reference_EPackage(problem,interpretation,source,_);
61042 check(numberOfExistingReferences < 1);
61043 // The eOpposite of the reference is containment, then a referene cannot be created if
61044 // 1. Multiple parents
61045 neg find mustContains4(problem,interpretation,source,_);
61046 // 2. Circle in the containment hierarchy
61047 neg find mustTransitiveContains(source,target);
61048} or {
61049 find mustInRelationeSuperPackage_reference_EPackage(problem,interpretation,source,target);
61050}
61051/**
61052 * Matcher for detecting tuples t where []eOperation reference EParameter(source,target)
61053 */
61054private pattern mustInRelationeOperation_reference_EParameter(
61055 problem:LogicProblem, interpretation:PartialInterpretation,
61056 source: DefinedElement, target:DefinedElement)
61057{
61058 find interpretation(problem,interpretation);
61059 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
61060 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eOperation reference EParameter");
61061 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
61062 BinaryElementRelationLink.param1(link,source);
61063 BinaryElementRelationLink.param2(link,target);
61064}
61065/**
61066 * Matcher for detecting tuples t where <>eOperation reference EParameter(source,target)
61067 */
61068private pattern mayInRelationeOperation_reference_EParameter(
61069 problem:LogicProblem, interpretation:PartialInterpretation,
61070 source: DefinedElement, target:DefinedElement)
61071{
61072 find interpretation(problem,interpretation);
61073 // The two endpoint of the link have to exist
61074 find mayExist(problem, interpretation, source);
61075 find mayExist(problem, interpretation, target);
61076 // Type consistency
61077 find mayInstanceOfEParameter_class(problem,interpretation,source);
61078 find mayInstanceOfEOperation_class(problem,interpretation,target);
61079 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
61080 // the upper bound of the multiplicity should be considered.
61081 numberOfExistingReferences == count find mustInRelationeOperation_reference_EParameter(problem,interpretation,source,_);
61082 check(numberOfExistingReferences < 1);
61083 // The eOpposite of the reference is containment, then a referene cannot be created if
61084 // 1. Multiple parents
61085 neg find mustContains4(problem,interpretation,source,_);
61086 // 2. Circle in the containment hierarchy
61087 neg find mustTransitiveContains(source,target);
61088} or {
61089 find mustInRelationeOperation_reference_EParameter(problem,interpretation,source,target);
61090}
61091/**
61092 * Matcher for detecting tuples t where []eOpposite reference EReference(source,target)
61093 */
61094private pattern mustInRelationeOpposite_reference_EReference(
61095 problem:LogicProblem, interpretation:PartialInterpretation,
61096 source: DefinedElement, target:DefinedElement)
61097{
61098 find interpretation(problem,interpretation);
61099 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
61100 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eOpposite reference EReference");
61101 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
61102 BinaryElementRelationLink.param1(link,source);
61103 BinaryElementRelationLink.param2(link,target);
61104}
61105/**
61106 * Matcher for detecting tuples t where <>eOpposite reference EReference(source,target)
61107 */
61108private pattern mayInRelationeOpposite_reference_EReference(
61109 problem:LogicProblem, interpretation:PartialInterpretation,
61110 source: DefinedElement, target:DefinedElement)
61111{
61112 find interpretation(problem,interpretation);
61113 // The two endpoint of the link have to exist
61114 find mayExist(problem, interpretation, source);
61115 find mayExist(problem, interpretation, target);
61116 // Type consistency
61117 find mayInstanceOfEReference_class(problem,interpretation,source);
61118 find mayInstanceOfEReference_class(problem,interpretation,target);
61119 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
61120 // the upper bound of the multiplicity should be considered.
61121 numberOfExistingReferences == count find mustInRelationeOpposite_reference_EReference(problem,interpretation,source,_);
61122 check(numberOfExistingReferences < 1);
61123} or {
61124 find mustInRelationeOpposite_reference_EReference(problem,interpretation,source,target);
61125}
61126/**
61127 * Matcher for detecting tuples t where []eReferenceType reference EReference(source,target)
61128 */
61129private pattern mustInRelationeReferenceType_reference_EReference(
61130 problem:LogicProblem, interpretation:PartialInterpretation,
61131 source: DefinedElement, target:DefinedElement)
61132{
61133 find interpretation(problem,interpretation);
61134 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
61135 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eReferenceType reference EReference");
61136 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
61137 BinaryElementRelationLink.param1(link,source);
61138 BinaryElementRelationLink.param2(link,target);
61139}
61140/**
61141 * Matcher for detecting tuples t where <>eReferenceType reference EReference(source,target)
61142 */
61143private pattern mayInRelationeReferenceType_reference_EReference(
61144 problem:LogicProblem, interpretation:PartialInterpretation,
61145 source: DefinedElement, target:DefinedElement)
61146{
61147 find interpretation(problem,interpretation);
61148 // The two endpoint of the link have to exist
61149 find mayExist(problem, interpretation, source);
61150 find mayExist(problem, interpretation, target);
61151 // Type consistency
61152 find mayInstanceOfEReference_class(problem,interpretation,source);
61153 find mayInstanceOfEClass_class(problem,interpretation,target);
61154 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
61155 // the upper bound of the multiplicity should be considered.
61156 numberOfExistingReferences == count find mustInRelationeReferenceType_reference_EReference(problem,interpretation,source,_);
61157 check(numberOfExistingReferences < 1);
61158} or {
61159 find mustInRelationeReferenceType_reference_EReference(problem,interpretation,source,target);
61160}
61161/**
61162 * Matcher for detecting tuples t where []eKeys reference EReference(source,target)
61163 */
61164private pattern mustInRelationeKeys_reference_EReference(
61165 problem:LogicProblem, interpretation:PartialInterpretation,
61166 source: DefinedElement, target:DefinedElement)
61167{
61168 find interpretation(problem,interpretation);
61169 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
61170 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eKeys reference EReference");
61171 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
61172 BinaryElementRelationLink.param1(link,source);
61173 BinaryElementRelationLink.param2(link,target);
61174}
61175/**
61176 * Matcher for detecting tuples t where <>eKeys reference EReference(source,target)
61177 */
61178private pattern mayInRelationeKeys_reference_EReference(
61179 problem:LogicProblem, interpretation:PartialInterpretation,
61180 source: DefinedElement, target:DefinedElement)
61181{
61182 find interpretation(problem,interpretation);
61183 // The two endpoint of the link have to exist
61184 find mayExist(problem, interpretation, source);
61185 find mayExist(problem, interpretation, target);
61186 // Type consistency
61187 find mayInstanceOfEReference_class(problem,interpretation,source);
61188 find mayInstanceOfEAttribute_class(problem,interpretation,target);
61189} or {
61190 find mustInRelationeKeys_reference_EReference(problem,interpretation,source,target);
61191}
61192/**
61193 * Matcher for detecting tuples t where []eContainingClass reference EStructuralFeature(source,target)
61194 */
61195private pattern mustInRelationeContainingClass_reference_EStructuralFeature(
61196 problem:LogicProblem, interpretation:PartialInterpretation,
61197 source: DefinedElement, target:DefinedElement)
61198{
61199 find interpretation(problem,interpretation);
61200 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
61201 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eContainingClass reference EStructuralFeature");
61202 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
61203 BinaryElementRelationLink.param1(link,source);
61204 BinaryElementRelationLink.param2(link,target);
61205}
61206/**
61207 * Matcher for detecting tuples t where <>eContainingClass reference EStructuralFeature(source,target)
61208 */
61209private pattern mayInRelationeContainingClass_reference_EStructuralFeature(
61210 problem:LogicProblem, interpretation:PartialInterpretation,
61211 source: DefinedElement, target:DefinedElement)
61212{
61213 find interpretation(problem,interpretation);
61214 // The two endpoint of the link have to exist
61215 find mayExist(problem, interpretation, source);
61216 find mayExist(problem, interpretation, target);
61217 // Type consistency
61218 find mayInstanceOfEStructuralFeature_class(problem,interpretation,source);
61219 find mayInstanceOfEClass_class(problem,interpretation,target);
61220 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
61221 // the upper bound of the multiplicity should be considered.
61222 numberOfExistingReferences == count find mustInRelationeContainingClass_reference_EStructuralFeature(problem,interpretation,source,_);
61223 check(numberOfExistingReferences < 1);
61224 // The eOpposite of the reference is containment, then a referene cannot be created if
61225 // 1. Multiple parents
61226 neg find mustContains4(problem,interpretation,source,_);
61227 // 2. Circle in the containment hierarchy
61228 neg find mustTransitiveContains(source,target);
61229} or {
61230 find mustInRelationeContainingClass_reference_EStructuralFeature(problem,interpretation,source,target);
61231}
61232/**
61233 * Matcher for detecting tuples t where []eType reference ETypedElement(source,target)
61234 */
61235private pattern mustInRelationeType_reference_ETypedElement(
61236 problem:LogicProblem, interpretation:PartialInterpretation,
61237 source: DefinedElement, target:DefinedElement)
61238{
61239 find interpretation(problem,interpretation);
61240 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
61241 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eType reference ETypedElement");
61242 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
61243 BinaryElementRelationLink.param1(link,source);
61244 BinaryElementRelationLink.param2(link,target);
61245}
61246/**
61247 * Matcher for detecting tuples t where <>eType reference ETypedElement(source,target)
61248 */
61249private pattern mayInRelationeType_reference_ETypedElement(
61250 problem:LogicProblem, interpretation:PartialInterpretation,
61251 source: DefinedElement, target:DefinedElement)
61252{
61253 find interpretation(problem,interpretation);
61254 // The two endpoint of the link have to exist
61255 find mayExist(problem, interpretation, source);
61256 find mayExist(problem, interpretation, target);
61257 // Type consistency
61258 find mayInstanceOfETypedElement_class(problem,interpretation,source);
61259 find mayInstanceOfEClassifier_class(problem,interpretation,target);
61260 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
61261 // the upper bound of the multiplicity should be considered.
61262 numberOfExistingReferences == count find mustInRelationeType_reference_ETypedElement(problem,interpretation,source,_);
61263 check(numberOfExistingReferences < 1);
61264} or {
61265 find mustInRelationeType_reference_ETypedElement(problem,interpretation,source,target);
61266}
61267/**
61268 * Matcher for detecting tuples t where []eGenericType reference ETypedElement(source,target)
61269 */
61270private pattern mustInRelationeGenericType_reference_ETypedElement(
61271 problem:LogicProblem, interpretation:PartialInterpretation,
61272 source: DefinedElement, target:DefinedElement)
61273{
61274 find interpretation(problem,interpretation);
61275 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
61276 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eGenericType reference ETypedElement");
61277 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
61278 BinaryElementRelationLink.param1(link,source);
61279 BinaryElementRelationLink.param2(link,target);
61280}
61281/**
61282 * Matcher for detecting tuples t where <>eGenericType reference ETypedElement(source,target)
61283 */
61284private pattern mayInRelationeGenericType_reference_ETypedElement(
61285 problem:LogicProblem, interpretation:PartialInterpretation,
61286 source: DefinedElement, target:DefinedElement)
61287{
61288 find interpretation(problem,interpretation);
61289 // The two endpoint of the link have to exist
61290 find mayExist(problem, interpretation, source);
61291 find mayExist(problem, interpretation, target);
61292 // Type consistency
61293 find mayInstanceOfETypedElement_class(problem,interpretation,source);
61294 find mayInstanceOfEGenericType_class(problem,interpretation,target);
61295 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
61296 // the upper bound of the multiplicity should be considered.
61297 numberOfExistingReferences == count find mustInRelationeGenericType_reference_ETypedElement(problem,interpretation,source,_);
61298 check(numberOfExistingReferences < 1);
61299 // The reference is containment, then a new reference cannot be create if:
61300 // 1. Multiple parents
61301 neg find mustContains4(problem,interpretation,_,target);
61302 // 2. Circle in the containment hierarchy
61303 neg find mustTransitiveContains(source,target);
61304} or {
61305 find mustInRelationeGenericType_reference_ETypedElement(problem,interpretation,source,target);
61306}
61307/**
61308 * Matcher for detecting tuples t where []eUpperBound reference EGenericType(source,target)
61309 */
61310private pattern mustInRelationeUpperBound_reference_EGenericType(
61311 problem:LogicProblem, interpretation:PartialInterpretation,
61312 source: DefinedElement, target:DefinedElement)
61313{
61314 find interpretation(problem,interpretation);
61315 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
61316 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eUpperBound reference EGenericType");
61317 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
61318 BinaryElementRelationLink.param1(link,source);
61319 BinaryElementRelationLink.param2(link,target);
61320}
61321/**
61322 * Matcher for detecting tuples t where <>eUpperBound reference EGenericType(source,target)
61323 */
61324private pattern mayInRelationeUpperBound_reference_EGenericType(
61325 problem:LogicProblem, interpretation:PartialInterpretation,
61326 source: DefinedElement, target:DefinedElement)
61327{
61328 find interpretation(problem,interpretation);
61329 // The two endpoint of the link have to exist
61330 find mayExist(problem, interpretation, source);
61331 find mayExist(problem, interpretation, target);
61332 // Type consistency
61333 find mayInstanceOfEGenericType_class(problem,interpretation,source);
61334 find mayInstanceOfEGenericType_class(problem,interpretation,target);
61335 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
61336 // the upper bound of the multiplicity should be considered.
61337 numberOfExistingReferences == count find mustInRelationeUpperBound_reference_EGenericType(problem,interpretation,source,_);
61338 check(numberOfExistingReferences < 1);
61339 // The reference is containment, then a new reference cannot be create if:
61340 // 1. Multiple parents
61341 neg find mustContains4(problem,interpretation,_,target);
61342 // 2. Circle in the containment hierarchy
61343 neg find mustTransitiveContains(source,target);
61344} or {
61345 find mustInRelationeUpperBound_reference_EGenericType(problem,interpretation,source,target);
61346}
61347/**
61348 * Matcher for detecting tuples t where []eTypeArguments reference EGenericType(source,target)
61349 */
61350private pattern mustInRelationeTypeArguments_reference_EGenericType(
61351 problem:LogicProblem, interpretation:PartialInterpretation,
61352 source: DefinedElement, target:DefinedElement)
61353{
61354 find interpretation(problem,interpretation);
61355 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
61356 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eTypeArguments reference EGenericType");
61357 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
61358 BinaryElementRelationLink.param1(link,source);
61359 BinaryElementRelationLink.param2(link,target);
61360}
61361/**
61362 * Matcher for detecting tuples t where <>eTypeArguments reference EGenericType(source,target)
61363 */
61364private pattern mayInRelationeTypeArguments_reference_EGenericType(
61365 problem:LogicProblem, interpretation:PartialInterpretation,
61366 source: DefinedElement, target:DefinedElement)
61367{
61368 find interpretation(problem,interpretation);
61369 // The two endpoint of the link have to exist
61370 find mayExist(problem, interpretation, source);
61371 find mayExist(problem, interpretation, target);
61372 // Type consistency
61373 find mayInstanceOfEGenericType_class(problem,interpretation,source);
61374 find mayInstanceOfEGenericType_class(problem,interpretation,target);
61375 // The reference is containment, then a new reference cannot be create if:
61376 // 1. Multiple parents
61377 neg find mustContains4(problem,interpretation,_,target);
61378 // 2. Circle in the containment hierarchy
61379 neg find mustTransitiveContains(source,target);
61380} or {
61381 find mustInRelationeTypeArguments_reference_EGenericType(problem,interpretation,source,target);
61382}
61383/**
61384 * Matcher for detecting tuples t where []eRawType reference EGenericType(source,target)
61385 */
61386private pattern mustInRelationeRawType_reference_EGenericType(
61387 problem:LogicProblem, interpretation:PartialInterpretation,
61388 source: DefinedElement, target:DefinedElement)
61389{
61390 find interpretation(problem,interpretation);
61391 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
61392 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eRawType reference EGenericType");
61393 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
61394 BinaryElementRelationLink.param1(link,source);
61395 BinaryElementRelationLink.param2(link,target);
61396}
61397/**
61398 * Matcher for detecting tuples t where <>eRawType reference EGenericType(source,target)
61399 */
61400private pattern mayInRelationeRawType_reference_EGenericType(
61401 problem:LogicProblem, interpretation:PartialInterpretation,
61402 source: DefinedElement, target:DefinedElement)
61403{
61404 find interpretation(problem,interpretation);
61405 // The two endpoint of the link have to exist
61406 find mayExist(problem, interpretation, source);
61407 find mayExist(problem, interpretation, target);
61408 // Type consistency
61409 find mayInstanceOfEGenericType_class(problem,interpretation,source);
61410 find mayInstanceOfEClassifier_class(problem,interpretation,target);
61411 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
61412 // the upper bound of the multiplicity should be considered.
61413 numberOfExistingReferences == count find mustInRelationeRawType_reference_EGenericType(problem,interpretation,source,_);
61414 check(numberOfExistingReferences < 1);
61415} or {
61416 find mustInRelationeRawType_reference_EGenericType(problem,interpretation,source,target);
61417}
61418/**
61419 * Matcher for detecting tuples t where []eLowerBound reference EGenericType(source,target)
61420 */
61421private pattern mustInRelationeLowerBound_reference_EGenericType(
61422 problem:LogicProblem, interpretation:PartialInterpretation,
61423 source: DefinedElement, target:DefinedElement)
61424{
61425 find interpretation(problem,interpretation);
61426 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
61427 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eLowerBound reference EGenericType");
61428 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
61429 BinaryElementRelationLink.param1(link,source);
61430 BinaryElementRelationLink.param2(link,target);
61431}
61432/**
61433 * Matcher for detecting tuples t where <>eLowerBound reference EGenericType(source,target)
61434 */
61435private pattern mayInRelationeLowerBound_reference_EGenericType(
61436 problem:LogicProblem, interpretation:PartialInterpretation,
61437 source: DefinedElement, target:DefinedElement)
61438{
61439 find interpretation(problem,interpretation);
61440 // The two endpoint of the link have to exist
61441 find mayExist(problem, interpretation, source);
61442 find mayExist(problem, interpretation, target);
61443 // Type consistency
61444 find mayInstanceOfEGenericType_class(problem,interpretation,source);
61445 find mayInstanceOfEGenericType_class(problem,interpretation,target);
61446 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
61447 // the upper bound of the multiplicity should be considered.
61448 numberOfExistingReferences == count find mustInRelationeLowerBound_reference_EGenericType(problem,interpretation,source,_);
61449 check(numberOfExistingReferences < 1);
61450 // The reference is containment, then a new reference cannot be create if:
61451 // 1. Multiple parents
61452 neg find mustContains4(problem,interpretation,_,target);
61453 // 2. Circle in the containment hierarchy
61454 neg find mustTransitiveContains(source,target);
61455} or {
61456 find mustInRelationeLowerBound_reference_EGenericType(problem,interpretation,source,target);
61457}
61458/**
61459 * Matcher for detecting tuples t where []eTypeParameter reference EGenericType(source,target)
61460 */
61461private pattern mustInRelationeTypeParameter_reference_EGenericType(
61462 problem:LogicProblem, interpretation:PartialInterpretation,
61463 source: DefinedElement, target:DefinedElement)
61464{
61465 find interpretation(problem,interpretation);
61466 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
61467 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eTypeParameter reference EGenericType");
61468 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
61469 BinaryElementRelationLink.param1(link,source);
61470 BinaryElementRelationLink.param2(link,target);
61471}
61472/**
61473 * Matcher for detecting tuples t where <>eTypeParameter reference EGenericType(source,target)
61474 */
61475private pattern mayInRelationeTypeParameter_reference_EGenericType(
61476 problem:LogicProblem, interpretation:PartialInterpretation,
61477 source: DefinedElement, target:DefinedElement)
61478{
61479 find interpretation(problem,interpretation);
61480 // The two endpoint of the link have to exist
61481 find mayExist(problem, interpretation, source);
61482 find mayExist(problem, interpretation, target);
61483 // Type consistency
61484 find mayInstanceOfEGenericType_class(problem,interpretation,source);
61485 find mayInstanceOfETypeParameter_class(problem,interpretation,target);
61486 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
61487 // the upper bound of the multiplicity should be considered.
61488 numberOfExistingReferences == count find mustInRelationeTypeParameter_reference_EGenericType(problem,interpretation,source,_);
61489 check(numberOfExistingReferences < 1);
61490} or {
61491 find mustInRelationeTypeParameter_reference_EGenericType(problem,interpretation,source,target);
61492}
61493/**
61494 * Matcher for detecting tuples t where []eClassifier reference EGenericType(source,target)
61495 */
61496private pattern mustInRelationeClassifier_reference_EGenericType(
61497 problem:LogicProblem, interpretation:PartialInterpretation,
61498 source: DefinedElement, target:DefinedElement)
61499{
61500 find interpretation(problem,interpretation);
61501 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
61502 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eClassifier reference EGenericType");
61503 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
61504 BinaryElementRelationLink.param1(link,source);
61505 BinaryElementRelationLink.param2(link,target);
61506}
61507/**
61508 * Matcher for detecting tuples t where <>eClassifier reference EGenericType(source,target)
61509 */
61510private pattern mayInRelationeClassifier_reference_EGenericType(
61511 problem:LogicProblem, interpretation:PartialInterpretation,
61512 source: DefinedElement, target:DefinedElement)
61513{
61514 find interpretation(problem,interpretation);
61515 // The two endpoint of the link have to exist
61516 find mayExist(problem, interpretation, source);
61517 find mayExist(problem, interpretation, target);
61518 // Type consistency
61519 find mayInstanceOfEGenericType_class(problem,interpretation,source);
61520 find mayInstanceOfEClassifier_class(problem,interpretation,target);
61521 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
61522 // the upper bound of the multiplicity should be considered.
61523 numberOfExistingReferences == count find mustInRelationeClassifier_reference_EGenericType(problem,interpretation,source,_);
61524 check(numberOfExistingReferences < 1);
61525} or {
61526 find mustInRelationeClassifier_reference_EGenericType(problem,interpretation,source,target);
61527}
61528/**
61529 * Matcher for detecting tuples t where []eBounds reference ETypeParameter(source,target)
61530 */
61531private pattern mustInRelationeBounds_reference_ETypeParameter(
61532 problem:LogicProblem, interpretation:PartialInterpretation,
61533 source: DefinedElement, target:DefinedElement)
61534{
61535 find interpretation(problem,interpretation);
61536 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
61537 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eBounds reference ETypeParameter");
61538 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
61539 BinaryElementRelationLink.param1(link,source);
61540 BinaryElementRelationLink.param2(link,target);
61541}
61542/**
61543 * Matcher for detecting tuples t where <>eBounds reference ETypeParameter(source,target)
61544 */
61545private pattern mayInRelationeBounds_reference_ETypeParameter(
61546 problem:LogicProblem, interpretation:PartialInterpretation,
61547 source: DefinedElement, target:DefinedElement)
61548{
61549 find interpretation(problem,interpretation);
61550 // The two endpoint of the link have to exist
61551 find mayExist(problem, interpretation, source);
61552 find mayExist(problem, interpretation, target);
61553 // Type consistency
61554 find mayInstanceOfETypeParameter_class(problem,interpretation,source);
61555 find mayInstanceOfEGenericType_class(problem,interpretation,target);
61556 // The reference is containment, then a new reference cannot be create if:
61557 // 1. Multiple parents
61558 neg find mustContains4(problem,interpretation,_,target);
61559 // 2. Circle in the containment hierarchy
61560 neg find mustTransitiveContains(source,target);
61561} or {
61562 find mustInRelationeBounds_reference_ETypeParameter(problem,interpretation,source,target);
61563}
61564/**
61565 * Matcher for detecting tuples t where []iD attribute EAttribute(source,target)
61566 */
61567private pattern mustInRelationiD_attribute_EAttribute(
61568 problem:LogicProblem, interpretation:PartialInterpretation,
61569 source: DefinedElement, target:DefinedElement)
61570{
61571 find interpretation(problem,interpretation);
61572 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
61573 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"iD attribute EAttribute");
61574 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
61575 BinaryElementRelationLink.param1(link,source);
61576 BinaryElementRelationLink.param2(link,target);
61577}
61578/**
61579 * Matcher for detecting tuples t where <>iD attribute EAttribute(source,target)
61580 */
61581private pattern mayInRelationiD_attribute_EAttribute(
61582 problem:LogicProblem, interpretation:PartialInterpretation,
61583 source: DefinedElement, target:DefinedElement)
61584{
61585 find interpretation(problem,interpretation);
61586 // The two endpoint of the link have to exist
61587 find mayExist(problem, interpretation, source);
61588 find mayExist(problem, interpretation, target);
61589 // Type consistency
61590 find mayInstanceOfEAttribute_class(problem,interpretation,source);
61591 BooleanElement(target);
61592 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
61593 // the upper bound of the multiplicity should be considered.
61594 numberOfExistingReferences == count find mustInRelationiD_attribute_EAttribute(problem,interpretation,source,_);
61595 check(numberOfExistingReferences < 1);
61596} or {
61597 find mustInRelationiD_attribute_EAttribute(problem,interpretation,source,target);
61598}
61599/**
61600 * Matcher for detecting tuples t where []source attribute EAnnotation(source,target)
61601 */
61602private pattern mustInRelationsource_attribute_EAnnotation(
61603 problem:LogicProblem, interpretation:PartialInterpretation,
61604 source: DefinedElement, target:DefinedElement)
61605{
61606 find interpretation(problem,interpretation);
61607 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
61608 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"source attribute EAnnotation");
61609 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
61610 BinaryElementRelationLink.param1(link,source);
61611 BinaryElementRelationLink.param2(link,target);
61612}
61613/**
61614 * Matcher for detecting tuples t where <>source attribute EAnnotation(source,target)
61615 */
61616private pattern mayInRelationsource_attribute_EAnnotation(
61617 problem:LogicProblem, interpretation:PartialInterpretation,
61618 source: DefinedElement, target:DefinedElement)
61619{
61620 find interpretation(problem,interpretation);
61621 // The two endpoint of the link have to exist
61622 find mayExist(problem, interpretation, source);
61623 find mayExist(problem, interpretation, target);
61624 // Type consistency
61625 find mayInstanceOfEAnnotation_class(problem,interpretation,source);
61626 StringElement(target);
61627 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
61628 // the upper bound of the multiplicity should be considered.
61629 numberOfExistingReferences == count find mustInRelationsource_attribute_EAnnotation(problem,interpretation,source,_);
61630 check(numberOfExistingReferences < 1);
61631} or {
61632 find mustInRelationsource_attribute_EAnnotation(problem,interpretation,source,target);
61633}
61634/**
61635 * Matcher for detecting tuples t where []abstract attribute EClass(source,target)
61636 */
61637private pattern mustInRelationabstract_attribute_EClass(
61638 problem:LogicProblem, interpretation:PartialInterpretation,
61639 source: DefinedElement, target:DefinedElement)
61640{
61641 find interpretation(problem,interpretation);
61642 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
61643 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"abstract attribute EClass");
61644 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
61645 BinaryElementRelationLink.param1(link,source);
61646 BinaryElementRelationLink.param2(link,target);
61647}
61648/**
61649 * Matcher for detecting tuples t where <>abstract attribute EClass(source,target)
61650 */
61651private pattern mayInRelationabstract_attribute_EClass(
61652 problem:LogicProblem, interpretation:PartialInterpretation,
61653 source: DefinedElement, target:DefinedElement)
61654{
61655 find interpretation(problem,interpretation);
61656 // The two endpoint of the link have to exist
61657 find mayExist(problem, interpretation, source);
61658 find mayExist(problem, interpretation, target);
61659 // Type consistency
61660 find mayInstanceOfEClass_class(problem,interpretation,source);
61661 BooleanElement(target);
61662 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
61663 // the upper bound of the multiplicity should be considered.
61664 numberOfExistingReferences == count find mustInRelationabstract_attribute_EClass(problem,interpretation,source,_);
61665 check(numberOfExistingReferences < 1);
61666} or {
61667 find mustInRelationabstract_attribute_EClass(problem,interpretation,source,target);
61668}
61669/**
61670 * Matcher for detecting tuples t where []interface attribute EClass(source,target)
61671 */
61672private pattern mustInRelationinterface_attribute_EClass(
61673 problem:LogicProblem, interpretation:PartialInterpretation,
61674 source: DefinedElement, target:DefinedElement)
61675{
61676 find interpretation(problem,interpretation);
61677 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
61678 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface attribute EClass");
61679 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
61680 BinaryElementRelationLink.param1(link,source);
61681 BinaryElementRelationLink.param2(link,target);
61682}
61683/**
61684 * Matcher for detecting tuples t where <>interface attribute EClass(source,target)
61685 */
61686private pattern mayInRelationinterface_attribute_EClass(
61687 problem:LogicProblem, interpretation:PartialInterpretation,
61688 source: DefinedElement, target:DefinedElement)
61689{
61690 find interpretation(problem,interpretation);
61691 // The two endpoint of the link have to exist
61692 find mayExist(problem, interpretation, source);
61693 find mayExist(problem, interpretation, target);
61694 // Type consistency
61695 find mayInstanceOfEClass_class(problem,interpretation,source);
61696 BooleanElement(target);
61697 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
61698 // the upper bound of the multiplicity should be considered.
61699 numberOfExistingReferences == count find mustInRelationinterface_attribute_EClass(problem,interpretation,source,_);
61700 check(numberOfExistingReferences < 1);
61701} or {
61702 find mustInRelationinterface_attribute_EClass(problem,interpretation,source,target);
61703}
61704/**
61705 * Matcher for detecting tuples t where []instanceClassName attribute EClassifier(source,target)
61706 */
61707private pattern mustInRelationinstanceClassName_attribute_EClassifier(
61708 problem:LogicProblem, interpretation:PartialInterpretation,
61709 source: DefinedElement, target:DefinedElement)
61710{
61711 find interpretation(problem,interpretation);
61712 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
61713 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"instanceClassName attribute EClassifier");
61714 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
61715 BinaryElementRelationLink.param1(link,source);
61716 BinaryElementRelationLink.param2(link,target);
61717}
61718/**
61719 * Matcher for detecting tuples t where <>instanceClassName attribute EClassifier(source,target)
61720 */
61721private pattern mayInRelationinstanceClassName_attribute_EClassifier(
61722 problem:LogicProblem, interpretation:PartialInterpretation,
61723 source: DefinedElement, target:DefinedElement)
61724{
61725 find interpretation(problem,interpretation);
61726 // The two endpoint of the link have to exist
61727 find mayExist(problem, interpretation, source);
61728 find mayExist(problem, interpretation, target);
61729 // Type consistency
61730 find mayInstanceOfEClassifier_class(problem,interpretation,source);
61731 StringElement(target);
61732 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
61733 // the upper bound of the multiplicity should be considered.
61734 numberOfExistingReferences == count find mustInRelationinstanceClassName_attribute_EClassifier(problem,interpretation,source,_);
61735 check(numberOfExistingReferences < 1);
61736} or {
61737 find mustInRelationinstanceClassName_attribute_EClassifier(problem,interpretation,source,target);
61738}
61739/**
61740 * Matcher for detecting tuples t where []instanceTypeName attribute EClassifier(source,target)
61741 */
61742private pattern mustInRelationinstanceTypeName_attribute_EClassifier(
61743 problem:LogicProblem, interpretation:PartialInterpretation,
61744 source: DefinedElement, target:DefinedElement)
61745{
61746 find interpretation(problem,interpretation);
61747 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
61748 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"instanceTypeName attribute EClassifier");
61749 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
61750 BinaryElementRelationLink.param1(link,source);
61751 BinaryElementRelationLink.param2(link,target);
61752}
61753/**
61754 * Matcher for detecting tuples t where <>instanceTypeName attribute EClassifier(source,target)
61755 */
61756private pattern mayInRelationinstanceTypeName_attribute_EClassifier(
61757 problem:LogicProblem, interpretation:PartialInterpretation,
61758 source: DefinedElement, target:DefinedElement)
61759{
61760 find interpretation(problem,interpretation);
61761 // The two endpoint of the link have to exist
61762 find mayExist(problem, interpretation, source);
61763 find mayExist(problem, interpretation, target);
61764 // Type consistency
61765 find mayInstanceOfEClassifier_class(problem,interpretation,source);
61766 StringElement(target);
61767 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
61768 // the upper bound of the multiplicity should be considered.
61769 numberOfExistingReferences == count find mustInRelationinstanceTypeName_attribute_EClassifier(problem,interpretation,source,_);
61770 check(numberOfExistingReferences < 1);
61771} or {
61772 find mustInRelationinstanceTypeName_attribute_EClassifier(problem,interpretation,source,target);
61773}
61774/**
61775 * Matcher for detecting tuples t where []serializable attribute EDataType(source,target)
61776 */
61777private pattern mustInRelationserializable_attribute_EDataType(
61778 problem:LogicProblem, interpretation:PartialInterpretation,
61779 source: DefinedElement, target:DefinedElement)
61780{
61781 find interpretation(problem,interpretation);
61782 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
61783 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"serializable attribute EDataType");
61784 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
61785 BinaryElementRelationLink.param1(link,source);
61786 BinaryElementRelationLink.param2(link,target);
61787}
61788/**
61789 * Matcher for detecting tuples t where <>serializable attribute EDataType(source,target)
61790 */
61791private pattern mayInRelationserializable_attribute_EDataType(
61792 problem:LogicProblem, interpretation:PartialInterpretation,
61793 source: DefinedElement, target:DefinedElement)
61794{
61795 find interpretation(problem,interpretation);
61796 // The two endpoint of the link have to exist
61797 find mayExist(problem, interpretation, source);
61798 find mayExist(problem, interpretation, target);
61799 // Type consistency
61800 find mayInstanceOfEDataType_class(problem,interpretation,source);
61801 BooleanElement(target);
61802 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
61803 // the upper bound of the multiplicity should be considered.
61804 numberOfExistingReferences == count find mustInRelationserializable_attribute_EDataType(problem,interpretation,source,_);
61805 check(numberOfExistingReferences < 1);
61806} or {
61807 find mustInRelationserializable_attribute_EDataType(problem,interpretation,source,target);
61808}
61809/**
61810 * Matcher for detecting tuples t where []value attribute EEnumLiteral(source,target)
61811 */
61812private pattern mustInRelationvalue_attribute_EEnumLiteral(
61813 problem:LogicProblem, interpretation:PartialInterpretation,
61814 source: DefinedElement, target:DefinedElement)
61815{
61816 find interpretation(problem,interpretation);
61817 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
61818 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"value attribute EEnumLiteral");
61819 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
61820 BinaryElementRelationLink.param1(link,source);
61821 BinaryElementRelationLink.param2(link,target);
61822}
61823/**
61824 * Matcher for detecting tuples t where <>value attribute EEnumLiteral(source,target)
61825 */
61826private pattern mayInRelationvalue_attribute_EEnumLiteral(
61827 problem:LogicProblem, interpretation:PartialInterpretation,
61828 source: DefinedElement, target:DefinedElement)
61829{
61830 find interpretation(problem,interpretation);
61831 // The two endpoint of the link have to exist
61832 find mayExist(problem, interpretation, source);
61833 find mayExist(problem, interpretation, target);
61834 // Type consistency
61835 find mayInstanceOfEEnumLiteral_class(problem,interpretation,source);
61836 IntegerElement(target);
61837 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
61838 // the upper bound of the multiplicity should be considered.
61839 numberOfExistingReferences == count find mustInRelationvalue_attribute_EEnumLiteral(problem,interpretation,source,_);
61840 check(numberOfExistingReferences < 1);
61841} or {
61842 find mustInRelationvalue_attribute_EEnumLiteral(problem,interpretation,source,target);
61843}
61844/**
61845 * Matcher for detecting tuples t where []literal attribute EEnumLiteral(source,target)
61846 */
61847private pattern mustInRelationliteral_attribute_EEnumLiteral(
61848 problem:LogicProblem, interpretation:PartialInterpretation,
61849 source: DefinedElement, target:DefinedElement)
61850{
61851 find interpretation(problem,interpretation);
61852 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
61853 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"literal attribute EEnumLiteral");
61854 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
61855 BinaryElementRelationLink.param1(link,source);
61856 BinaryElementRelationLink.param2(link,target);
61857}
61858/**
61859 * Matcher for detecting tuples t where <>literal attribute EEnumLiteral(source,target)
61860 */
61861private pattern mayInRelationliteral_attribute_EEnumLiteral(
61862 problem:LogicProblem, interpretation:PartialInterpretation,
61863 source: DefinedElement, target:DefinedElement)
61864{
61865 find interpretation(problem,interpretation);
61866 // The two endpoint of the link have to exist
61867 find mayExist(problem, interpretation, source);
61868 find mayExist(problem, interpretation, target);
61869 // Type consistency
61870 find mayInstanceOfEEnumLiteral_class(problem,interpretation,source);
61871 StringElement(target);
61872 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
61873 // the upper bound of the multiplicity should be considered.
61874 numberOfExistingReferences == count find mustInRelationliteral_attribute_EEnumLiteral(problem,interpretation,source,_);
61875 check(numberOfExistingReferences < 1);
61876} or {
61877 find mustInRelationliteral_attribute_EEnumLiteral(problem,interpretation,source,target);
61878}
61879/**
61880 * Matcher for detecting tuples t where []name attribute ENamedElement(source,target)
61881 */
61882private pattern mustInRelationname_attribute_ENamedElement(
61883 problem:LogicProblem, interpretation:PartialInterpretation,
61884 source: DefinedElement, target:DefinedElement)
61885{
61886 find interpretation(problem,interpretation);
61887 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
61888 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"name attribute ENamedElement");
61889 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
61890 BinaryElementRelationLink.param1(link,source);
61891 BinaryElementRelationLink.param2(link,target);
61892}
61893/**
61894 * Matcher for detecting tuples t where <>name attribute ENamedElement(source,target)
61895 */
61896private pattern mayInRelationname_attribute_ENamedElement(
61897 problem:LogicProblem, interpretation:PartialInterpretation,
61898 source: DefinedElement, target:DefinedElement)
61899{
61900 find interpretation(problem,interpretation);
61901 // The two endpoint of the link have to exist
61902 find mayExist(problem, interpretation, source);
61903 find mayExist(problem, interpretation, target);
61904 // Type consistency
61905 find mayInstanceOfENamedElement_class(problem,interpretation,source);
61906 StringElement(target);
61907 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
61908 // the upper bound of the multiplicity should be considered.
61909 numberOfExistingReferences == count find mustInRelationname_attribute_ENamedElement(problem,interpretation,source,_);
61910 check(numberOfExistingReferences < 1);
61911} or {
61912 find mustInRelationname_attribute_ENamedElement(problem,interpretation,source,target);
61913}
61914/**
61915 * Matcher for detecting tuples t where []nsURI attribute EPackage(source,target)
61916 */
61917private pattern mustInRelationnsURI_attribute_EPackage(
61918 problem:LogicProblem, interpretation:PartialInterpretation,
61919 source: DefinedElement, target:DefinedElement)
61920{
61921 find interpretation(problem,interpretation);
61922 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
61923 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"nsURI attribute EPackage");
61924 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
61925 BinaryElementRelationLink.param1(link,source);
61926 BinaryElementRelationLink.param2(link,target);
61927}
61928/**
61929 * Matcher for detecting tuples t where <>nsURI attribute EPackage(source,target)
61930 */
61931private pattern mayInRelationnsURI_attribute_EPackage(
61932 problem:LogicProblem, interpretation:PartialInterpretation,
61933 source: DefinedElement, target:DefinedElement)
61934{
61935 find interpretation(problem,interpretation);
61936 // The two endpoint of the link have to exist
61937 find mayExist(problem, interpretation, source);
61938 find mayExist(problem, interpretation, target);
61939 // Type consistency
61940 find mayInstanceOfEPackage_class(problem,interpretation,source);
61941 StringElement(target);
61942 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
61943 // the upper bound of the multiplicity should be considered.
61944 numberOfExistingReferences == count find mustInRelationnsURI_attribute_EPackage(problem,interpretation,source,_);
61945 check(numberOfExistingReferences < 1);
61946} or {
61947 find mustInRelationnsURI_attribute_EPackage(problem,interpretation,source,target);
61948}
61949/**
61950 * Matcher for detecting tuples t where []nsPrefix attribute EPackage(source,target)
61951 */
61952private pattern mustInRelationnsPrefix_attribute_EPackage(
61953 problem:LogicProblem, interpretation:PartialInterpretation,
61954 source: DefinedElement, target:DefinedElement)
61955{
61956 find interpretation(problem,interpretation);
61957 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
61958 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"nsPrefix attribute EPackage");
61959 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
61960 BinaryElementRelationLink.param1(link,source);
61961 BinaryElementRelationLink.param2(link,target);
61962}
61963/**
61964 * Matcher for detecting tuples t where <>nsPrefix attribute EPackage(source,target)
61965 */
61966private pattern mayInRelationnsPrefix_attribute_EPackage(
61967 problem:LogicProblem, interpretation:PartialInterpretation,
61968 source: DefinedElement, target:DefinedElement)
61969{
61970 find interpretation(problem,interpretation);
61971 // The two endpoint of the link have to exist
61972 find mayExist(problem, interpretation, source);
61973 find mayExist(problem, interpretation, target);
61974 // Type consistency
61975 find mayInstanceOfEPackage_class(problem,interpretation,source);
61976 StringElement(target);
61977 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
61978 // the upper bound of the multiplicity should be considered.
61979 numberOfExistingReferences == count find mustInRelationnsPrefix_attribute_EPackage(problem,interpretation,source,_);
61980 check(numberOfExistingReferences < 1);
61981} or {
61982 find mustInRelationnsPrefix_attribute_EPackage(problem,interpretation,source,target);
61983}
61984/**
61985 * Matcher for detecting tuples t where []containment attribute EReference(source,target)
61986 */
61987private pattern mustInRelationcontainment_attribute_EReference(
61988 problem:LogicProblem, interpretation:PartialInterpretation,
61989 source: DefinedElement, target:DefinedElement)
61990{
61991 find interpretation(problem,interpretation);
61992 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
61993 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"containment attribute EReference");
61994 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
61995 BinaryElementRelationLink.param1(link,source);
61996 BinaryElementRelationLink.param2(link,target);
61997}
61998/**
61999 * Matcher for detecting tuples t where <>containment attribute EReference(source,target)
62000 */
62001private pattern mayInRelationcontainment_attribute_EReference(
62002 problem:LogicProblem, interpretation:PartialInterpretation,
62003 source: DefinedElement, target:DefinedElement)
62004{
62005 find interpretation(problem,interpretation);
62006 // The two endpoint of the link have to exist
62007 find mayExist(problem, interpretation, source);
62008 find mayExist(problem, interpretation, target);
62009 // Type consistency
62010 find mayInstanceOfEReference_class(problem,interpretation,source);
62011 BooleanElement(target);
62012 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
62013 // the upper bound of the multiplicity should be considered.
62014 numberOfExistingReferences == count find mustInRelationcontainment_attribute_EReference(problem,interpretation,source,_);
62015 check(numberOfExistingReferences < 1);
62016} or {
62017 find mustInRelationcontainment_attribute_EReference(problem,interpretation,source,target);
62018}
62019/**
62020 * Matcher for detecting tuples t where []container attribute EReference(source,target)
62021 */
62022private pattern mustInRelationcontainer_attribute_EReference(
62023 problem:LogicProblem, interpretation:PartialInterpretation,
62024 source: DefinedElement, target:DefinedElement)
62025{
62026 find interpretation(problem,interpretation);
62027 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
62028 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"container attribute EReference");
62029 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
62030 BinaryElementRelationLink.param1(link,source);
62031 BinaryElementRelationLink.param2(link,target);
62032}
62033/**
62034 * Matcher for detecting tuples t where <>container attribute EReference(source,target)
62035 */
62036private pattern mayInRelationcontainer_attribute_EReference(
62037 problem:LogicProblem, interpretation:PartialInterpretation,
62038 source: DefinedElement, target:DefinedElement)
62039{
62040 find interpretation(problem,interpretation);
62041 // The two endpoint of the link have to exist
62042 find mayExist(problem, interpretation, source);
62043 find mayExist(problem, interpretation, target);
62044 // Type consistency
62045 find mayInstanceOfEReference_class(problem,interpretation,source);
62046 BooleanElement(target);
62047 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
62048 // the upper bound of the multiplicity should be considered.
62049 numberOfExistingReferences == count find mustInRelationcontainer_attribute_EReference(problem,interpretation,source,_);
62050 check(numberOfExistingReferences < 1);
62051} or {
62052 find mustInRelationcontainer_attribute_EReference(problem,interpretation,source,target);
62053}
62054/**
62055 * Matcher for detecting tuples t where []resolveProxies attribute EReference(source,target)
62056 */
62057private pattern mustInRelationresolveProxies_attribute_EReference(
62058 problem:LogicProblem, interpretation:PartialInterpretation,
62059 source: DefinedElement, target:DefinedElement)
62060{
62061 find interpretation(problem,interpretation);
62062 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
62063 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"resolveProxies attribute EReference");
62064 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
62065 BinaryElementRelationLink.param1(link,source);
62066 BinaryElementRelationLink.param2(link,target);
62067}
62068/**
62069 * Matcher for detecting tuples t where <>resolveProxies attribute EReference(source,target)
62070 */
62071private pattern mayInRelationresolveProxies_attribute_EReference(
62072 problem:LogicProblem, interpretation:PartialInterpretation,
62073 source: DefinedElement, target:DefinedElement)
62074{
62075 find interpretation(problem,interpretation);
62076 // The two endpoint of the link have to exist
62077 find mayExist(problem, interpretation, source);
62078 find mayExist(problem, interpretation, target);
62079 // Type consistency
62080 find mayInstanceOfEReference_class(problem,interpretation,source);
62081 BooleanElement(target);
62082 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
62083 // the upper bound of the multiplicity should be considered.
62084 numberOfExistingReferences == count find mustInRelationresolveProxies_attribute_EReference(problem,interpretation,source,_);
62085 check(numberOfExistingReferences < 1);
62086} or {
62087 find mustInRelationresolveProxies_attribute_EReference(problem,interpretation,source,target);
62088}
62089/**
62090 * Matcher for detecting tuples t where []changeable attribute EStructuralFeature(source,target)
62091 */
62092private pattern mustInRelationchangeable_attribute_EStructuralFeature(
62093 problem:LogicProblem, interpretation:PartialInterpretation,
62094 source: DefinedElement, target:DefinedElement)
62095{
62096 find interpretation(problem,interpretation);
62097 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
62098 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"changeable attribute EStructuralFeature");
62099 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
62100 BinaryElementRelationLink.param1(link,source);
62101 BinaryElementRelationLink.param2(link,target);
62102}
62103/**
62104 * Matcher for detecting tuples t where <>changeable attribute EStructuralFeature(source,target)
62105 */
62106private pattern mayInRelationchangeable_attribute_EStructuralFeature(
62107 problem:LogicProblem, interpretation:PartialInterpretation,
62108 source: DefinedElement, target:DefinedElement)
62109{
62110 find interpretation(problem,interpretation);
62111 // The two endpoint of the link have to exist
62112 find mayExist(problem, interpretation, source);
62113 find mayExist(problem, interpretation, target);
62114 // Type consistency
62115 find mayInstanceOfEStructuralFeature_class(problem,interpretation,source);
62116 BooleanElement(target);
62117 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
62118 // the upper bound of the multiplicity should be considered.
62119 numberOfExistingReferences == count find mustInRelationchangeable_attribute_EStructuralFeature(problem,interpretation,source,_);
62120 check(numberOfExistingReferences < 1);
62121} or {
62122 find mustInRelationchangeable_attribute_EStructuralFeature(problem,interpretation,source,target);
62123}
62124/**
62125 * Matcher for detecting tuples t where []volatile attribute EStructuralFeature(source,target)
62126 */
62127private pattern mustInRelationvolatile_attribute_EStructuralFeature(
62128 problem:LogicProblem, interpretation:PartialInterpretation,
62129 source: DefinedElement, target:DefinedElement)
62130{
62131 find interpretation(problem,interpretation);
62132 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
62133 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"volatile attribute EStructuralFeature");
62134 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
62135 BinaryElementRelationLink.param1(link,source);
62136 BinaryElementRelationLink.param2(link,target);
62137}
62138/**
62139 * Matcher for detecting tuples t where <>volatile attribute EStructuralFeature(source,target)
62140 */
62141private pattern mayInRelationvolatile_attribute_EStructuralFeature(
62142 problem:LogicProblem, interpretation:PartialInterpretation,
62143 source: DefinedElement, target:DefinedElement)
62144{
62145 find interpretation(problem,interpretation);
62146 // The two endpoint of the link have to exist
62147 find mayExist(problem, interpretation, source);
62148 find mayExist(problem, interpretation, target);
62149 // Type consistency
62150 find mayInstanceOfEStructuralFeature_class(problem,interpretation,source);
62151 BooleanElement(target);
62152 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
62153 // the upper bound of the multiplicity should be considered.
62154 numberOfExistingReferences == count find mustInRelationvolatile_attribute_EStructuralFeature(problem,interpretation,source,_);
62155 check(numberOfExistingReferences < 1);
62156} or {
62157 find mustInRelationvolatile_attribute_EStructuralFeature(problem,interpretation,source,target);
62158}
62159/**
62160 * Matcher for detecting tuples t where []transient attribute EStructuralFeature(source,target)
62161 */
62162private pattern mustInRelationtransient_attribute_EStructuralFeature(
62163 problem:LogicProblem, interpretation:PartialInterpretation,
62164 source: DefinedElement, target:DefinedElement)
62165{
62166 find interpretation(problem,interpretation);
62167 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
62168 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"transient attribute EStructuralFeature");
62169 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
62170 BinaryElementRelationLink.param1(link,source);
62171 BinaryElementRelationLink.param2(link,target);
62172}
62173/**
62174 * Matcher for detecting tuples t where <>transient attribute EStructuralFeature(source,target)
62175 */
62176private pattern mayInRelationtransient_attribute_EStructuralFeature(
62177 problem:LogicProblem, interpretation:PartialInterpretation,
62178 source: DefinedElement, target:DefinedElement)
62179{
62180 find interpretation(problem,interpretation);
62181 // The two endpoint of the link have to exist
62182 find mayExist(problem, interpretation, source);
62183 find mayExist(problem, interpretation, target);
62184 // Type consistency
62185 find mayInstanceOfEStructuralFeature_class(problem,interpretation,source);
62186 BooleanElement(target);
62187 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
62188 // the upper bound of the multiplicity should be considered.
62189 numberOfExistingReferences == count find mustInRelationtransient_attribute_EStructuralFeature(problem,interpretation,source,_);
62190 check(numberOfExistingReferences < 1);
62191} or {
62192 find mustInRelationtransient_attribute_EStructuralFeature(problem,interpretation,source,target);
62193}
62194/**
62195 * Matcher for detecting tuples t where []defaultValueLiteral attribute EStructuralFeature(source,target)
62196 */
62197private pattern mustInRelationdefaultValueLiteral_attribute_EStructuralFeature(
62198 problem:LogicProblem, interpretation:PartialInterpretation,
62199 source: DefinedElement, target:DefinedElement)
62200{
62201 find interpretation(problem,interpretation);
62202 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
62203 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"defaultValueLiteral attribute EStructuralFeature");
62204 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
62205 BinaryElementRelationLink.param1(link,source);
62206 BinaryElementRelationLink.param2(link,target);
62207}
62208/**
62209 * Matcher for detecting tuples t where <>defaultValueLiteral attribute EStructuralFeature(source,target)
62210 */
62211private pattern mayInRelationdefaultValueLiteral_attribute_EStructuralFeature(
62212 problem:LogicProblem, interpretation:PartialInterpretation,
62213 source: DefinedElement, target:DefinedElement)
62214{
62215 find interpretation(problem,interpretation);
62216 // The two endpoint of the link have to exist
62217 find mayExist(problem, interpretation, source);
62218 find mayExist(problem, interpretation, target);
62219 // Type consistency
62220 find mayInstanceOfEStructuralFeature_class(problem,interpretation,source);
62221 StringElement(target);
62222 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
62223 // the upper bound of the multiplicity should be considered.
62224 numberOfExistingReferences == count find mustInRelationdefaultValueLiteral_attribute_EStructuralFeature(problem,interpretation,source,_);
62225 check(numberOfExistingReferences < 1);
62226} or {
62227 find mustInRelationdefaultValueLiteral_attribute_EStructuralFeature(problem,interpretation,source,target);
62228}
62229/**
62230 * Matcher for detecting tuples t where []unsettable attribute EStructuralFeature(source,target)
62231 */
62232private pattern mustInRelationunsettable_attribute_EStructuralFeature(
62233 problem:LogicProblem, interpretation:PartialInterpretation,
62234 source: DefinedElement, target:DefinedElement)
62235{
62236 find interpretation(problem,interpretation);
62237 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
62238 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"unsettable attribute EStructuralFeature");
62239 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
62240 BinaryElementRelationLink.param1(link,source);
62241 BinaryElementRelationLink.param2(link,target);
62242}
62243/**
62244 * Matcher for detecting tuples t where <>unsettable attribute EStructuralFeature(source,target)
62245 */
62246private pattern mayInRelationunsettable_attribute_EStructuralFeature(
62247 problem:LogicProblem, interpretation:PartialInterpretation,
62248 source: DefinedElement, target:DefinedElement)
62249{
62250 find interpretation(problem,interpretation);
62251 // The two endpoint of the link have to exist
62252 find mayExist(problem, interpretation, source);
62253 find mayExist(problem, interpretation, target);
62254 // Type consistency
62255 find mayInstanceOfEStructuralFeature_class(problem,interpretation,source);
62256 BooleanElement(target);
62257 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
62258 // the upper bound of the multiplicity should be considered.
62259 numberOfExistingReferences == count find mustInRelationunsettable_attribute_EStructuralFeature(problem,interpretation,source,_);
62260 check(numberOfExistingReferences < 1);
62261} or {
62262 find mustInRelationunsettable_attribute_EStructuralFeature(problem,interpretation,source,target);
62263}
62264/**
62265 * Matcher for detecting tuples t where []derived attribute EStructuralFeature(source,target)
62266 */
62267private pattern mustInRelationderived_attribute_EStructuralFeature(
62268 problem:LogicProblem, interpretation:PartialInterpretation,
62269 source: DefinedElement, target:DefinedElement)
62270{
62271 find interpretation(problem,interpretation);
62272 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
62273 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"derived attribute EStructuralFeature");
62274 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
62275 BinaryElementRelationLink.param1(link,source);
62276 BinaryElementRelationLink.param2(link,target);
62277}
62278/**
62279 * Matcher for detecting tuples t where <>derived attribute EStructuralFeature(source,target)
62280 */
62281private pattern mayInRelationderived_attribute_EStructuralFeature(
62282 problem:LogicProblem, interpretation:PartialInterpretation,
62283 source: DefinedElement, target:DefinedElement)
62284{
62285 find interpretation(problem,interpretation);
62286 // The two endpoint of the link have to exist
62287 find mayExist(problem, interpretation, source);
62288 find mayExist(problem, interpretation, target);
62289 // Type consistency
62290 find mayInstanceOfEStructuralFeature_class(problem,interpretation,source);
62291 BooleanElement(target);
62292 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
62293 // the upper bound of the multiplicity should be considered.
62294 numberOfExistingReferences == count find mustInRelationderived_attribute_EStructuralFeature(problem,interpretation,source,_);
62295 check(numberOfExistingReferences < 1);
62296} or {
62297 find mustInRelationderived_attribute_EStructuralFeature(problem,interpretation,source,target);
62298}
62299/**
62300 * Matcher for detecting tuples t where []ordered attribute ETypedElement(source,target)
62301 */
62302private pattern mustInRelationordered_attribute_ETypedElement(
62303 problem:LogicProblem, interpretation:PartialInterpretation,
62304 source: DefinedElement, target:DefinedElement)
62305{
62306 find interpretation(problem,interpretation);
62307 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
62308 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"ordered attribute ETypedElement");
62309 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
62310 BinaryElementRelationLink.param1(link,source);
62311 BinaryElementRelationLink.param2(link,target);
62312}
62313/**
62314 * Matcher for detecting tuples t where <>ordered attribute ETypedElement(source,target)
62315 */
62316private pattern mayInRelationordered_attribute_ETypedElement(
62317 problem:LogicProblem, interpretation:PartialInterpretation,
62318 source: DefinedElement, target:DefinedElement)
62319{
62320 find interpretation(problem,interpretation);
62321 // The two endpoint of the link have to exist
62322 find mayExist(problem, interpretation, source);
62323 find mayExist(problem, interpretation, target);
62324 // Type consistency
62325 find mayInstanceOfETypedElement_class(problem,interpretation,source);
62326 BooleanElement(target);
62327 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
62328 // the upper bound of the multiplicity should be considered.
62329 numberOfExistingReferences == count find mustInRelationordered_attribute_ETypedElement(problem,interpretation,source,_);
62330 check(numberOfExistingReferences < 1);
62331} or {
62332 find mustInRelationordered_attribute_ETypedElement(problem,interpretation,source,target);
62333}
62334/**
62335 * Matcher for detecting tuples t where []unique attribute ETypedElement(source,target)
62336 */
62337private pattern mustInRelationunique_attribute_ETypedElement(
62338 problem:LogicProblem, interpretation:PartialInterpretation,
62339 source: DefinedElement, target:DefinedElement)
62340{
62341 find interpretation(problem,interpretation);
62342 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
62343 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"unique attribute ETypedElement");
62344 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
62345 BinaryElementRelationLink.param1(link,source);
62346 BinaryElementRelationLink.param2(link,target);
62347}
62348/**
62349 * Matcher for detecting tuples t where <>unique attribute ETypedElement(source,target)
62350 */
62351private pattern mayInRelationunique_attribute_ETypedElement(
62352 problem:LogicProblem, interpretation:PartialInterpretation,
62353 source: DefinedElement, target:DefinedElement)
62354{
62355 find interpretation(problem,interpretation);
62356 // The two endpoint of the link have to exist
62357 find mayExist(problem, interpretation, source);
62358 find mayExist(problem, interpretation, target);
62359 // Type consistency
62360 find mayInstanceOfETypedElement_class(problem,interpretation,source);
62361 BooleanElement(target);
62362 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
62363 // the upper bound of the multiplicity should be considered.
62364 numberOfExistingReferences == count find mustInRelationunique_attribute_ETypedElement(problem,interpretation,source,_);
62365 check(numberOfExistingReferences < 1);
62366} or {
62367 find mustInRelationunique_attribute_ETypedElement(problem,interpretation,source,target);
62368}
62369/**
62370 * Matcher for detecting tuples t where []lowerBound attribute ETypedElement(source,target)
62371 */
62372private pattern mustInRelationlowerBound_attribute_ETypedElement(
62373 problem:LogicProblem, interpretation:PartialInterpretation,
62374 source: DefinedElement, target:DefinedElement)
62375{
62376 find interpretation(problem,interpretation);
62377 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
62378 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"lowerBound attribute ETypedElement");
62379 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
62380 BinaryElementRelationLink.param1(link,source);
62381 BinaryElementRelationLink.param2(link,target);
62382}
62383/**
62384 * Matcher for detecting tuples t where <>lowerBound attribute ETypedElement(source,target)
62385 */
62386private pattern mayInRelationlowerBound_attribute_ETypedElement(
62387 problem:LogicProblem, interpretation:PartialInterpretation,
62388 source: DefinedElement, target:DefinedElement)
62389{
62390 find interpretation(problem,interpretation);
62391 // The two endpoint of the link have to exist
62392 find mayExist(problem, interpretation, source);
62393 find mayExist(problem, interpretation, target);
62394 // Type consistency
62395 find mayInstanceOfETypedElement_class(problem,interpretation,source);
62396 IntegerElement(target);
62397 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
62398 // the upper bound of the multiplicity should be considered.
62399 numberOfExistingReferences == count find mustInRelationlowerBound_attribute_ETypedElement(problem,interpretation,source,_);
62400 check(numberOfExistingReferences < 1);
62401} or {
62402 find mustInRelationlowerBound_attribute_ETypedElement(problem,interpretation,source,target);
62403}
62404/**
62405 * Matcher for detecting tuples t where []upperBound attribute ETypedElement(source,target)
62406 */
62407private pattern mustInRelationupperBound_attribute_ETypedElement(
62408 problem:LogicProblem, interpretation:PartialInterpretation,
62409 source: DefinedElement, target:DefinedElement)
62410{
62411 find interpretation(problem,interpretation);
62412 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
62413 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"upperBound attribute ETypedElement");
62414 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
62415 BinaryElementRelationLink.param1(link,source);
62416 BinaryElementRelationLink.param2(link,target);
62417}
62418/**
62419 * Matcher for detecting tuples t where <>upperBound attribute ETypedElement(source,target)
62420 */
62421private pattern mayInRelationupperBound_attribute_ETypedElement(
62422 problem:LogicProblem, interpretation:PartialInterpretation,
62423 source: DefinedElement, target:DefinedElement)
62424{
62425 find interpretation(problem,interpretation);
62426 // The two endpoint of the link have to exist
62427 find mayExist(problem, interpretation, source);
62428 find mayExist(problem, interpretation, target);
62429 // Type consistency
62430 find mayInstanceOfETypedElement_class(problem,interpretation,source);
62431 IntegerElement(target);
62432 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
62433 // the upper bound of the multiplicity should be considered.
62434 numberOfExistingReferences == count find mustInRelationupperBound_attribute_ETypedElement(problem,interpretation,source,_);
62435 check(numberOfExistingReferences < 1);
62436} or {
62437 find mustInRelationupperBound_attribute_ETypedElement(problem,interpretation,source,target);
62438}
62439/**
62440 * Matcher for detecting tuples t where []many attribute ETypedElement(source,target)
62441 */
62442private pattern mustInRelationmany_attribute_ETypedElement(
62443 problem:LogicProblem, interpretation:PartialInterpretation,
62444 source: DefinedElement, target:DefinedElement)
62445{
62446 find interpretation(problem,interpretation);
62447 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
62448 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"many attribute ETypedElement");
62449 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
62450 BinaryElementRelationLink.param1(link,source);
62451 BinaryElementRelationLink.param2(link,target);
62452}
62453/**
62454 * Matcher for detecting tuples t where <>many attribute ETypedElement(source,target)
62455 */
62456private pattern mayInRelationmany_attribute_ETypedElement(
62457 problem:LogicProblem, interpretation:PartialInterpretation,
62458 source: DefinedElement, target:DefinedElement)
62459{
62460 find interpretation(problem,interpretation);
62461 // The two endpoint of the link have to exist
62462 find mayExist(problem, interpretation, source);
62463 find mayExist(problem, interpretation, target);
62464 // Type consistency
62465 find mayInstanceOfETypedElement_class(problem,interpretation,source);
62466 BooleanElement(target);
62467 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
62468 // the upper bound of the multiplicity should be considered.
62469 numberOfExistingReferences == count find mustInRelationmany_attribute_ETypedElement(problem,interpretation,source,_);
62470 check(numberOfExistingReferences < 1);
62471} or {
62472 find mustInRelationmany_attribute_ETypedElement(problem,interpretation,source,target);
62473}
62474/**
62475 * Matcher for detecting tuples t where []required attribute ETypedElement(source,target)
62476 */
62477private pattern mustInRelationrequired_attribute_ETypedElement(
62478 problem:LogicProblem, interpretation:PartialInterpretation,
62479 source: DefinedElement, target:DefinedElement)
62480{
62481 find interpretation(problem,interpretation);
62482 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
62483 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"required attribute ETypedElement");
62484 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
62485 BinaryElementRelationLink.param1(link,source);
62486 BinaryElementRelationLink.param2(link,target);
62487}
62488/**
62489 * Matcher for detecting tuples t where <>required attribute ETypedElement(source,target)
62490 */
62491private pattern mayInRelationrequired_attribute_ETypedElement(
62492 problem:LogicProblem, interpretation:PartialInterpretation,
62493 source: DefinedElement, target:DefinedElement)
62494{
62495 find interpretation(problem,interpretation);
62496 // The two endpoint of the link have to exist
62497 find mayExist(problem, interpretation, source);
62498 find mayExist(problem, interpretation, target);
62499 // Type consistency
62500 find mayInstanceOfETypedElement_class(problem,interpretation,source);
62501 BooleanElement(target);
62502 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
62503 // the upper bound of the multiplicity should be considered.
62504 numberOfExistingReferences == count find mustInRelationrequired_attribute_ETypedElement(problem,interpretation,source,_);
62505 check(numberOfExistingReferences < 1);
62506} or {
62507 find mustInRelationrequired_attribute_ETypedElement(problem,interpretation,source,target);
62508}
62509/**
62510 * Matcher for detecting tuples t where []key attribute EStringToStringMapEntry(source,target)
62511 */
62512private pattern mustInRelationkey_attribute_EStringToStringMapEntry(
62513 problem:LogicProblem, interpretation:PartialInterpretation,
62514 source: DefinedElement, target:DefinedElement)
62515{
62516 find interpretation(problem,interpretation);
62517 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
62518 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"key attribute EStringToStringMapEntry");
62519 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
62520 BinaryElementRelationLink.param1(link,source);
62521 BinaryElementRelationLink.param2(link,target);
62522}
62523/**
62524 * Matcher for detecting tuples t where <>key attribute EStringToStringMapEntry(source,target)
62525 */
62526private pattern mayInRelationkey_attribute_EStringToStringMapEntry(
62527 problem:LogicProblem, interpretation:PartialInterpretation,
62528 source: DefinedElement, target:DefinedElement)
62529{
62530 find interpretation(problem,interpretation);
62531 // The two endpoint of the link have to exist
62532 find mayExist(problem, interpretation, source);
62533 find mayExist(problem, interpretation, target);
62534 // Type consistency
62535 find mayInstanceOfEStringToStringMapEntry_class(problem,interpretation,source);
62536 StringElement(target);
62537 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
62538 // the upper bound of the multiplicity should be considered.
62539 numberOfExistingReferences == count find mustInRelationkey_attribute_EStringToStringMapEntry(problem,interpretation,source,_);
62540 check(numberOfExistingReferences < 1);
62541} or {
62542 find mustInRelationkey_attribute_EStringToStringMapEntry(problem,interpretation,source,target);
62543}
62544/**
62545 * Matcher for detecting tuples t where []value attribute EStringToStringMapEntry(source,target)
62546 */
62547private pattern mustInRelationvalue_attribute_EStringToStringMapEntry(
62548 problem:LogicProblem, interpretation:PartialInterpretation,
62549 source: DefinedElement, target:DefinedElement)
62550{
62551 find interpretation(problem,interpretation);
62552 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
62553 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"value attribute EStringToStringMapEntry");
62554 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
62555 BinaryElementRelationLink.param1(link,source);
62556 BinaryElementRelationLink.param2(link,target);
62557}
62558/**
62559 * Matcher for detecting tuples t where <>value attribute EStringToStringMapEntry(source,target)
62560 */
62561private pattern mayInRelationvalue_attribute_EStringToStringMapEntry(
62562 problem:LogicProblem, interpretation:PartialInterpretation,
62563 source: DefinedElement, target:DefinedElement)
62564{
62565 find interpretation(problem,interpretation);
62566 // The two endpoint of the link have to exist
62567 find mayExist(problem, interpretation, source);
62568 find mayExist(problem, interpretation, target);
62569 // Type consistency
62570 find mayInstanceOfEStringToStringMapEntry_class(problem,interpretation,source);
62571 StringElement(target);
62572 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
62573 // the upper bound of the multiplicity should be considered.
62574 numberOfExistingReferences == count find mustInRelationvalue_attribute_EStringToStringMapEntry(problem,interpretation,source,_);
62575 check(numberOfExistingReferences < 1);
62576} or {
62577 find mustInRelationvalue_attribute_EStringToStringMapEntry(problem,interpretation,source,target);
62578}
62579
62580//////////
62581// 1.3 Relation Definition Indexers
62582//////////
62583
62584//////////
62585// 1.4 Containment Indexer
62586//////////
62587private pattern mustContains2(source: DefinedElement, target: DefinedElement) {
62588 find mustContains4(_,_,source,target);
62589}
62590
62591private pattern mustContains4(problem:LogicProblem, interpretation:PartialInterpretation,
62592 source: DefinedElement, target: DefinedElement)
62593 { find mustInRelationdetails_reference_EAnnotation(problem,interpretation,source,target); }or
62594
62595 { find mustInRelationcontents_reference_EAnnotation(problem,interpretation,source,target); }or
62596
62597 { find mustInRelationeOperations_reference_EClass(problem,interpretation,source,target); }or
62598
62599 { find mustInRelationeStructuralFeatures_reference_EClass(problem,interpretation,source,target); }or
62600
62601 { find mustInRelationeGenericSuperTypes_reference_EClass(problem,interpretation,source,target); }or
62602
62603 { find mustInRelationeTypeParameters_reference_EClassifier(problem,interpretation,source,target); }or
62604
62605 { find mustInRelationeLiterals_reference_EEnum(problem,interpretation,source,target); }or
62606
62607 { find mustInRelationeAnnotations_reference_EModelElement(problem,interpretation,source,target); }or
62608
62609 { find mustInRelationeTypeParameters_reference_EOperation(problem,interpretation,source,target); }or
62610
62611 { find mustInRelationeParameters_reference_EOperation(problem,interpretation,source,target); }or
62612
62613 { find mustInRelationeGenericExceptions_reference_EOperation(problem,interpretation,source,target); }or
62614
62615 { find mustInRelationeClassifiers_reference_EPackage(problem,interpretation,source,target); }or
62616
62617 { find mustInRelationeSubpackages_reference_EPackage(problem,interpretation,source,target); }or
62618
62619 { find mustInRelationeGenericType_reference_ETypedElement(problem,interpretation,source,target); }or
62620
62621 { find mustInRelationeUpperBound_reference_EGenericType(problem,interpretation,source,target); }or
62622
62623 { find mustInRelationeTypeArguments_reference_EGenericType(problem,interpretation,source,target); }or
62624
62625 { find mustInRelationeLowerBound_reference_EGenericType(problem,interpretation,source,target); }or
62626
62627 { find mustInRelationeBounds_reference_ETypeParameter(problem,interpretation,source,target); }
62628
62629private pattern mustTransitiveContains(source,target) {
62630 find mustContains2+(source,target);
62631}
62632
62633//////////
62634// 2. Invalidation Indexers
62635//////////
62636// 2.1 Invalidated by WF Queries
62637//////////
62638
62639//////////
62640// 3. Unfinishedness Indexers
62641//////////
62642// 3.1 Unfinishedness Measured by Multiplicity
62643//////////
62644pattern unfinishedLowerMultiplicity_eAttributeType_reference_EAttribute(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) {
62645 find interpretation(problem,interpretation);
62646 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
62647 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAttributeType reference EAttribute");
62648 find mustInstanceOfEAttribute_class(problem,interpretation,object);
62649 numberOfExistingReferences == count find mustInRelationeAttributeType_reference_EAttribute(problem,interpretation,object,_);
62650 check(numberOfExistingReferences < 1);
62651 missingMultiplicity == eval(1-numberOfExistingReferences);
62652}
62653pattern unfinishedLowerMultiplicity_eReferenceType_reference_EReference(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) {
62654 find interpretation(problem,interpretation);
62655 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
62656 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eReferenceType reference EReference");
62657 find mustInstanceOfEReference_class(problem,interpretation,object);
62658 numberOfExistingReferences == count find mustInRelationeReferenceType_reference_EReference(problem,interpretation,object,_);
62659 check(numberOfExistingReferences < 1);
62660 missingMultiplicity == eval(1-numberOfExistingReferences);
62661}
62662pattern unfinishedLowerMultiplicity_eRawType_reference_EGenericType(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) {
62663 find interpretation(problem,interpretation);
62664 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
62665 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eRawType reference EGenericType");
62666 find mustInstanceOfEGenericType_class(problem,interpretation,object);
62667 numberOfExistingReferences == count find mustInRelationeRawType_reference_EGenericType(problem,interpretation,object,_);
62668 check(numberOfExistingReferences < 1);
62669 missingMultiplicity == eval(1-numberOfExistingReferences);
62670}
62671
62672//////////
62673// 3.2 Unfinishedness Measured by WF Queries
62674//////////
62675
62676//////////
62677// 4. Refinement Indexers
62678//////////
62679// 4.1 Object constructors
62680//////////
62681private pattern hasElementInContainment(problem:LogicProblem, interpretation:PartialInterpretation)
62682{
62683 find interpretation(problem,interpretation);
62684 find mustInstanceOfEOperation_class(problem,interpretation,root);
62685 find mustExist(problem, interpretation, root);
62686}or{
62687 find interpretation(problem,interpretation);
62688 find mustInstanceOfENamedElement_class(problem,interpretation,root);
62689 find mustExist(problem, interpretation, root);
62690}or{
62691 find interpretation(problem,interpretation);
62692 find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,root);
62693 find mustExist(problem, interpretation, root);
62694}or{
62695 find interpretation(problem,interpretation);
62696 find mustInstanceOfEEnumLiteral_class(problem,interpretation,root);
62697 find mustExist(problem, interpretation, root);
62698}or{
62699 find interpretation(problem,interpretation);
62700 find mustInstanceOfEGenericType_class(problem,interpretation,root);
62701 find mustExist(problem, interpretation, root);
62702}or{
62703 find interpretation(problem,interpretation);
62704 find mustInstanceOfEObject_class(problem,interpretation,root);
62705 find mustExist(problem, interpretation, root);
62706}or{
62707 find interpretation(problem,interpretation);
62708 find mustInstanceOfEAttribute_class(problem,interpretation,root);
62709 find mustExist(problem, interpretation, root);
62710}or{
62711 find interpretation(problem,interpretation);
62712 find mustInstanceOfEPackage_class(problem,interpretation,root);
62713 find mustExist(problem, interpretation, root);
62714}or{
62715 find interpretation(problem,interpretation);
62716 find mustInstanceOfEParameter_class(problem,interpretation,root);
62717 find mustExist(problem, interpretation, root);
62718}or{
62719 find interpretation(problem,interpretation);
62720 find mustInstanceOfEDataType_class(problem,interpretation,root);
62721 find mustExist(problem, interpretation, root);
62722}or{
62723 find interpretation(problem,interpretation);
62724 find mustInstanceOfEClassifier_class(problem,interpretation,root);
62725 find mustExist(problem, interpretation, root);
62726}or{
62727 find interpretation(problem,interpretation);
62728 find mustInstanceOfEStructuralFeature_class(problem,interpretation,root);
62729 find mustExist(problem, interpretation, root);
62730}or{
62731 find interpretation(problem,interpretation);
62732 find mustInstanceOfEModelElement_class(problem,interpretation,root);
62733 find mustExist(problem, interpretation, root);
62734}or{
62735 find interpretation(problem,interpretation);
62736 find mustInstanceOfEAnnotation_class(problem,interpretation,root);
62737 find mustExist(problem, interpretation, root);
62738}or{
62739 find interpretation(problem,interpretation);
62740 find mustInstanceOfETypeParameter_class(problem,interpretation,root);
62741 find mustExist(problem, interpretation, root);
62742}or{
62743 find interpretation(problem,interpretation);
62744 find mustInstanceOfEReference_class(problem,interpretation,root);
62745 find mustExist(problem, interpretation, root);
62746}or{
62747 find interpretation(problem,interpretation);
62748 find mustInstanceOfEEnum_class(problem,interpretation,root);
62749 find mustExist(problem, interpretation, root);
62750}or{
62751 find interpretation(problem,interpretation);
62752 find mustInstanceOfETypedElement_class(problem,interpretation,root);
62753 find mustExist(problem, interpretation, root);
62754}or{
62755 find interpretation(problem,interpretation);
62756 find mustInstanceOfEClass_class(problem,interpretation,root);
62757 find mustExist(problem, interpretation, root);
62758}or{
62759 find interpretation(problem,interpretation);
62760 find mustInstanceOfEModelElement_class_DefinedPart(problem,interpretation,root);
62761 find mustExist(problem, interpretation, root);
62762}or{
62763 find interpretation(problem,interpretation);
62764 find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,root);
62765 find mustExist(problem, interpretation, root);
62766}or{
62767 find interpretation(problem,interpretation);
62768 find mustInstanceOfENamedElement_class_DefinedPart(problem,interpretation,root);
62769 find mustExist(problem, interpretation, root);
62770}or{
62771 find interpretation(problem,interpretation);
62772 find mustInstanceOfENamedElement_class_UndefinedPart(problem,interpretation,root);
62773 find mustExist(problem, interpretation, root);
62774}or{
62775 find interpretation(problem,interpretation);
62776 find mustInstanceOfEPackage_class_DefinedPart(problem,interpretation,root);
62777 find mustExist(problem, interpretation, root);
62778}or{
62779 find interpretation(problem,interpretation);
62780 find mustInstanceOfEPackage_class_UndefinedPart(problem,interpretation,root);
62781 find mustExist(problem, interpretation, root);
62782}
62783pattern createObject_EStringToStringMapEntry_class_by_details_reference_EAnnotation(
62784 problem:LogicProblem, interpretation:PartialInterpretation,
62785 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
62786 container:DefinedElement)
62787{
62788 find interpretation(problem,interpretation);
62789 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
62790 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EStringToStringMapEntry class");
62791 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
62792 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"details reference EAnnotation");
62793 find mustInstanceOfEAnnotation_class(problem,interpretation,container);
62794 find mayInstanceOfEStringToStringMapEntry_class(problem,interpretation,newObject);
62795 find mayInRelationdetails_reference_EAnnotation(problem,interpretation,container,newObject);
62796 find mustExist(problem, interpretation, container);
62797 neg find mustExist(problem, interpretation, newObject);
62798}
62799pattern createObject_EStringToStringMapEntry_class(
62800 problem:LogicProblem, interpretation:PartialInterpretation,
62801 typeInterpretation:PartialComplexTypeInterpretation)
62802{
62803 find interpretation(problem,interpretation);
62804 neg find hasElementInContainment(problem,interpretation);
62805 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
62806 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EStringToStringMapEntry class");
62807 find mayInstanceOfEStringToStringMapEntry_class(problem,interpretation,newObject);
62808 find mayExist(problem, interpretation, newObject);
62809 neg find mustExist(problem, interpretation, newObject);
62810}
62811pattern createObject_EEnum_class_by_eClassifiers_reference_EPackage_with_ePackage_reference_EClassifier(
62812 problem:LogicProblem, interpretation:PartialInterpretation,
62813 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
62814 container:DefinedElement)
62815{
62816 find interpretation(problem,interpretation);
62817 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
62818 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EEnum class");
62819 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
62820 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eClassifiers reference EPackage");
62821 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
62822 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"ePackage reference EClassifier");
62823 find mustInstanceOfEPackage_class(problem,interpretation,container);
62824 find mayInstanceOfEEnum_class(problem,interpretation,newObject);
62825 find mayInRelationeClassifiers_reference_EPackage(problem,interpretation,container,newObject);
62826 find mustExist(problem, interpretation, container);
62827 neg find mustExist(problem, interpretation, newObject);
62828}
62829pattern createObject_EEnum_class(
62830 problem:LogicProblem, interpretation:PartialInterpretation,
62831 typeInterpretation:PartialComplexTypeInterpretation)
62832{
62833 find interpretation(problem,interpretation);
62834 neg find hasElementInContainment(problem,interpretation);
62835 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
62836 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EEnum class");
62837 find mayInstanceOfEEnum_class(problem,interpretation,newObject);
62838 find mayExist(problem, interpretation, newObject);
62839 neg find mustExist(problem, interpretation, newObject);
62840}
62841pattern createObject_EParameter_class_by_eParameters_reference_EOperation_with_eOperation_reference_EParameter(
62842 problem:LogicProblem, interpretation:PartialInterpretation,
62843 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
62844 container:DefinedElement)
62845{
62846 find interpretation(problem,interpretation);
62847 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
62848 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EParameter class");
62849 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
62850 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eParameters reference EOperation");
62851 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
62852 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"eOperation reference EParameter");
62853 find mustInstanceOfEOperation_class(problem,interpretation,container);
62854 find mayInstanceOfEParameter_class(problem,interpretation,newObject);
62855 find mayInRelationeParameters_reference_EOperation(problem,interpretation,container,newObject);
62856 find mustExist(problem, interpretation, container);
62857 neg find mustExist(problem, interpretation, newObject);
62858}
62859pattern createObject_EParameter_class(
62860 problem:LogicProblem, interpretation:PartialInterpretation,
62861 typeInterpretation:PartialComplexTypeInterpretation)
62862{
62863 find interpretation(problem,interpretation);
62864 neg find hasElementInContainment(problem,interpretation);
62865 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
62866 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EParameter class");
62867 find mayInstanceOfEParameter_class(problem,interpretation,newObject);
62868 find mayExist(problem, interpretation, newObject);
62869 neg find mustExist(problem, interpretation, newObject);
62870}
62871pattern createObject_EGenericType_class_by_eGenericSuperTypes_reference_EClass(
62872 problem:LogicProblem, interpretation:PartialInterpretation,
62873 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
62874 container:DefinedElement)
62875{
62876 find interpretation(problem,interpretation);
62877 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
62878 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class");
62879 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
62880 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eGenericSuperTypes reference EClass");
62881 find mustInstanceOfEClass_class(problem,interpretation,container);
62882 find mayInstanceOfEGenericType_class(problem,interpretation,newObject);
62883 find mayInRelationeGenericSuperTypes_reference_EClass(problem,interpretation,container,newObject);
62884 find mustExist(problem, interpretation, container);
62885 neg find mustExist(problem, interpretation, newObject);
62886}
62887pattern createObject_EGenericType_class_by_eGenericExceptions_reference_EOperation(
62888 problem:LogicProblem, interpretation:PartialInterpretation,
62889 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
62890 container:DefinedElement)
62891{
62892 find interpretation(problem,interpretation);
62893 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
62894 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class");
62895 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
62896 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eGenericExceptions reference EOperation");
62897 find mustInstanceOfEOperation_class(problem,interpretation,container);
62898 find mayInstanceOfEGenericType_class(problem,interpretation,newObject);
62899 find mayInRelationeGenericExceptions_reference_EOperation(problem,interpretation,container,newObject);
62900 find mustExist(problem, interpretation, container);
62901 neg find mustExist(problem, interpretation, newObject);
62902}
62903pattern createObject_EGenericType_class_by_eGenericType_reference_ETypedElement(
62904 problem:LogicProblem, interpretation:PartialInterpretation,
62905 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
62906 container:DefinedElement)
62907{
62908 find interpretation(problem,interpretation);
62909 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
62910 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class");
62911 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
62912 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eGenericType reference ETypedElement");
62913 find mustInstanceOfETypedElement_class(problem,interpretation,container);
62914 find mayInstanceOfEGenericType_class(problem,interpretation,newObject);
62915 find mayInRelationeGenericType_reference_ETypedElement(problem,interpretation,container,newObject);
62916 find mustExist(problem, interpretation, container);
62917 neg find mustExist(problem, interpretation, newObject);
62918}
62919pattern createObject_EGenericType_class_by_eUpperBound_reference_EGenericType(
62920 problem:LogicProblem, interpretation:PartialInterpretation,
62921 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
62922 container:DefinedElement)
62923{
62924 find interpretation(problem,interpretation);
62925 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
62926 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class");
62927 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
62928 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eUpperBound reference EGenericType");
62929 find mustInstanceOfEGenericType_class(problem,interpretation,container);
62930 find mayInstanceOfEGenericType_class(problem,interpretation,newObject);
62931 find mayInRelationeUpperBound_reference_EGenericType(problem,interpretation,container,newObject);
62932 find mustExist(problem, interpretation, container);
62933 neg find mustExist(problem, interpretation, newObject);
62934}
62935pattern createObject_EGenericType_class_by_eTypeArguments_reference_EGenericType(
62936 problem:LogicProblem, interpretation:PartialInterpretation,
62937 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
62938 container:DefinedElement)
62939{
62940 find interpretation(problem,interpretation);
62941 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
62942 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class");
62943 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
62944 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eTypeArguments reference EGenericType");
62945 find mustInstanceOfEGenericType_class(problem,interpretation,container);
62946 find mayInstanceOfEGenericType_class(problem,interpretation,newObject);
62947 find mayInRelationeTypeArguments_reference_EGenericType(problem,interpretation,container,newObject);
62948 find mustExist(problem, interpretation, container);
62949 neg find mustExist(problem, interpretation, newObject);
62950}
62951pattern createObject_EGenericType_class_by_eLowerBound_reference_EGenericType(
62952 problem:LogicProblem, interpretation:PartialInterpretation,
62953 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
62954 container:DefinedElement)
62955{
62956 find interpretation(problem,interpretation);
62957 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
62958 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class");
62959 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
62960 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eLowerBound reference EGenericType");
62961 find mustInstanceOfEGenericType_class(problem,interpretation,container);
62962 find mayInstanceOfEGenericType_class(problem,interpretation,newObject);
62963 find mayInRelationeLowerBound_reference_EGenericType(problem,interpretation,container,newObject);
62964 find mustExist(problem, interpretation, container);
62965 neg find mustExist(problem, interpretation, newObject);
62966}
62967pattern createObject_EGenericType_class_by_eBounds_reference_ETypeParameter(
62968 problem:LogicProblem, interpretation:PartialInterpretation,
62969 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
62970 container:DefinedElement)
62971{
62972 find interpretation(problem,interpretation);
62973 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
62974 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class");
62975 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
62976 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eBounds reference ETypeParameter");
62977 find mustInstanceOfETypeParameter_class(problem,interpretation,container);
62978 find mayInstanceOfEGenericType_class(problem,interpretation,newObject);
62979 find mayInRelationeBounds_reference_ETypeParameter(problem,interpretation,container,newObject);
62980 find mustExist(problem, interpretation, container);
62981 neg find mustExist(problem, interpretation, newObject);
62982}
62983pattern createObject_EGenericType_class(
62984 problem:LogicProblem, interpretation:PartialInterpretation,
62985 typeInterpretation:PartialComplexTypeInterpretation)
62986{
62987 find interpretation(problem,interpretation);
62988 neg find hasElementInContainment(problem,interpretation);
62989 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
62990 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class");
62991 find mayInstanceOfEGenericType_class(problem,interpretation,newObject);
62992 find mayExist(problem, interpretation, newObject);
62993 neg find mustExist(problem, interpretation, newObject);
62994}
62995pattern createObject_EPackage_class_UndefinedPart_by_eSubpackages_reference_EPackage_with_eSuperPackage_reference_EPackage(
62996 problem:LogicProblem, interpretation:PartialInterpretation,
62997 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
62998 container:DefinedElement)
62999{
63000 find interpretation(problem,interpretation);
63001 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
63002 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EPackage class UndefinedPart");
63003 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
63004 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eSubpackages reference EPackage");
63005 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
63006 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"eSuperPackage reference EPackage");
63007 find mustInstanceOfEPackage_class(problem,interpretation,container);
63008 find mayInstanceOfEPackage_class_UndefinedPart(problem,interpretation,newObject);
63009 find mayInRelationeSubpackages_reference_EPackage(problem,interpretation,container,newObject);
63010 find mustExist(problem, interpretation, container);
63011 neg find mustExist(problem, interpretation, newObject);
63012}
63013pattern createObject_EPackage_class_UndefinedPart(
63014 problem:LogicProblem, interpretation:PartialInterpretation,
63015 typeInterpretation:PartialComplexTypeInterpretation)
63016{
63017 find interpretation(problem,interpretation);
63018 neg find hasElementInContainment(problem,interpretation);
63019 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
63020 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EPackage class UndefinedPart");
63021 find mayInstanceOfEPackage_class_UndefinedPart(problem,interpretation,newObject);
63022 find mayExist(problem, interpretation, newObject);
63023 neg find mustExist(problem, interpretation, newObject);
63024}
63025pattern createObject_EObject_class_by_contents_reference_EAnnotation(
63026 problem:LogicProblem, interpretation:PartialInterpretation,
63027 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
63028 container:DefinedElement)
63029{
63030 find interpretation(problem,interpretation);
63031 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
63032 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EObject class");
63033 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
63034 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"contents reference EAnnotation");
63035 find mustInstanceOfEAnnotation_class(problem,interpretation,container);
63036 find mayInstanceOfEObject_class(problem,interpretation,newObject);
63037 find mayInRelationcontents_reference_EAnnotation(problem,interpretation,container,newObject);
63038 find mustExist(problem, interpretation, container);
63039 neg find mustExist(problem, interpretation, newObject);
63040}
63041pattern createObject_EObject_class(
63042 problem:LogicProblem, interpretation:PartialInterpretation,
63043 typeInterpretation:PartialComplexTypeInterpretation)
63044{
63045 find interpretation(problem,interpretation);
63046 neg find hasElementInContainment(problem,interpretation);
63047 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
63048 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EObject class");
63049 find mayInstanceOfEObject_class(problem,interpretation,newObject);
63050 find mayExist(problem, interpretation, newObject);
63051 neg find mustExist(problem, interpretation, newObject);
63052}
63053pattern createObject_EEnumLiteral_class_by_eLiterals_reference_EEnum_with_eEnum_reference_EEnumLiteral(
63054 problem:LogicProblem, interpretation:PartialInterpretation,
63055 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
63056 container:DefinedElement)
63057{
63058 find interpretation(problem,interpretation);
63059 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
63060 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EEnumLiteral class");
63061 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
63062 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eLiterals reference EEnum");
63063 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
63064 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"eEnum reference EEnumLiteral");
63065 find mustInstanceOfEEnum_class(problem,interpretation,container);
63066 find mayInstanceOfEEnumLiteral_class(problem,interpretation,newObject);
63067 find mayInRelationeLiterals_reference_EEnum(problem,interpretation,container,newObject);
63068 find mustExist(problem, interpretation, container);
63069 neg find mustExist(problem, interpretation, newObject);
63070}
63071pattern createObject_EEnumLiteral_class(
63072 problem:LogicProblem, interpretation:PartialInterpretation,
63073 typeInterpretation:PartialComplexTypeInterpretation)
63074{
63075 find interpretation(problem,interpretation);
63076 neg find hasElementInContainment(problem,interpretation);
63077 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
63078 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EEnumLiteral class");
63079 find mayInstanceOfEEnumLiteral_class(problem,interpretation,newObject);
63080 find mayExist(problem, interpretation, newObject);
63081 neg find mustExist(problem, interpretation, newObject);
63082}
63083pattern createObject_ETypeParameter_class_by_eTypeParameters_reference_EClassifier(
63084 problem:LogicProblem, interpretation:PartialInterpretation,
63085 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
63086 container:DefinedElement)
63087{
63088 find interpretation(problem,interpretation);
63089 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
63090 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"ETypeParameter class");
63091 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
63092 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eTypeParameters reference EClassifier");
63093 find mustInstanceOfEClassifier_class(problem,interpretation,container);
63094 find mayInstanceOfETypeParameter_class(problem,interpretation,newObject);
63095 find mayInRelationeTypeParameters_reference_EClassifier(problem,interpretation,container,newObject);
63096 find mustExist(problem, interpretation, container);
63097 neg find mustExist(problem, interpretation, newObject);
63098}
63099pattern createObject_ETypeParameter_class_by_eTypeParameters_reference_EOperation(
63100 problem:LogicProblem, interpretation:PartialInterpretation,
63101 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
63102 container:DefinedElement)
63103{
63104 find interpretation(problem,interpretation);
63105 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
63106 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"ETypeParameter class");
63107 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
63108 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eTypeParameters reference EOperation");
63109 find mustInstanceOfEOperation_class(problem,interpretation,container);
63110 find mayInstanceOfETypeParameter_class(problem,interpretation,newObject);
63111 find mayInRelationeTypeParameters_reference_EOperation(problem,interpretation,container,newObject);
63112 find mustExist(problem, interpretation, container);
63113 neg find mustExist(problem, interpretation, newObject);
63114}
63115pattern createObject_ETypeParameter_class(
63116 problem:LogicProblem, interpretation:PartialInterpretation,
63117 typeInterpretation:PartialComplexTypeInterpretation)
63118{
63119 find interpretation(problem,interpretation);
63120 neg find hasElementInContainment(problem,interpretation);
63121 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
63122 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"ETypeParameter class");
63123 find mayInstanceOfETypeParameter_class(problem,interpretation,newObject);
63124 find mayExist(problem, interpretation, newObject);
63125 neg find mustExist(problem, interpretation, newObject);
63126}
63127pattern createObject_EAttribute_class_by_eStructuralFeatures_reference_EClass_with_eContainingClass_reference_EStructuralFeature(
63128 problem:LogicProblem, interpretation:PartialInterpretation,
63129 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
63130 container:DefinedElement)
63131{
63132 find interpretation(problem,interpretation);
63133 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
63134 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EAttribute class");
63135 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
63136 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eStructuralFeatures reference EClass");
63137 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
63138 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"eContainingClass reference EStructuralFeature");
63139 find mustInstanceOfEClass_class(problem,interpretation,container);
63140 find mayInstanceOfEAttribute_class(problem,interpretation,newObject);
63141 find mayInRelationeStructuralFeatures_reference_EClass(problem,interpretation,container,newObject);
63142 find mustExist(problem, interpretation, container);
63143 neg find mustExist(problem, interpretation, newObject);
63144}
63145pattern createObject_EAttribute_class(
63146 problem:LogicProblem, interpretation:PartialInterpretation,
63147 typeInterpretation:PartialComplexTypeInterpretation)
63148{
63149 find interpretation(problem,interpretation);
63150 neg find hasElementInContainment(problem,interpretation);
63151 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
63152 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EAttribute class");
63153 find mayInstanceOfEAttribute_class(problem,interpretation,newObject);
63154 find mayExist(problem, interpretation, newObject);
63155 neg find mustExist(problem, interpretation, newObject);
63156}
63157pattern createObject_EOperation_class_by_eOperations_reference_EClass_with_eContainingClass_reference_EOperation(
63158 problem:LogicProblem, interpretation:PartialInterpretation,
63159 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
63160 container:DefinedElement)
63161{
63162 find interpretation(problem,interpretation);
63163 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
63164 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EOperation class");
63165 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
63166 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eOperations reference EClass");
63167 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
63168 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"eContainingClass reference EOperation");
63169 find mustInstanceOfEClass_class(problem,interpretation,container);
63170 find mayInstanceOfEOperation_class(problem,interpretation,newObject);
63171 find mayInRelationeOperations_reference_EClass(problem,interpretation,container,newObject);
63172 find mustExist(problem, interpretation, container);
63173 neg find mustExist(problem, interpretation, newObject);
63174}
63175pattern createObject_EOperation_class(
63176 problem:LogicProblem, interpretation:PartialInterpretation,
63177 typeInterpretation:PartialComplexTypeInterpretation)
63178{
63179 find interpretation(problem,interpretation);
63180 neg find hasElementInContainment(problem,interpretation);
63181 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
63182 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EOperation class");
63183 find mayInstanceOfEOperation_class(problem,interpretation,newObject);
63184 find mayExist(problem, interpretation, newObject);
63185 neg find mustExist(problem, interpretation, newObject);
63186}
63187pattern createObject_EAnnotation_class_by_eAnnotations_reference_EModelElement_with_eModelElement_reference_EAnnotation(
63188 problem:LogicProblem, interpretation:PartialInterpretation,
63189 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
63190 container:DefinedElement)
63191{
63192 find interpretation(problem,interpretation);
63193 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
63194 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EAnnotation class");
63195 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
63196 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eAnnotations reference EModelElement");
63197 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
63198 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"eModelElement reference EAnnotation");
63199 find mustInstanceOfEModelElement_class(problem,interpretation,container);
63200 find mayInstanceOfEAnnotation_class(problem,interpretation,newObject);
63201 find mayInRelationeAnnotations_reference_EModelElement(problem,interpretation,container,newObject);
63202 find mustExist(problem, interpretation, container);
63203 neg find mustExist(problem, interpretation, newObject);
63204}
63205pattern createObject_EAnnotation_class(
63206 problem:LogicProblem, interpretation:PartialInterpretation,
63207 typeInterpretation:PartialComplexTypeInterpretation)
63208{
63209 find interpretation(problem,interpretation);
63210 neg find hasElementInContainment(problem,interpretation);
63211 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
63212 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EAnnotation class");
63213 find mayInstanceOfEAnnotation_class(problem,interpretation,newObject);
63214 find mayExist(problem, interpretation, newObject);
63215 neg find mustExist(problem, interpretation, newObject);
63216}
63217pattern createObject_EReference_class_by_eStructuralFeatures_reference_EClass_with_eContainingClass_reference_EStructuralFeature(
63218 problem:LogicProblem, interpretation:PartialInterpretation,
63219 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
63220 container:DefinedElement)
63221{
63222 find interpretation(problem,interpretation);
63223 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
63224 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EReference class");
63225 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
63226 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eStructuralFeatures reference EClass");
63227 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
63228 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"eContainingClass reference EStructuralFeature");
63229 find mustInstanceOfEClass_class(problem,interpretation,container);
63230 find mayInstanceOfEReference_class(problem,interpretation,newObject);
63231 find mayInRelationeStructuralFeatures_reference_EClass(problem,interpretation,container,newObject);
63232 find mustExist(problem, interpretation, container);
63233 neg find mustExist(problem, interpretation, newObject);
63234}
63235pattern createObject_EReference_class(
63236 problem:LogicProblem, interpretation:PartialInterpretation,
63237 typeInterpretation:PartialComplexTypeInterpretation)
63238{
63239 find interpretation(problem,interpretation);
63240 neg find hasElementInContainment(problem,interpretation);
63241 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
63242 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EReference class");
63243 find mayInstanceOfEReference_class(problem,interpretation,newObject);
63244 find mayExist(problem, interpretation, newObject);
63245 neg find mustExist(problem, interpretation, newObject);
63246}
63247pattern createObject_EDataType_class_by_eClassifiers_reference_EPackage_with_ePackage_reference_EClassifier(
63248 problem:LogicProblem, interpretation:PartialInterpretation,
63249 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
63250 container:DefinedElement)
63251{
63252 find interpretation(problem,interpretation);
63253 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
63254 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EDataType class");
63255 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
63256 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eClassifiers reference EPackage");
63257 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
63258 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"ePackage reference EClassifier");
63259 find mustInstanceOfEPackage_class(problem,interpretation,container);
63260 find mayInstanceOfEDataType_class(problem,interpretation,newObject);
63261 find mayInRelationeClassifiers_reference_EPackage(problem,interpretation,container,newObject);
63262 find mustExist(problem, interpretation, container);
63263 neg find mustExist(problem, interpretation, newObject);
63264}
63265pattern createObject_EDataType_class(
63266 problem:LogicProblem, interpretation:PartialInterpretation,
63267 typeInterpretation:PartialComplexTypeInterpretation)
63268{
63269 find interpretation(problem,interpretation);
63270 neg find hasElementInContainment(problem,interpretation);
63271 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
63272 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EDataType class");
63273 find mayInstanceOfEDataType_class(problem,interpretation,newObject);
63274 find mayExist(problem, interpretation, newObject);
63275 neg find mustExist(problem, interpretation, newObject);
63276}
63277pattern createObject_EClass_class_by_eClassifiers_reference_EPackage_with_ePackage_reference_EClassifier(
63278 problem:LogicProblem, interpretation:PartialInterpretation,
63279 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
63280 container:DefinedElement)
63281{
63282 find interpretation(problem,interpretation);
63283 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
63284 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EClass class");
63285 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
63286 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eClassifiers reference EPackage");
63287 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
63288 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"ePackage reference EClassifier");
63289 find mustInstanceOfEPackage_class(problem,interpretation,container);
63290 find mayInstanceOfEClass_class(problem,interpretation,newObject);
63291 find mayInRelationeClassifiers_reference_EPackage(problem,interpretation,container,newObject);
63292 find mustExist(problem, interpretation, container);
63293 neg find mustExist(problem, interpretation, newObject);
63294}
63295pattern createObject_EClass_class(
63296 problem:LogicProblem, interpretation:PartialInterpretation,
63297 typeInterpretation:PartialComplexTypeInterpretation)
63298{
63299 find interpretation(problem,interpretation);
63300 neg find hasElementInContainment(problem,interpretation);
63301 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
63302 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EClass class");
63303 find mayInstanceOfEClass_class(problem,interpretation,newObject);
63304 find mayExist(problem, interpretation, newObject);
63305 neg find mustExist(problem, interpretation, newObject);
63306}
63307
63308//////////
63309// 4.2 Type refinement
63310//////////
63311pattern refineTypeTo_EStringToStringMapEntry_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
63312 find interpretation(problem,interpretation);
63313 PartialInterpretation.newElements(interpretation,element);
63314 find mayInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
63315 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
63316 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
63317 neg find mustInstanceOfEObject_class(problem,interpretation,element);
63318 neg find mustInstanceOfEModelElement_class(problem,interpretation,element);
63319}
63320pattern refineTypeTo_EEnum_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
63321 find interpretation(problem,interpretation);
63322 PartialInterpretation.newElements(interpretation,element);
63323 find mayInstanceOfEEnum_class(problem,interpretation,element);
63324 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
63325 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
63326 neg find mustInstanceOfEEnum_class(problem,interpretation,element);
63327 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
63328 neg find mustInstanceOfEObject_class(problem,interpretation,element);
63329 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
63330 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
63331 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
63332 neg find mustInstanceOfEClass_class(problem,interpretation,element);
63333 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
63334}
63335pattern refineTypeTo_EParameter_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
63336 find interpretation(problem,interpretation);
63337 PartialInterpretation.newElements(interpretation,element);
63338 find mayInstanceOfEParameter_class(problem,interpretation,element);
63339 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
63340 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
63341 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
63342 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
63343 neg find mustInstanceOfEObject_class(problem,interpretation,element);
63344 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
63345 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
63346 neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element);
63347 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
63348 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
63349 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
63350}
63351pattern refineTypeTo_EGenericType_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
63352 find interpretation(problem,interpretation);
63353 PartialInterpretation.newElements(interpretation,element);
63354 find mayInstanceOfEGenericType_class(problem,interpretation,element);
63355 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
63356 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
63357 neg find mustInstanceOfEObject_class(problem,interpretation,element);
63358 neg find mustInstanceOfEModelElement_class(problem,interpretation,element);
63359}
63360pattern refineTypeTo_EPackage_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
63361 find interpretation(problem,interpretation);
63362 PartialInterpretation.newElements(interpretation,element);
63363 find mayInstanceOfEPackage_class_UndefinedPart(problem,interpretation,element);
63364 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
63365 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
63366 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
63367 neg find mustInstanceOfEObject_class(problem,interpretation,element);
63368 neg find mustInstanceOfEPackage_class_UndefinedPart(problem,interpretation,element);
63369 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
63370 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
63371 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
63372 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
63373}
63374pattern refineTypeTo_EObject_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
63375 find interpretation(problem,interpretation);
63376 PartialInterpretation.newElements(interpretation,element);
63377 find mayInstanceOfEObject_class(problem,interpretation,element);
63378 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
63379 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
63380 neg find mustInstanceOfEObject_class(problem,interpretation,element);
63381 neg find mustInstanceOfEModelElement_class(problem,interpretation,element);
63382}
63383pattern refineTypeTo_EEnumLiteral_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
63384 find interpretation(problem,interpretation);
63385 PartialInterpretation.newElements(interpretation,element);
63386 find mayInstanceOfEEnumLiteral_class(problem,interpretation,element);
63387 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
63388 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
63389 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
63390 neg find mustInstanceOfEObject_class(problem,interpretation,element);
63391 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
63392 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
63393 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
63394 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
63395 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
63396}
63397pattern refineTypeTo_ETypeParameter_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
63398 find interpretation(problem,interpretation);
63399 PartialInterpretation.newElements(interpretation,element);
63400 find mayInstanceOfETypeParameter_class(problem,interpretation,element);
63401 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
63402 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
63403 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
63404 neg find mustInstanceOfEObject_class(problem,interpretation,element);
63405 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
63406 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
63407 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
63408 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
63409 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
63410}
63411pattern refineTypeTo_EAttribute_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
63412 find interpretation(problem,interpretation);
63413 PartialInterpretation.newElements(interpretation,element);
63414 find mayInstanceOfEAttribute_class(problem,interpretation,element);
63415 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
63416 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
63417 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
63418 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
63419 neg find mustInstanceOfEReference_class(problem,interpretation,element);
63420 neg find mustInstanceOfEObject_class(problem,interpretation,element);
63421 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
63422 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
63423 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
63424 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
63425 neg find mustInstanceOfEAttribute_class(problem,interpretation,element);
63426 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
63427}
63428pattern refineTypeTo_EOperation_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
63429 find interpretation(problem,interpretation);
63430 PartialInterpretation.newElements(interpretation,element);
63431 find mayInstanceOfEOperation_class(problem,interpretation,element);
63432 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
63433 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
63434 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
63435 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
63436 neg find mustInstanceOfEObject_class(problem,interpretation,element);
63437 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
63438 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
63439 neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element);
63440 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
63441 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
63442 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
63443}
63444pattern refineTypeTo_EAnnotation_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
63445 find interpretation(problem,interpretation);
63446 PartialInterpretation.newElements(interpretation,element);
63447 find mayInstanceOfEAnnotation_class(problem,interpretation,element);
63448 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
63449 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
63450 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
63451 neg find mustInstanceOfEObject_class(problem,interpretation,element);
63452 neg find mustInstanceOfENamedElement_class(problem,interpretation,element);
63453}
63454pattern refineTypeTo_EReference_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
63455 find interpretation(problem,interpretation);
63456 PartialInterpretation.newElements(interpretation,element);
63457 find mayInstanceOfEReference_class(problem,interpretation,element);
63458 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
63459 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
63460 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
63461 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
63462 neg find mustInstanceOfEReference_class(problem,interpretation,element);
63463 neg find mustInstanceOfEObject_class(problem,interpretation,element);
63464 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
63465 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
63466 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
63467 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
63468 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
63469 neg find mustInstanceOfEAttribute_class(problem,interpretation,element);
63470}
63471pattern refineTypeTo_EDataType_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
63472 find interpretation(problem,interpretation);
63473 PartialInterpretation.newElements(interpretation,element);
63474 find mayInstanceOfEDataType_class(problem,interpretation,element);
63475 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
63476 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
63477 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
63478 neg find mustInstanceOfEEnum_class(problem,interpretation,element);
63479 neg find mustInstanceOfEObject_class(problem,interpretation,element);
63480 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
63481 neg find mustInstanceOfEDataType_class(problem,interpretation,element);
63482 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
63483 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
63484 neg find mustInstanceOfEClass_class(problem,interpretation,element);
63485 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
63486}
63487pattern refineTypeTo_EClass_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
63488 find interpretation(problem,interpretation);
63489 PartialInterpretation.newElements(interpretation,element);
63490 find mayInstanceOfEClass_class(problem,interpretation,element);
63491 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
63492 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
63493 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
63494 neg find mustInstanceOfEObject_class(problem,interpretation,element);
63495 neg find mustInstanceOfEDataType_class(problem,interpretation,element);
63496 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
63497 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
63498 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
63499 neg find mustInstanceOfEClass_class(problem,interpretation,element);
63500 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
63501}
63502
63503//////////
63504// 4.3 Relation refinement
63505//////////
63506pattern refineRelation_eAttributeType_reference_EAttribute(
63507 problem:LogicProblem, interpretation:PartialInterpretation,
63508 relationIterpretation:PartialRelationInterpretation,
63509 from: DefinedElement, to: DefinedElement)
63510{
63511 find interpretation(problem,interpretation);
63512 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
63513 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAttributeType reference EAttribute");
63514 find mustExist(problem, interpretation, from);
63515 find mustExist(problem, interpretation, to);
63516 find mustInstanceOfEAttribute_class(problem,interpretation,from);
63517 find mustInstanceOfEDataType_class(problem,interpretation,to);
63518 find mayInRelationeAttributeType_reference_EAttribute(problem,interpretation,from,to);
63519 neg find mustInRelationeAttributeType_reference_EAttribute(problem,interpretation,from,to);
63520}
63521pattern refineRelation_references_reference_EAnnotation(
63522 problem:LogicProblem, interpretation:PartialInterpretation,
63523 relationIterpretation:PartialRelationInterpretation,
63524 from: DefinedElement, to: DefinedElement)
63525{
63526 find interpretation(problem,interpretation);
63527 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
63528 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"references reference EAnnotation");
63529 find mustExist(problem, interpretation, from);
63530 find mustExist(problem, interpretation, to);
63531 find mustInstanceOfEAnnotation_class(problem,interpretation,from);
63532 find mustInstanceOfEObject_class(problem,interpretation,to);
63533 find mayInRelationreferences_reference_EAnnotation(problem,interpretation,from,to);
63534 neg find mustInRelationreferences_reference_EAnnotation(problem,interpretation,from,to);
63535}
63536pattern refineRelation_eSuperTypes_reference_EClass(
63537 problem:LogicProblem, interpretation:PartialInterpretation,
63538 relationIterpretation:PartialRelationInterpretation,
63539 from: DefinedElement, to: DefinedElement)
63540{
63541 find interpretation(problem,interpretation);
63542 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
63543 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eSuperTypes reference EClass");
63544 find mustExist(problem, interpretation, from);
63545 find mustExist(problem, interpretation, to);
63546 find mustInstanceOfEClass_class(problem,interpretation,from);
63547 find mustInstanceOfEClass_class(problem,interpretation,to);
63548 find mayInRelationeSuperTypes_reference_EClass(problem,interpretation,from,to);
63549 neg find mustInRelationeSuperTypes_reference_EClass(problem,interpretation,from,to);
63550}
63551pattern refineRelation_eAllAttributes_reference_EClass(
63552 problem:LogicProblem, interpretation:PartialInterpretation,
63553 relationIterpretation:PartialRelationInterpretation,
63554 from: DefinedElement, to: DefinedElement)
63555{
63556 find interpretation(problem,interpretation);
63557 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
63558 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllAttributes reference EClass");
63559 find mustExist(problem, interpretation, from);
63560 find mustExist(problem, interpretation, to);
63561 find mustInstanceOfEClass_class(problem,interpretation,from);
63562 find mustInstanceOfEAttribute_class(problem,interpretation,to);
63563 find mayInRelationeAllAttributes_reference_EClass(problem,interpretation,from,to);
63564 neg find mustInRelationeAllAttributes_reference_EClass(problem,interpretation,from,to);
63565}
63566pattern refineRelation_eAllReferences_reference_EClass(
63567 problem:LogicProblem, interpretation:PartialInterpretation,
63568 relationIterpretation:PartialRelationInterpretation,
63569 from: DefinedElement, to: DefinedElement)
63570{
63571 find interpretation(problem,interpretation);
63572 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
63573 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllReferences reference EClass");
63574 find mustExist(problem, interpretation, from);
63575 find mustExist(problem, interpretation, to);
63576 find mustInstanceOfEClass_class(problem,interpretation,from);
63577 find mustInstanceOfEReference_class(problem,interpretation,to);
63578 find mayInRelationeAllReferences_reference_EClass(problem,interpretation,from,to);
63579 neg find mustInRelationeAllReferences_reference_EClass(problem,interpretation,from,to);
63580}
63581pattern refineRelation_eReferences_reference_EClass(
63582 problem:LogicProblem, interpretation:PartialInterpretation,
63583 relationIterpretation:PartialRelationInterpretation,
63584 from: DefinedElement, to: DefinedElement)
63585{
63586 find interpretation(problem,interpretation);
63587 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
63588 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eReferences reference EClass");
63589 find mustExist(problem, interpretation, from);
63590 find mustExist(problem, interpretation, to);
63591 find mustInstanceOfEClass_class(problem,interpretation,from);
63592 find mustInstanceOfEReference_class(problem,interpretation,to);
63593 find mayInRelationeReferences_reference_EClass(problem,interpretation,from,to);
63594 neg find mustInRelationeReferences_reference_EClass(problem,interpretation,from,to);
63595}
63596pattern refineRelation_eAttributes_reference_EClass(
63597 problem:LogicProblem, interpretation:PartialInterpretation,
63598 relationIterpretation:PartialRelationInterpretation,
63599 from: DefinedElement, to: DefinedElement)
63600{
63601 find interpretation(problem,interpretation);
63602 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
63603 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAttributes reference EClass");
63604 find mustExist(problem, interpretation, from);
63605 find mustExist(problem, interpretation, to);
63606 find mustInstanceOfEClass_class(problem,interpretation,from);
63607 find mustInstanceOfEAttribute_class(problem,interpretation,to);
63608 find mayInRelationeAttributes_reference_EClass(problem,interpretation,from,to);
63609 neg find mustInRelationeAttributes_reference_EClass(problem,interpretation,from,to);
63610}
63611pattern refineRelation_eAllContainments_reference_EClass(
63612 problem:LogicProblem, interpretation:PartialInterpretation,
63613 relationIterpretation:PartialRelationInterpretation,
63614 from: DefinedElement, to: DefinedElement)
63615{
63616 find interpretation(problem,interpretation);
63617 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
63618 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllContainments reference EClass");
63619 find mustExist(problem, interpretation, from);
63620 find mustExist(problem, interpretation, to);
63621 find mustInstanceOfEClass_class(problem,interpretation,from);
63622 find mustInstanceOfEReference_class(problem,interpretation,to);
63623 find mayInRelationeAllContainments_reference_EClass(problem,interpretation,from,to);
63624 neg find mustInRelationeAllContainments_reference_EClass(problem,interpretation,from,to);
63625}
63626pattern refineRelation_eAllOperations_reference_EClass(
63627 problem:LogicProblem, interpretation:PartialInterpretation,
63628 relationIterpretation:PartialRelationInterpretation,
63629 from: DefinedElement, to: DefinedElement)
63630{
63631 find interpretation(problem,interpretation);
63632 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
63633 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllOperations reference EClass");
63634 find mustExist(problem, interpretation, from);
63635 find mustExist(problem, interpretation, to);
63636 find mustInstanceOfEClass_class(problem,interpretation,from);
63637 find mustInstanceOfEOperation_class(problem,interpretation,to);
63638 find mayInRelationeAllOperations_reference_EClass(problem,interpretation,from,to);
63639 neg find mustInRelationeAllOperations_reference_EClass(problem,interpretation,from,to);
63640}
63641pattern refineRelation_eAllStructuralFeatures_reference_EClass(
63642 problem:LogicProblem, interpretation:PartialInterpretation,
63643 relationIterpretation:PartialRelationInterpretation,
63644 from: DefinedElement, to: DefinedElement)
63645{
63646 find interpretation(problem,interpretation);
63647 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
63648 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllStructuralFeatures reference EClass");
63649 find mustExist(problem, interpretation, from);
63650 find mustExist(problem, interpretation, to);
63651 find mustInstanceOfEClass_class(problem,interpretation,from);
63652 find mustInstanceOfEStructuralFeature_class(problem,interpretation,to);
63653 find mayInRelationeAllStructuralFeatures_reference_EClass(problem,interpretation,from,to);
63654 neg find mustInRelationeAllStructuralFeatures_reference_EClass(problem,interpretation,from,to);
63655}
63656pattern refineRelation_eAllSuperTypes_reference_EClass(
63657 problem:LogicProblem, interpretation:PartialInterpretation,
63658 relationIterpretation:PartialRelationInterpretation,
63659 from: DefinedElement, to: DefinedElement)
63660{
63661 find interpretation(problem,interpretation);
63662 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
63663 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllSuperTypes reference EClass");
63664 find mustExist(problem, interpretation, from);
63665 find mustExist(problem, interpretation, to);
63666 find mustInstanceOfEClass_class(problem,interpretation,from);
63667 find mustInstanceOfEClass_class(problem,interpretation,to);
63668 find mayInRelationeAllSuperTypes_reference_EClass(problem,interpretation,from,to);
63669 neg find mustInRelationeAllSuperTypes_reference_EClass(problem,interpretation,from,to);
63670}
63671pattern refineRelation_eIDAttribute_reference_EClass(
63672 problem:LogicProblem, interpretation:PartialInterpretation,
63673 relationIterpretation:PartialRelationInterpretation,
63674 from: DefinedElement, to: DefinedElement)
63675{
63676 find interpretation(problem,interpretation);
63677 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
63678 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eIDAttribute reference EClass");
63679 find mustExist(problem, interpretation, from);
63680 find mustExist(problem, interpretation, to);
63681 find mustInstanceOfEClass_class(problem,interpretation,from);
63682 find mustInstanceOfEAttribute_class(problem,interpretation,to);
63683 find mayInRelationeIDAttribute_reference_EClass(problem,interpretation,from,to);
63684 neg find mustInRelationeIDAttribute_reference_EClass(problem,interpretation,from,to);
63685}
63686pattern refineRelation_eAllGenericSuperTypes_reference_EClass(
63687 problem:LogicProblem, interpretation:PartialInterpretation,
63688 relationIterpretation:PartialRelationInterpretation,
63689 from: DefinedElement, to: DefinedElement)
63690{
63691 find interpretation(problem,interpretation);
63692 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
63693 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllGenericSuperTypes reference EClass");
63694 find mustExist(problem, interpretation, from);
63695 find mustExist(problem, interpretation, to);
63696 find mustInstanceOfEClass_class(problem,interpretation,from);
63697 find mustInstanceOfEGenericType_class(problem,interpretation,to);
63698 find mayInRelationeAllGenericSuperTypes_reference_EClass(problem,interpretation,from,to);
63699 neg find mustInRelationeAllGenericSuperTypes_reference_EClass(problem,interpretation,from,to);
63700}
63701pattern refineRelation_eExceptions_reference_EOperation(
63702 problem:LogicProblem, interpretation:PartialInterpretation,
63703 relationIterpretation:PartialRelationInterpretation,
63704 from: DefinedElement, to: DefinedElement)
63705{
63706 find interpretation(problem,interpretation);
63707 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
63708 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eExceptions reference EOperation");
63709 find mustExist(problem, interpretation, from);
63710 find mustExist(problem, interpretation, to);
63711 find mustInstanceOfEOperation_class(problem,interpretation,from);
63712 find mustInstanceOfEClassifier_class(problem,interpretation,to);
63713 find mayInRelationeExceptions_reference_EOperation(problem,interpretation,from,to);
63714 neg find mustInRelationeExceptions_reference_EOperation(problem,interpretation,from,to);
63715}
63716pattern refineRelation_eOpposite_reference_EReference(
63717 problem:LogicProblem, interpretation:PartialInterpretation,
63718 relationIterpretation:PartialRelationInterpretation,
63719 from: DefinedElement, to: DefinedElement)
63720{
63721 find interpretation(problem,interpretation);
63722 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
63723 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eOpposite reference EReference");
63724 find mustExist(problem, interpretation, from);
63725 find mustExist(problem, interpretation, to);
63726 find mustInstanceOfEReference_class(problem,interpretation,from);
63727 find mustInstanceOfEReference_class(problem,interpretation,to);
63728 find mayInRelationeOpposite_reference_EReference(problem,interpretation,from,to);
63729 neg find mustInRelationeOpposite_reference_EReference(problem,interpretation,from,to);
63730}
63731pattern refineRelation_eReferenceType_reference_EReference(
63732 problem:LogicProblem, interpretation:PartialInterpretation,
63733 relationIterpretation:PartialRelationInterpretation,
63734 from: DefinedElement, to: DefinedElement)
63735{
63736 find interpretation(problem,interpretation);
63737 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
63738 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eReferenceType reference EReference");
63739 find mustExist(problem, interpretation, from);
63740 find mustExist(problem, interpretation, to);
63741 find mustInstanceOfEReference_class(problem,interpretation,from);
63742 find mustInstanceOfEClass_class(problem,interpretation,to);
63743 find mayInRelationeReferenceType_reference_EReference(problem,interpretation,from,to);
63744 neg find mustInRelationeReferenceType_reference_EReference(problem,interpretation,from,to);
63745}
63746pattern refineRelation_eKeys_reference_EReference(
63747 problem:LogicProblem, interpretation:PartialInterpretation,
63748 relationIterpretation:PartialRelationInterpretation,
63749 from: DefinedElement, to: DefinedElement)
63750{
63751 find interpretation(problem,interpretation);
63752 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
63753 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eKeys reference EReference");
63754 find mustExist(problem, interpretation, from);
63755 find mustExist(problem, interpretation, to);
63756 find mustInstanceOfEReference_class(problem,interpretation,from);
63757 find mustInstanceOfEAttribute_class(problem,interpretation,to);
63758 find mayInRelationeKeys_reference_EReference(problem,interpretation,from,to);
63759 neg find mustInRelationeKeys_reference_EReference(problem,interpretation,from,to);
63760}
63761pattern refineRelation_eType_reference_ETypedElement(
63762 problem:LogicProblem, interpretation:PartialInterpretation,
63763 relationIterpretation:PartialRelationInterpretation,
63764 from: DefinedElement, to: DefinedElement)
63765{
63766 find interpretation(problem,interpretation);
63767 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
63768 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eType reference ETypedElement");
63769 find mustExist(problem, interpretation, from);
63770 find mustExist(problem, interpretation, to);
63771 find mustInstanceOfETypedElement_class(problem,interpretation,from);
63772 find mustInstanceOfEClassifier_class(problem,interpretation,to);
63773 find mayInRelationeType_reference_ETypedElement(problem,interpretation,from,to);
63774 neg find mustInRelationeType_reference_ETypedElement(problem,interpretation,from,to);
63775}
63776pattern refineRelation_eRawType_reference_EGenericType(
63777 problem:LogicProblem, interpretation:PartialInterpretation,
63778 relationIterpretation:PartialRelationInterpretation,
63779 from: DefinedElement, to: DefinedElement)
63780{
63781 find interpretation(problem,interpretation);
63782 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
63783 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eRawType reference EGenericType");
63784 find mustExist(problem, interpretation, from);
63785 find mustExist(problem, interpretation, to);
63786 find mustInstanceOfEGenericType_class(problem,interpretation,from);
63787 find mustInstanceOfEClassifier_class(problem,interpretation,to);
63788 find mayInRelationeRawType_reference_EGenericType(problem,interpretation,from,to);
63789 neg find mustInRelationeRawType_reference_EGenericType(problem,interpretation,from,to);
63790}
63791pattern refineRelation_eTypeParameter_reference_EGenericType(
63792 problem:LogicProblem, interpretation:PartialInterpretation,
63793 relationIterpretation:PartialRelationInterpretation,
63794 from: DefinedElement, to: DefinedElement)
63795{
63796 find interpretation(problem,interpretation);
63797 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
63798 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eTypeParameter reference EGenericType");
63799 find mustExist(problem, interpretation, from);
63800 find mustExist(problem, interpretation, to);
63801 find mustInstanceOfEGenericType_class(problem,interpretation,from);
63802 find mustInstanceOfETypeParameter_class(problem,interpretation,to);
63803 find mayInRelationeTypeParameter_reference_EGenericType(problem,interpretation,from,to);
63804 neg find mustInRelationeTypeParameter_reference_EGenericType(problem,interpretation,from,to);
63805}
63806pattern refineRelation_eClassifier_reference_EGenericType(
63807 problem:LogicProblem, interpretation:PartialInterpretation,
63808 relationIterpretation:PartialRelationInterpretation,
63809 from: DefinedElement, to: DefinedElement)
63810{
63811 find interpretation(problem,interpretation);
63812 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
63813 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eClassifier reference EGenericType");
63814 find mustExist(problem, interpretation, from);
63815 find mustExist(problem, interpretation, to);
63816 find mustInstanceOfEGenericType_class(problem,interpretation,from);
63817 find mustInstanceOfEClassifier_class(problem,interpretation,to);
63818 find mayInRelationeClassifier_reference_EGenericType(problem,interpretation,from,to);
63819 neg find mustInRelationeClassifier_reference_EGenericType(problem,interpretation,from,to);
63820}
63821pattern refineRelation_iD_attribute_EAttribute(
63822 problem:LogicProblem, interpretation:PartialInterpretation,
63823 relationIterpretation:PartialRelationInterpretation,
63824 from: DefinedElement, to: DefinedElement)
63825{
63826 find interpretation(problem,interpretation);
63827 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
63828 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"iD attribute EAttribute");
63829 find mustExist(problem, interpretation, from);
63830 find mustExist(problem, interpretation, to);
63831 find mustInstanceOfEAttribute_class(problem,interpretation,from);
63832 BooleanElement(to);
63833 find mayInRelationiD_attribute_EAttribute(problem,interpretation,from,to);
63834 neg find mustInRelationiD_attribute_EAttribute(problem,interpretation,from,to);
63835}
63836pattern refineRelation_source_attribute_EAnnotation(
63837 problem:LogicProblem, interpretation:PartialInterpretation,
63838 relationIterpretation:PartialRelationInterpretation,
63839 from: DefinedElement, to: DefinedElement)
63840{
63841 find interpretation(problem,interpretation);
63842 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
63843 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"source attribute EAnnotation");
63844 find mustExist(problem, interpretation, from);
63845 find mustExist(problem, interpretation, to);
63846 find mustInstanceOfEAnnotation_class(problem,interpretation,from);
63847 StringElement(to);
63848 find mayInRelationsource_attribute_EAnnotation(problem,interpretation,from,to);
63849 neg find mustInRelationsource_attribute_EAnnotation(problem,interpretation,from,to);
63850}
63851pattern refineRelation_abstract_attribute_EClass(
63852 problem:LogicProblem, interpretation:PartialInterpretation,
63853 relationIterpretation:PartialRelationInterpretation,
63854 from: DefinedElement, to: DefinedElement)
63855{
63856 find interpretation(problem,interpretation);
63857 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
63858 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"abstract attribute EClass");
63859 find mustExist(problem, interpretation, from);
63860 find mustExist(problem, interpretation, to);
63861 find mustInstanceOfEClass_class(problem,interpretation,from);
63862 BooleanElement(to);
63863 find mayInRelationabstract_attribute_EClass(problem,interpretation,from,to);
63864 neg find mustInRelationabstract_attribute_EClass(problem,interpretation,from,to);
63865}
63866pattern refineRelation_interface_attribute_EClass(
63867 problem:LogicProblem, interpretation:PartialInterpretation,
63868 relationIterpretation:PartialRelationInterpretation,
63869 from: DefinedElement, to: DefinedElement)
63870{
63871 find interpretation(problem,interpretation);
63872 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
63873 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface attribute EClass");
63874 find mustExist(problem, interpretation, from);
63875 find mustExist(problem, interpretation, to);
63876 find mustInstanceOfEClass_class(problem,interpretation,from);
63877 BooleanElement(to);
63878 find mayInRelationinterface_attribute_EClass(problem,interpretation,from,to);
63879 neg find mustInRelationinterface_attribute_EClass(problem,interpretation,from,to);
63880}
63881pattern refineRelation_instanceClassName_attribute_EClassifier(
63882 problem:LogicProblem, interpretation:PartialInterpretation,
63883 relationIterpretation:PartialRelationInterpretation,
63884 from: DefinedElement, to: DefinedElement)
63885{
63886 find interpretation(problem,interpretation);
63887 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
63888 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"instanceClassName attribute EClassifier");
63889 find mustExist(problem, interpretation, from);
63890 find mustExist(problem, interpretation, to);
63891 find mustInstanceOfEClassifier_class(problem,interpretation,from);
63892 StringElement(to);
63893 find mayInRelationinstanceClassName_attribute_EClassifier(problem,interpretation,from,to);
63894 neg find mustInRelationinstanceClassName_attribute_EClassifier(problem,interpretation,from,to);
63895}
63896pattern refineRelation_instanceTypeName_attribute_EClassifier(
63897 problem:LogicProblem, interpretation:PartialInterpretation,
63898 relationIterpretation:PartialRelationInterpretation,
63899 from: DefinedElement, to: DefinedElement)
63900{
63901 find interpretation(problem,interpretation);
63902 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
63903 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"instanceTypeName attribute EClassifier");
63904 find mustExist(problem, interpretation, from);
63905 find mustExist(problem, interpretation, to);
63906 find mustInstanceOfEClassifier_class(problem,interpretation,from);
63907 StringElement(to);
63908 find mayInRelationinstanceTypeName_attribute_EClassifier(problem,interpretation,from,to);
63909 neg find mustInRelationinstanceTypeName_attribute_EClassifier(problem,interpretation,from,to);
63910}
63911pattern refineRelation_serializable_attribute_EDataType(
63912 problem:LogicProblem, interpretation:PartialInterpretation,
63913 relationIterpretation:PartialRelationInterpretation,
63914 from: DefinedElement, to: DefinedElement)
63915{
63916 find interpretation(problem,interpretation);
63917 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
63918 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"serializable attribute EDataType");
63919 find mustExist(problem, interpretation, from);
63920 find mustExist(problem, interpretation, to);
63921 find mustInstanceOfEDataType_class(problem,interpretation,from);
63922 BooleanElement(to);
63923 find mayInRelationserializable_attribute_EDataType(problem,interpretation,from,to);
63924 neg find mustInRelationserializable_attribute_EDataType(problem,interpretation,from,to);
63925}
63926pattern refineRelation_value_attribute_EEnumLiteral(
63927 problem:LogicProblem, interpretation:PartialInterpretation,
63928 relationIterpretation:PartialRelationInterpretation,
63929 from: DefinedElement, to: DefinedElement)
63930{
63931 find interpretation(problem,interpretation);
63932 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
63933 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"value attribute EEnumLiteral");
63934 find mustExist(problem, interpretation, from);
63935 find mustExist(problem, interpretation, to);
63936 find mustInstanceOfEEnumLiteral_class(problem,interpretation,from);
63937 IntegerElement(to);
63938 find mayInRelationvalue_attribute_EEnumLiteral(problem,interpretation,from,to);
63939 neg find mustInRelationvalue_attribute_EEnumLiteral(problem,interpretation,from,to);
63940}
63941pattern refineRelation_literal_attribute_EEnumLiteral(
63942 problem:LogicProblem, interpretation:PartialInterpretation,
63943 relationIterpretation:PartialRelationInterpretation,
63944 from: DefinedElement, to: DefinedElement)
63945{
63946 find interpretation(problem,interpretation);
63947 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
63948 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"literal attribute EEnumLiteral");
63949 find mustExist(problem, interpretation, from);
63950 find mustExist(problem, interpretation, to);
63951 find mustInstanceOfEEnumLiteral_class(problem,interpretation,from);
63952 StringElement(to);
63953 find mayInRelationliteral_attribute_EEnumLiteral(problem,interpretation,from,to);
63954 neg find mustInRelationliteral_attribute_EEnumLiteral(problem,interpretation,from,to);
63955}
63956pattern refineRelation_name_attribute_ENamedElement(
63957 problem:LogicProblem, interpretation:PartialInterpretation,
63958 relationIterpretation:PartialRelationInterpretation,
63959 from: DefinedElement, to: DefinedElement)
63960{
63961 find interpretation(problem,interpretation);
63962 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
63963 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"name attribute ENamedElement");
63964 find mustExist(problem, interpretation, from);
63965 find mustExist(problem, interpretation, to);
63966 find mustInstanceOfENamedElement_class(problem,interpretation,from);
63967 StringElement(to);
63968 find mayInRelationname_attribute_ENamedElement(problem,interpretation,from,to);
63969 neg find mustInRelationname_attribute_ENamedElement(problem,interpretation,from,to);
63970}
63971pattern refineRelation_nsURI_attribute_EPackage(
63972 problem:LogicProblem, interpretation:PartialInterpretation,
63973 relationIterpretation:PartialRelationInterpretation,
63974 from: DefinedElement, to: DefinedElement)
63975{
63976 find interpretation(problem,interpretation);
63977 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
63978 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"nsURI attribute EPackage");
63979 find mustExist(problem, interpretation, from);
63980 find mustExist(problem, interpretation, to);
63981 find mustInstanceOfEPackage_class(problem,interpretation,from);
63982 StringElement(to);
63983 find mayInRelationnsURI_attribute_EPackage(problem,interpretation,from,to);
63984 neg find mustInRelationnsURI_attribute_EPackage(problem,interpretation,from,to);
63985}
63986pattern refineRelation_nsPrefix_attribute_EPackage(
63987 problem:LogicProblem, interpretation:PartialInterpretation,
63988 relationIterpretation:PartialRelationInterpretation,
63989 from: DefinedElement, to: DefinedElement)
63990{
63991 find interpretation(problem,interpretation);
63992 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
63993 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"nsPrefix attribute EPackage");
63994 find mustExist(problem, interpretation, from);
63995 find mustExist(problem, interpretation, to);
63996 find mustInstanceOfEPackage_class(problem,interpretation,from);
63997 StringElement(to);
63998 find mayInRelationnsPrefix_attribute_EPackage(problem,interpretation,from,to);
63999 neg find mustInRelationnsPrefix_attribute_EPackage(problem,interpretation,from,to);
64000}
64001pattern refineRelation_containment_attribute_EReference(
64002 problem:LogicProblem, interpretation:PartialInterpretation,
64003 relationIterpretation:PartialRelationInterpretation,
64004 from: DefinedElement, to: DefinedElement)
64005{
64006 find interpretation(problem,interpretation);
64007 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
64008 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"containment attribute EReference");
64009 find mustExist(problem, interpretation, from);
64010 find mustExist(problem, interpretation, to);
64011 find mustInstanceOfEReference_class(problem,interpretation,from);
64012 BooleanElement(to);
64013 find mayInRelationcontainment_attribute_EReference(problem,interpretation,from,to);
64014 neg find mustInRelationcontainment_attribute_EReference(problem,interpretation,from,to);
64015}
64016pattern refineRelation_container_attribute_EReference(
64017 problem:LogicProblem, interpretation:PartialInterpretation,
64018 relationIterpretation:PartialRelationInterpretation,
64019 from: DefinedElement, to: DefinedElement)
64020{
64021 find interpretation(problem,interpretation);
64022 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
64023 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"container attribute EReference");
64024 find mustExist(problem, interpretation, from);
64025 find mustExist(problem, interpretation, to);
64026 find mustInstanceOfEReference_class(problem,interpretation,from);
64027 BooleanElement(to);
64028 find mayInRelationcontainer_attribute_EReference(problem,interpretation,from,to);
64029 neg find mustInRelationcontainer_attribute_EReference(problem,interpretation,from,to);
64030}
64031pattern refineRelation_resolveProxies_attribute_EReference(
64032 problem:LogicProblem, interpretation:PartialInterpretation,
64033 relationIterpretation:PartialRelationInterpretation,
64034 from: DefinedElement, to: DefinedElement)
64035{
64036 find interpretation(problem,interpretation);
64037 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
64038 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"resolveProxies attribute EReference");
64039 find mustExist(problem, interpretation, from);
64040 find mustExist(problem, interpretation, to);
64041 find mustInstanceOfEReference_class(problem,interpretation,from);
64042 BooleanElement(to);
64043 find mayInRelationresolveProxies_attribute_EReference(problem,interpretation,from,to);
64044 neg find mustInRelationresolveProxies_attribute_EReference(problem,interpretation,from,to);
64045}
64046pattern refineRelation_changeable_attribute_EStructuralFeature(
64047 problem:LogicProblem, interpretation:PartialInterpretation,
64048 relationIterpretation:PartialRelationInterpretation,
64049 from: DefinedElement, to: DefinedElement)
64050{
64051 find interpretation(problem,interpretation);
64052 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
64053 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"changeable attribute EStructuralFeature");
64054 find mustExist(problem, interpretation, from);
64055 find mustExist(problem, interpretation, to);
64056 find mustInstanceOfEStructuralFeature_class(problem,interpretation,from);
64057 BooleanElement(to);
64058 find mayInRelationchangeable_attribute_EStructuralFeature(problem,interpretation,from,to);
64059 neg find mustInRelationchangeable_attribute_EStructuralFeature(problem,interpretation,from,to);
64060}
64061pattern refineRelation_volatile_attribute_EStructuralFeature(
64062 problem:LogicProblem, interpretation:PartialInterpretation,
64063 relationIterpretation:PartialRelationInterpretation,
64064 from: DefinedElement, to: DefinedElement)
64065{
64066 find interpretation(problem,interpretation);
64067 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
64068 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"volatile attribute EStructuralFeature");
64069 find mustExist(problem, interpretation, from);
64070 find mustExist(problem, interpretation, to);
64071 find mustInstanceOfEStructuralFeature_class(problem,interpretation,from);
64072 BooleanElement(to);
64073 find mayInRelationvolatile_attribute_EStructuralFeature(problem,interpretation,from,to);
64074 neg find mustInRelationvolatile_attribute_EStructuralFeature(problem,interpretation,from,to);
64075}
64076pattern refineRelation_transient_attribute_EStructuralFeature(
64077 problem:LogicProblem, interpretation:PartialInterpretation,
64078 relationIterpretation:PartialRelationInterpretation,
64079 from: DefinedElement, to: DefinedElement)
64080{
64081 find interpretation(problem,interpretation);
64082 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
64083 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"transient attribute EStructuralFeature");
64084 find mustExist(problem, interpretation, from);
64085 find mustExist(problem, interpretation, to);
64086 find mustInstanceOfEStructuralFeature_class(problem,interpretation,from);
64087 BooleanElement(to);
64088 find mayInRelationtransient_attribute_EStructuralFeature(problem,interpretation,from,to);
64089 neg find mustInRelationtransient_attribute_EStructuralFeature(problem,interpretation,from,to);
64090}
64091pattern refineRelation_defaultValueLiteral_attribute_EStructuralFeature(
64092 problem:LogicProblem, interpretation:PartialInterpretation,
64093 relationIterpretation:PartialRelationInterpretation,
64094 from: DefinedElement, to: DefinedElement)
64095{
64096 find interpretation(problem,interpretation);
64097 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
64098 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"defaultValueLiteral attribute EStructuralFeature");
64099 find mustExist(problem, interpretation, from);
64100 find mustExist(problem, interpretation, to);
64101 find mustInstanceOfEStructuralFeature_class(problem,interpretation,from);
64102 StringElement(to);
64103 find mayInRelationdefaultValueLiteral_attribute_EStructuralFeature(problem,interpretation,from,to);
64104 neg find mustInRelationdefaultValueLiteral_attribute_EStructuralFeature(problem,interpretation,from,to);
64105}
64106pattern refineRelation_unsettable_attribute_EStructuralFeature(
64107 problem:LogicProblem, interpretation:PartialInterpretation,
64108 relationIterpretation:PartialRelationInterpretation,
64109 from: DefinedElement, to: DefinedElement)
64110{
64111 find interpretation(problem,interpretation);
64112 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
64113 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"unsettable attribute EStructuralFeature");
64114 find mustExist(problem, interpretation, from);
64115 find mustExist(problem, interpretation, to);
64116 find mustInstanceOfEStructuralFeature_class(problem,interpretation,from);
64117 BooleanElement(to);
64118 find mayInRelationunsettable_attribute_EStructuralFeature(problem,interpretation,from,to);
64119 neg find mustInRelationunsettable_attribute_EStructuralFeature(problem,interpretation,from,to);
64120}
64121pattern refineRelation_derived_attribute_EStructuralFeature(
64122 problem:LogicProblem, interpretation:PartialInterpretation,
64123 relationIterpretation:PartialRelationInterpretation,
64124 from: DefinedElement, to: DefinedElement)
64125{
64126 find interpretation(problem,interpretation);
64127 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
64128 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"derived attribute EStructuralFeature");
64129 find mustExist(problem, interpretation, from);
64130 find mustExist(problem, interpretation, to);
64131 find mustInstanceOfEStructuralFeature_class(problem,interpretation,from);
64132 BooleanElement(to);
64133 find mayInRelationderived_attribute_EStructuralFeature(problem,interpretation,from,to);
64134 neg find mustInRelationderived_attribute_EStructuralFeature(problem,interpretation,from,to);
64135}
64136pattern refineRelation_ordered_attribute_ETypedElement(
64137 problem:LogicProblem, interpretation:PartialInterpretation,
64138 relationIterpretation:PartialRelationInterpretation,
64139 from: DefinedElement, to: DefinedElement)
64140{
64141 find interpretation(problem,interpretation);
64142 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
64143 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"ordered attribute ETypedElement");
64144 find mustExist(problem, interpretation, from);
64145 find mustExist(problem, interpretation, to);
64146 find mustInstanceOfETypedElement_class(problem,interpretation,from);
64147 BooleanElement(to);
64148 find mayInRelationordered_attribute_ETypedElement(problem,interpretation,from,to);
64149 neg find mustInRelationordered_attribute_ETypedElement(problem,interpretation,from,to);
64150}
64151pattern refineRelation_unique_attribute_ETypedElement(
64152 problem:LogicProblem, interpretation:PartialInterpretation,
64153 relationIterpretation:PartialRelationInterpretation,
64154 from: DefinedElement, to: DefinedElement)
64155{
64156 find interpretation(problem,interpretation);
64157 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
64158 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"unique attribute ETypedElement");
64159 find mustExist(problem, interpretation, from);
64160 find mustExist(problem, interpretation, to);
64161 find mustInstanceOfETypedElement_class(problem,interpretation,from);
64162 BooleanElement(to);
64163 find mayInRelationunique_attribute_ETypedElement(problem,interpretation,from,to);
64164 neg find mustInRelationunique_attribute_ETypedElement(problem,interpretation,from,to);
64165}
64166pattern refineRelation_lowerBound_attribute_ETypedElement(
64167 problem:LogicProblem, interpretation:PartialInterpretation,
64168 relationIterpretation:PartialRelationInterpretation,
64169 from: DefinedElement, to: DefinedElement)
64170{
64171 find interpretation(problem,interpretation);
64172 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
64173 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"lowerBound attribute ETypedElement");
64174 find mustExist(problem, interpretation, from);
64175 find mustExist(problem, interpretation, to);
64176 find mustInstanceOfETypedElement_class(problem,interpretation,from);
64177 IntegerElement(to);
64178 find mayInRelationlowerBound_attribute_ETypedElement(problem,interpretation,from,to);
64179 neg find mustInRelationlowerBound_attribute_ETypedElement(problem,interpretation,from,to);
64180}
64181pattern refineRelation_upperBound_attribute_ETypedElement(
64182 problem:LogicProblem, interpretation:PartialInterpretation,
64183 relationIterpretation:PartialRelationInterpretation,
64184 from: DefinedElement, to: DefinedElement)
64185{
64186 find interpretation(problem,interpretation);
64187 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
64188 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"upperBound attribute ETypedElement");
64189 find mustExist(problem, interpretation, from);
64190 find mustExist(problem, interpretation, to);
64191 find mustInstanceOfETypedElement_class(problem,interpretation,from);
64192 IntegerElement(to);
64193 find mayInRelationupperBound_attribute_ETypedElement(problem,interpretation,from,to);
64194 neg find mustInRelationupperBound_attribute_ETypedElement(problem,interpretation,from,to);
64195}
64196pattern refineRelation_many_attribute_ETypedElement(
64197 problem:LogicProblem, interpretation:PartialInterpretation,
64198 relationIterpretation:PartialRelationInterpretation,
64199 from: DefinedElement, to: DefinedElement)
64200{
64201 find interpretation(problem,interpretation);
64202 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
64203 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"many attribute ETypedElement");
64204 find mustExist(problem, interpretation, from);
64205 find mustExist(problem, interpretation, to);
64206 find mustInstanceOfETypedElement_class(problem,interpretation,from);
64207 BooleanElement(to);
64208 find mayInRelationmany_attribute_ETypedElement(problem,interpretation,from,to);
64209 neg find mustInRelationmany_attribute_ETypedElement(problem,interpretation,from,to);
64210}
64211pattern refineRelation_required_attribute_ETypedElement(
64212 problem:LogicProblem, interpretation:PartialInterpretation,
64213 relationIterpretation:PartialRelationInterpretation,
64214 from: DefinedElement, to: DefinedElement)
64215{
64216 find interpretation(problem,interpretation);
64217 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
64218 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"required attribute ETypedElement");
64219 find mustExist(problem, interpretation, from);
64220 find mustExist(problem, interpretation, to);
64221 find mustInstanceOfETypedElement_class(problem,interpretation,from);
64222 BooleanElement(to);
64223 find mayInRelationrequired_attribute_ETypedElement(problem,interpretation,from,to);
64224 neg find mustInRelationrequired_attribute_ETypedElement(problem,interpretation,from,to);
64225}
64226pattern refineRelation_key_attribute_EStringToStringMapEntry(
64227 problem:LogicProblem, interpretation:PartialInterpretation,
64228 relationIterpretation:PartialRelationInterpretation,
64229 from: DefinedElement, to: DefinedElement)
64230{
64231 find interpretation(problem,interpretation);
64232 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
64233 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"key attribute EStringToStringMapEntry");
64234 find mustExist(problem, interpretation, from);
64235 find mustExist(problem, interpretation, to);
64236 find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,from);
64237 StringElement(to);
64238 find mayInRelationkey_attribute_EStringToStringMapEntry(problem,interpretation,from,to);
64239 neg find mustInRelationkey_attribute_EStringToStringMapEntry(problem,interpretation,from,to);
64240}
64241pattern refineRelation_value_attribute_EStringToStringMapEntry(
64242 problem:LogicProblem, interpretation:PartialInterpretation,
64243 relationIterpretation:PartialRelationInterpretation,
64244 from: DefinedElement, to: DefinedElement)
64245{
64246 find interpretation(problem,interpretation);
64247 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
64248 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"value attribute EStringToStringMapEntry");
64249 find mustExist(problem, interpretation, from);
64250 find mustExist(problem, interpretation, to);
64251 find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,from);
64252 StringElement(to);
64253 find mayInRelationvalue_attribute_EStringToStringMapEntry(problem,interpretation,from,to);
64254 neg find mustInRelationvalue_attribute_EStringToStringMapEntry(problem,interpretation,from,to);
64255}
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/debug/generation.logicproblem b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/debug/generation.logicproblem
index ab657f0b..169eadb3 100644
--- a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/debug/generation.logicproblem
+++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/debug/generation.logicproblem
@@ -1995,7 +1995,7 @@
1995 <parameters xsi:type="language_1:StringTypeReference"/> 1995 <parameters xsi:type="language_1:StringTypeReference"/>
1996 </relations> 1996 </relations>
1997 <elements name="o 1" definedInType="//@types.19 //@types.21 //@types.23"/> 1997 <elements name="o 1" definedInType="//@types.19 //@types.21 //@types.23"/>
1998 <containmentHierarchies typesOrderedInHierarchy="//@types.7 //@types.5 //@types.0 //@types.9 //@types.2 //@types.3 //@types.6 //@types.11 //@types.10 //@types.16 //@types.13 //@types.1 //@types.15 //@types.14 //@types.4 //@types.12 //@types.8 //@types.17 //@types.18 //@types.19 //@types.20 //@types.21 //@types.22 //@types.23 //@types.24" containmentRelations="//@relations.1 //@relations.3 //@relations.6 //@relations.16 //@relations.17 //@relations.20 //@relations.21 //@relations.23 //@relations.25 //@relations.26 //@relations.28 //@relations.29 //@relations.30 //@relations.38 //@relations.39 //@relations.40 //@relations.42 //@relations.45"/> 1998 <containmentHierarchies typesOrderedInHierarchy="//@types.10 //@types.8 //@types.16 //@types.6 //@types.17 //@types.9 //@types.0 //@types.11 //@types.12 //@types.4 //@types.3 //@types.14 //@types.7 //@types.1 //@types.18 //@types.13 //@types.5 //@types.15 //@types.2 //@types.19 //@types.20 //@types.21 //@types.22 //@types.23 //@types.24" containmentRelations="//@relations.1 //@relations.3 //@relations.6 //@relations.16 //@relations.17 //@relations.20 //@relations.21 //@relations.23 //@relations.25 //@relations.26 //@relations.28 //@relations.29 //@relations.30 //@relations.38 //@relations.39 //@relations.40 //@relations.42 //@relations.45"/>
1999 <annotations xsi:type="ecore2logicannotations:LowerMultiplicityAssertion" target="//@assertions.0" relation="//@relations.0" lower="1"/> 1999 <annotations xsi:type="ecore2logicannotations:LowerMultiplicityAssertion" target="//@assertions.0" relation="//@relations.0" lower="1"/>
2000 <annotations xsi:type="ecore2logicannotations:UpperMultiplicityAssertion" target="//@assertions.1" relation="//@relations.0" upper="1"/> 2000 <annotations xsi:type="ecore2logicannotations:UpperMultiplicityAssertion" target="//@assertions.1" relation="//@relations.0" upper="1"/>
2001 <annotations xsi:type="ecore2logicannotations:UpperMultiplicityAssertion" target="//@assertions.2" relation="//@relations.2" upper="1"/> 2001 <annotations xsi:type="ecore2logicannotations:UpperMultiplicityAssertion" target="//@assertions.2" relation="//@relations.2" upper="1"/>
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/debug/problem.als b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/debug/problem.als
new file mode 100644
index 00000000..16ff4006
--- /dev/null
+++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/debug/problem.als
@@ -0,0 +1,203 @@
1one sig util'language {
2 util'root : one type'FunctionalArchitectureModel'class + (type'FunctionalData'class + (type'Function'class + (type'FAMTerminator'class + (type'InformationLink'class + (type'FunctionalInterface'class + (type'FunctionalElement'class + (type'FunctionalInput'class + (type'FunctionalOutput'class + (type'FunctionalArchitectureModel'class'DefinedPart + type'FunctionalArchitectureModel'class'UndefinedPart))))))))),
3 util'contains : (type'FunctionalArchitectureModel'class + (type'FunctionalData'class + (type'Function'class + (type'FAMTerminator'class + (type'InformationLink'class + (type'FunctionalInterface'class + (type'FunctionalElement'class + (type'FunctionalInput'class + (type'FunctionalOutput'class + (type'FunctionalArchitectureModel'class'DefinedPart + type'FunctionalArchitectureModel'class'UndefinedPart)))))))))) lone->set (type'FunctionalArchitectureModel'class + (type'FunctionalData'class + (type'Function'class + (type'FAMTerminator'class + (type'InformationLink'class + (type'FunctionalInterface'class + (type'FunctionalElement'class + (type'FunctionalInput'class + (type'FunctionalOutput'class + (type'FunctionalArchitectureModel'class'DefinedPart + type'FunctionalArchitectureModel'class'UndefinedPart))))))))))
4}
5abstract sig util'Object {
6}
7sig type'FunctionalElement'class in util'Object {
8 interface'reference'FunctionalElement : lone type'FunctionalInterface'class,
9 parent'reference'FunctionalElement : lone type'Function'class
10}
11sig type'FunctionalArchitectureModel'class in util'Object {
12 rootElements'reference'FunctionalArchitectureModel : set type'FunctionalElement'class
13}
14sig type'Function'class in type'FunctionalElement'class {
15 subElements'reference'Function : set type'FunctionalElement'class
16}
17sig type'FAMTerminator'class in util'Object {
18 data'reference'FAMTerminator : lone type'FunctionalData'class
19}
20sig type'InformationLink'class in util'Object {
21 from'reference'InformationLink : lone type'FunctionalOutput'class,
22 to'reference'InformationLink : one type'FunctionalInput'class
23}
24sig type'FunctionalInterface'class in util'Object {
25 data'reference'FunctionalInterface : set type'FunctionalData'class,
26 element'reference'FunctionalInterface : lone type'FunctionalElement'class
27}
28sig type'FunctionalInput'class in type'FunctionalData'class {
29 IncomingLinks'reference'FunctionalInput : set type'InformationLink'class
30}
31sig type'FunctionalOutput'class in type'FunctionalData'class {
32 outgoingLinks'reference'FunctionalOutput : set type'InformationLink'class
33}
34sig type'FunctionalData'class in util'Object {
35 terminator'reference'FunctionalData : lone type'FAMTerminator'class,
36 interface'reference'FunctionalData : lone type'FunctionalInterface'class
37}
38sig type'FunctionType'enum in util'Object {
39}
40sig type'FunctionalArchitectureModel'class'DefinedPart in type'FunctionalArchitectureModel'class {
41}
42sig type'FunctionalArchitectureModel'class'UndefinedPart in type'FunctionalArchitectureModel'class {
43}
44one sig element'o'1 in type'FunctionalArchitectureModel'class'DefinedPart {
45}
46one sig element'Root'literal'FunctionType,
47element'Intermediate'literal'FunctionType,
48element'Leaf'literal'FunctionType in type'FunctionType'enum {
49}
50pred pattern'ca'mcgill'ecse'dslreasoner'standalone'test'fam'queries'terminatorAndInformation [parameter'T: type'FAMTerminator'class, parameter'I: type'InformationLink'class] {
51 (some variable'Out: type'FunctionalOutput'class { parameter'I in variable'Out.outgoingLinks'reference'FunctionalOutput && parameter'T in variable'Out.terminator'reference'FunctionalData }) || (some variable'In: type'FunctionalInput'class { variable'In in parameter'I.to'reference'InformationLink && (variable'In in type'FunctionalInput'class && parameter'T in variable'In.terminator'reference'FunctionalData) })
52}
53pred pattern'ca'mcgill'ecse'dslreasoner'standalone'test'fam'queries'type [parameter'This: type'Function'class, parameter'Target: type'FunctionType'enum] {
54 (some variable'Model: type'FunctionalArchitectureModel'class { pattern'ca'mcgill'ecse'dslreasoner'standalone'test'fam'queries'rootElements [ variable'Model , parameter'This ] && parameter'Target = element'Root'literal'FunctionType }) || ((all variable'Child: type'Function'class, variable'Model: type'FunctionalArchitectureModel'class { parameter'This in type'Function'class && (! (pattern'ca'mcgill'ecse'dslreasoner'standalone'test'fam'queries'parent [ variable'Child , parameter'This ]) && (! (pattern'ca'mcgill'ecse'dslreasoner'standalone'test'fam'queries'rootElements [ variable'Model , parameter'This ]) && parameter'Target = element'Leaf'literal'FunctionType)) }) || (some variable'Par: type'Function'class, variable'Child: type'Function'class { pattern'ca'mcgill'ecse'dslreasoner'standalone'test'fam'queries'parent [ parameter'This , variable'Par ] && (pattern'ca'mcgill'ecse'dslreasoner'standalone'test'fam'queries'parent [ variable'Child , parameter'This ] && parameter'Target = element'Intermediate'literal'FunctionType) }))
55}
56pred pattern'ca'mcgill'ecse'dslreasoner'standalone'test'fam'queries'rootElements [parameter'Model: type'FunctionalArchitectureModel'class, parameter'Root: type'Function'class] {
57 parameter'Root in type'Function'class && parameter'Root in parameter'Model.rootElements'reference'FunctionalArchitectureModel
58}
59pred pattern'ca'mcgill'ecse'dslreasoner'standalone'test'fam'queries'parent [parameter'Func: type'Function'class, parameter'Par: type'Function'class] {
60 parameter'Func in type'Function'class && (parameter'Par in parameter'Func.parent'reference'FunctionalElement && parameter'Par in type'Function'class)
61}
62pred pattern'ca'mcgill'ecse'dslreasoner'standalone'test'fam'queries'model [parameter'This: type'FunctionalElement'class, parameter'Target: type'FunctionalArchitectureModel'class] {
63 parameter'This in type'FunctionalElement'class && parameter'Target in type'FunctionalArchitectureModel'class
64}
65fact typedefinition'FunctionType'enum {
66 type'FunctionType'enum = element'Root'literal'FunctionType + (element'Intermediate'literal'FunctionType + element'Leaf'literal'FunctionType)
67}
68fact typedefinition'FunctionalArchitectureModel'class'DefinedPart {
69 type'FunctionalArchitectureModel'class'DefinedPart = element'o'1
70}
71fact typeElementsUnique'FunctionType'enum {
72 element'Root'literal'FunctionType != element'Intermediate'literal'FunctionType && (element'Root'literal'FunctionType != element'Leaf'literal'FunctionType && (element'Root'literal'FunctionType != element'o'1 && (element'Intermediate'literal'FunctionType != element'Leaf'literal'FunctionType && (element'Intermediate'literal'FunctionType != element'o'1 && element'Leaf'literal'FunctionType != element'o'1))))
73}
74fact typeElementsUnique'FunctionalArchitectureModel'class'DefinedPart {
75 element'Root'literal'FunctionType != element'Intermediate'literal'FunctionType && (element'Root'literal'FunctionType != element'Leaf'literal'FunctionType && (element'Root'literal'FunctionType != element'o'1 && (element'Intermediate'literal'FunctionType != element'Leaf'literal'FunctionType && (element'Intermediate'literal'FunctionType != element'o'1 && element'Leaf'literal'FunctionType != element'o'1))))
76}
77fact abstract'FunctionalElement'class {
78 type'FunctionalElement'class = type'Function'class
79}
80fact abstract'FunctionalArchitectureModel'class {
81 type'FunctionalArchitectureModel'class = type'FunctionalArchitectureModel'class'DefinedPart + type'FunctionalArchitectureModel'class'UndefinedPart
82}
83fact abstract'FunctionalData'class {
84 type'FunctionalData'class = type'FunctionalInput'class + type'FunctionalOutput'class
85}
86fact ObjectTypeDefinition {
87 util'Object = type'FunctionalElement'class + (type'FunctionalArchitectureModel'class + (type'FAMTerminator'class + (type'InformationLink'class + (type'FunctionalInterface'class + (type'FunctionalData'class + type'FunctionType'enum)))))
88}
89fact common'types'FunctionalArchitectureModel'class'FunctionalElement'class {
90 type'FunctionalArchitectureModel'class & type'FunctionalElement'class = none
91}
92fact common'types'FAMTerminator'class'FunctionalElement'class {
93 type'FAMTerminator'class & type'FunctionalElement'class = none
94}
95fact common'types'FAMTerminator'class'FunctionalArchitectureModel'class {
96 type'FAMTerminator'class & type'FunctionalArchitectureModel'class = none
97}
98fact common'types'InformationLink'class'FunctionalElement'class {
99 type'InformationLink'class & type'FunctionalElement'class = none
100}
101fact common'types'InformationLink'class'FunctionalArchitectureModel'class {
102 type'InformationLink'class & type'FunctionalArchitectureModel'class = none
103}
104fact common'types'InformationLink'class'FAMTerminator'class {
105 type'InformationLink'class & type'FAMTerminator'class = none
106}
107fact common'types'FunctionalInterface'class'FunctionalElement'class {
108 type'FunctionalInterface'class & type'FunctionalElement'class = none
109}
110fact common'types'FunctionalInterface'class'FunctionalArchitectureModel'class {
111 type'FunctionalInterface'class & type'FunctionalArchitectureModel'class = none
112}
113fact common'types'FunctionalInterface'class'FAMTerminator'class {
114 type'FunctionalInterface'class & type'FAMTerminator'class = none
115}
116fact common'types'FunctionalInterface'class'InformationLink'class {
117 type'FunctionalInterface'class & type'InformationLink'class = none
118}
119fact common'types'FunctionalData'class'FunctionalElement'class {
120 type'FunctionalData'class & type'FunctionalElement'class = none
121}
122fact common'types'FunctionalData'class'FunctionalArchitectureModel'class {
123 type'FunctionalData'class & type'FunctionalArchitectureModel'class = none
124}
125fact common'types'FunctionalData'class'FAMTerminator'class {
126 type'FunctionalData'class & type'FAMTerminator'class = none
127}
128fact common'types'FunctionalData'class'InformationLink'class {
129 type'FunctionalData'class & type'InformationLink'class = none
130}
131fact common'types'FunctionalData'class'FunctionalInterface'class {
132 type'FunctionalData'class & type'FunctionalInterface'class = none
133}
134fact common'types'FunctionType'enum'FunctionalElement'class {
135 type'FunctionType'enum & type'FunctionalElement'class = none
136}
137fact common'types'FunctionType'enum'FunctionalArchitectureModel'class {
138 type'FunctionType'enum & type'FunctionalArchitectureModel'class = none
139}
140fact common'types'FunctionType'enum'FAMTerminator'class {
141 type'FunctionType'enum & type'FAMTerminator'class = none
142}
143fact common'types'FunctionType'enum'InformationLink'class {
144 type'FunctionType'enum & type'InformationLink'class = none
145}
146fact common'types'FunctionType'enum'FunctionalInterface'class {
147 type'FunctionType'enum & type'FunctionalInterface'class = none
148}
149fact common'types'FunctionType'enum'FunctionalData'class {
150 type'FunctionType'enum & type'FunctionalData'class = none
151}
152fact common'types'FunctionalArchitectureModel'class'UndefinedPart'FunctionalArchitectureModel'class'DefinedPart {
153 type'FunctionalArchitectureModel'class'UndefinedPart & type'FunctionalArchitectureModel'class'DefinedPart = none
154}
155fact common'types'FunctionalOutput'class'FunctionalInput'class {
156 type'FunctionalOutput'class & type'FunctionalInput'class = none
157}
158fact util'containmentDefinition {
159 util'language.util'contains = interface'reference'FunctionalElement + (rootElements'reference'FunctionalArchitectureModel + (subElements'reference'Function + (data'reference'FunctionalInterface + (outgoingLinks'reference'FunctionalOutput + terminator'reference'FunctionalData))))
160}
161fact util'noParentForRoot {
162 no parent: type'FunctionalArchitectureModel'class + (type'FunctionalData'class + (type'Function'class + (type'FAMTerminator'class + (type'InformationLink'class + (type'FunctionalInterface'class + (type'FunctionalElement'class + (type'FunctionalInput'class + (type'FunctionalOutput'class + (type'FunctionalArchitectureModel'class'DefinedPart + type'FunctionalArchitectureModel'class'UndefinedPart))))))))) { parent->(util'language.util'root) in util'language.util'contains }
163}
164fact util'atLeastOneParent {
165 all child: type'FunctionalArchitectureModel'class + (type'FunctionalData'class + (type'Function'class + (type'FAMTerminator'class + (type'InformationLink'class + (type'FunctionalInterface'class + (type'FunctionalElement'class + (type'FunctionalInput'class + (type'FunctionalOutput'class + (type'FunctionalArchitectureModel'class'DefinedPart + type'FunctionalArchitectureModel'class'UndefinedPart))))))))) { child = util'language.util'root || (some parent: type'FunctionalArchitectureModel'class + (type'FunctionalData'class + (type'Function'class + (type'FAMTerminator'class + (type'InformationLink'class + (type'FunctionalInterface'class + (type'FunctionalElement'class + (type'FunctionalInput'class + (type'FunctionalOutput'class + (type'FunctionalArchitectureModel'class'DefinedPart + type'FunctionalArchitectureModel'class'UndefinedPart))))))))) { parent->child in util'language.util'contains }) }
166}
167fact util'noCircularContainment {
168 no circle: type'FunctionalArchitectureModel'class + (type'FunctionalData'class + (type'Function'class + (type'FAMTerminator'class + (type'InformationLink'class + (type'FunctionalInterface'class + (type'FunctionalElement'class + (type'FunctionalInput'class + (type'FunctionalOutput'class + (type'FunctionalArchitectureModel'class'DefinedPart + type'FunctionalArchitectureModel'class'UndefinedPart))))))))) { circle->circle in ^ (util'language.util'contains) }
169}
170fact lowerMultiplicity'model'FunctionalElement {
171 all src: type'FunctionalElement'class { some trg'1: type'FunctionalArchitectureModel'class { pattern'ca'mcgill'ecse'dslreasoner'standalone'test'fam'queries'model [ src , trg'1 ] } }
172}
173fact upperMultiplicity'model'FunctionalElement {
174 all src: type'FunctionalElement'class, trg'1: type'FunctionalArchitectureModel'class, trg'2: type'FunctionalArchitectureModel'class { pattern'ca'mcgill'ecse'dslreasoner'standalone'test'fam'queries'model [ src , trg'1 ] && pattern'ca'mcgill'ecse'dslreasoner'standalone'test'fam'queries'model [ src , trg'2 ] => ! (trg'1 != trg'2) }
175}
176fact oppositeReference'interface'FunctionalElement {
177 interface'reference'FunctionalElement = ~ element'reference'FunctionalInterface
178}
179fact oppositeReference'parent'FunctionalElement {
180 parent'reference'FunctionalElement = ~ subElements'reference'Function
181}
182fact oppositeReference'data'FAMTerminator {
183 data'reference'FAMTerminator = ~ terminator'reference'FunctionalData
184}
185fact oppositeReference'from'InformationLink {
186 from'reference'InformationLink = ~ outgoingLinks'reference'FunctionalOutput
187}
188fact oppositeReference'to'InformationLink {
189 to'reference'InformationLink = ~ IncomingLinks'reference'FunctionalInput
190}
191fact oppositeReference'data'FunctionalInterface {
192 data'reference'FunctionalInterface = ~ interface'reference'FunctionalData
193}
194fact lowerMultiplicity'type'Function {
195 all src: type'Function'class { some trg'1: type'FunctionType'enum { pattern'ca'mcgill'ecse'dslreasoner'standalone'test'fam'queries'type [ src , trg'1 ] } }
196}
197fact upperMultiplicity'type'Function {
198 all src: type'Function'class, trg'1: type'FunctionType'enum, trg'2: type'FunctionType'enum { pattern'ca'mcgill'ecse'dslreasoner'standalone'test'fam'queries'type [ src , trg'1 ] && pattern'ca'mcgill'ecse'dslreasoner'standalone'test'fam'queries'type [ src , trg'2 ] => ! (trg'1 != trg'2) }
199}
200fact errorpattern'ca'mcgill'ecse'dslreasoner'standalone'test'fam'queries'terminatorAndInformation {
201 all p0: type'FAMTerminator'class, p1: type'InformationLink'class { ! (pattern'ca'mcgill'ecse'dslreasoner'standalone'test'fam'queries'terminatorAndInformation [ p0 , p1 ]) }
202}
203run { } for exactly 5 util'Object , 31 Int , exactly 0 String \ No newline at end of file
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/log.txt b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/log.txt
index 69222b92..8c87a095 100644
--- a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/log.txt
+++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/log.txt
@@ -1 +1 @@
Model generation startedProblem is consistent, a model is generatedModels: [1.xmi]Visualisations: [1.gml]Visualisations: [1.png]Model generation finishedModel generation startedProblem is consistent, a model is generatedModels: [1.xmi]Visualisations: [1.gml]Visualisations: [1.png]Model generation finishedModel generation startedProblem is consistent, a model is generatedModels: [1.xmi]Visualisations: [1.gml]Visualisations: [1.png]Model generation finishedModel generation startedProblem is consistent, a model is generatedModels: [1.xmi]Visualisations: [1.gml]Visualisations: [1.png]Model generation finishedModel generation startedProblem is consistent, 3 models are generated!Models: [1.xmi][2.xmi][3.xmi]Visualisations: [1.gml][2.gml][3.gml]Visualisations: [1.png][2.png][3.png]Model generation finishedModel generation startedProblem is consistent, 3 models are generated!Models: [1.xmi][2.xmi][3.xmi]Visualisations: [1.gml][2.gml][3.gml]Visualisations: [1.png][2.png][3.png]Model generation finishedModel generation startedProblem is consistent, 2 models are generated!Models: [1.xmi][2.xmi]Visualisations: [1.gml][2.gml]Visualisations: [1.png][2.png]Model generation finishedModel generation startedProblem is consistent, 2 models are generated!Models: [1.xmi][2.xmi]Visualisations: [1.gml][2.gml]Visualisations: [1.png][2.png]Model generation finishedModel generation startedProblem is consistent, a model is generatedModels: [1.xmi]Visualisations: [1.gml]Visualisations: [1.png]Model generation finishedModel generation startedProblem is consistent, 2 models are generated!Models: [1.xmi][2.xmi]Visualisations: [1.gml][2.gml]Visualisations: [1.png][2.png]Model generation finishedModel generation startedProblem is consistent, 2 models are generated!Models: [1.xmi][2.xmi]Visualisations: [1.gml][2.gml]Visualisations: [1.png][2.png]Model generation finishedModel generation startedProblem is consistent, 2 models are generated!Models: [1.xmi][2.xmi]Visualisations: [1.gml][2.gml]Visualisations: [1.png][2.png]Model generation finishedModel generation startedProblem is consistent, a model is generatedModels: [1.xmi]Visualisations: [1.gml]Visualisations: [1.png]Model generation finishedModel generation startedProblem is consistent, a model is generatedModels: [1.xmi]Visualisations: [1.gml]Visualisations: [1.png]Model generation finishedModel generation startedProblem is consistent, 2 models are generated!Models: [1.xmi][2.xmi]Visualisations: [1.gml][2.gml]Visualisations: [1.png][2.png]Model generation finishedModel generation startedProblem is consistent, 5 models are generated!Models: [1.xmi][2.xmi][3.xmi][4.xmi][5.xmi]Visualisations: [1.gml][2.gml][3.gml][4.gml][5.gml]Visualisations: [1.png][2.png][3.png][4.png][5.png]Model generation finished \ No newline at end of file Model generation startedProblem is consistent, a model is generatedModels: [1.xmi]Visualisations: [1.gml]Visualisations: [1.png]Model generation finishedModel generation startedProblem is consistent, a model is generatedModels: [1.xmi]Visualisations: [1.gml]Visualisations: [1.png]Model generation finishedModel generation startedProblem is consistent, a model is generatedModels: [1.xmi]Visualisations: [1.gml]Visualisations: [1.png]Model generation finishedModel generation startedProblem is consistent, a model is generatedModels: [1.xmi]Visualisations: [1.gml]Visualisations: [1.png]Model generation finishedModel generation startedProblem is consistent, 3 models are generated!Models: [1.xmi][2.xmi][3.xmi]Visualisations: [1.gml][2.gml][3.gml]Visualisations: [1.png][2.png][3.png]Model generation finishedModel generation startedProblem is consistent, 3 models are generated!Models: [1.xmi][2.xmi][3.xmi]Visualisations: [1.gml][2.gml][3.gml]Visualisations: [1.png][2.png][3.png]Model generation finishedModel generation startedProblem is consistent, 2 models are generated!Models: [1.xmi][2.xmi]Visualisations: [1.gml][2.gml]Visualisations: [1.png][2.png]Model generation finishedModel generation startedProblem is consistent, 2 models are generated!Models: [1.xmi][2.xmi]Visualisations: [1.gml][2.gml]Visualisations: [1.png][2.png]Model generation finishedModel generation startedProblem is consistent, a model is generatedModels: [1.xmi]Visualisations: [1.gml]Visualisations: [1.png]Model generation finishedModel generation startedProblem is consistent, 2 models are generated!Models: [1.xmi][2.xmi]Visualisations: [1.gml][2.gml]Visualisations: [1.png][2.png]Model generation finishedModel generation startedProblem is consistent, 2 models are generated!Models: [1.xmi][2.xmi]Visualisations: [1.gml][2.gml]Visualisations: [1.png][2.png]Model generation finishedModel generation startedProblem is consistent, 2 models are generated!Models: [1.xmi][2.xmi]Visualisations: [1.gml][2.gml]Visualisations: [1.png][2.png]Model generation finishedModel generation startedProblem is consistent, a model is generatedModels: [1.xmi]Visualisations: [1.gml]Visualisations: [1.png]Model generation finishedModel generation startedProblem is consistent, a model is generatedModels: [1.xmi]Visualisations: [1.gml]Visualisations: [1.png]Model generation finishedModel generation startedProblem is consistent, 2 models are generated!Models: [1.xmi][2.xmi]Visualisations: [1.gml][2.gml]Visualisations: [1.png][2.png]Model generation finishedModel generation startedProblem is consistent, 5 models are generated!Models: [1.xmi][2.xmi][3.xmi][4.xmi][5.xmi]Visualisations: [1.gml][2.gml][3.gml][4.gml][5.gml]Visualisations: [1.png][2.png][3.png][4.png][5.png]Model generation finishedModel generation startedProblem is consistent, 2 models are generated!Models: [1.xmi][2.xmi]Visualisations: [1.gml][2.gml]Visualisations: [1.png][2.png]Model generation finishedModel generation startedProblem is consistent, 2 models are generated!Models: [1.xmi][2.xmi]Visualisations: [1.gml][2.gml]Visualisations: [1.png][2.png]Model generation finishedModel generation startedModel generation startedModel generation startedModel generation startedModel generation startedProblem is consistent, 5 models are generated!Models: [1.xmi][2.xmi][3.xmi][4.xmi][5.xmi]Visualisations: [1.gml][2.gml][3.gml][4.gml][5.gml]Visualisations: [1.png][2.png][3.png][4.png][5.png]Model generation finishedModel generation startedProblem is consistent, 3 models are generated!Models: [1.xmi][2.xmi][3.xmi]Visualisations: [1.gml][2.gml][3.gml]Visualisations: [1.png][2.png][3.png]Model generation finishedModel generation startedProblem is consistent, 3 models are generated!Models: [1.xmi][2.xmi][3.xmi]Visualisations: [1.gml][2.gml][3.gml]Visualisations: [1.png][2.png][3.png]Model generation finishedModel generation startedProblem is consistent, 3 models are generated!Models: [1.xmi][2.xmi][3.xmi]Visualisations: [1.gml][2.gml][3.gml]Visualisations: [1.png][2.png][3.png]Model generation finishedModel generation startedModel generation startedModel generation startedProblem is consistent, 2 models are generated!Models: [1.xmi][2.xmi]Visualisations: [1.gml][2.gml]Visualisations: [1.png][2.png]Model generation finishedModel generation startedModel generation startedProblem is consistent, 3 models are generated!Models: [1.xmi][2.xmi][3.xmi]Visualisations: [1.gml][2.gml][3.gml]Visualisations: [1.png][2.png][3.png]Model generation finished \ No newline at end of file
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/1.gml b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/1.gml
index c55209f7..9eac10b7 100644
--- a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/1.gml
+++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/1.gml
@@ -7639,3 +7639,6782 @@ graph
7639 ] 7639 ]
7640 ] 7640 ]
7641] 7641]
7642graph
7643[
7644 node
7645 [
7646 id 0
7647 graphics
7648 [
7649 w 226.60000000000002
7650 h 40
7651 type "rectangle"
7652 fill "#FFFFFF"
7653 fill2 "#FFFFFF"
7654 outline "#000000"
7655 ]
7656 LabelGraphics
7657 [
7658 text "Root literal FunctionType"
7659 outline "#000000"
7660 fill "#FFFFFF"
7661 fontSize 16
7662 fontName "Monospace"
7663 autoSizePolicy "node_width"
7664 anchor "t"
7665 borderDistance 0.0
7666 ]
7667 LabelGraphics
7668 [
7669 text "
7670 FunctionType enum
7671 "
7672 fontSize 14
7673 fontName "Consolas"
7674 alignment "left"
7675 anchor "tl"
7676 borderDistance 6
7677 ]
7678 ]
7679
7680 node
7681 [
7682 id 1
7683 graphics
7684 [
7685 w 297.0
7686 h 40
7687 type "rectangle"
7688 fill "#FFFFFF"
7689 fill2 "#FFFFFF"
7690 outline "#000000"
7691 ]
7692 LabelGraphics
7693 [
7694 text "Intermediate literal FunctionType"
7695 outline "#000000"
7696 fill "#FFFFFF"
7697 fontSize 16
7698 fontName "Monospace"
7699 autoSizePolicy "node_width"
7700 anchor "t"
7701 borderDistance 0.0
7702 ]
7703 LabelGraphics
7704 [
7705 text "
7706 FunctionType enum
7707 "
7708 fontSize 14
7709 fontName "Consolas"
7710 alignment "left"
7711 anchor "tl"
7712 borderDistance 6
7713 ]
7714 ]
7715
7716 node
7717 [
7718 id 2
7719 graphics
7720 [
7721 w 226.60000000000002
7722 h 40
7723 type "rectangle"
7724 fill "#FFFFFF"
7725 fill2 "#FFFFFF"
7726 outline "#000000"
7727 ]
7728 LabelGraphics
7729 [
7730 text "Leaf literal FunctionType"
7731 outline "#000000"
7732 fill "#FFFFFF"
7733 fontSize 16
7734 fontName "Monospace"
7735 autoSizePolicy "node_width"
7736 anchor "t"
7737 borderDistance 0.0
7738 ]
7739 LabelGraphics
7740 [
7741 text "
7742 FunctionType enum
7743 "
7744 fontSize 14
7745 fontName "Consolas"
7746 alignment "left"
7747 anchor "tl"
7748 borderDistance 6
7749 ]
7750 ]
7751
7752 node
7753 [
7754 id 3
7755 graphics
7756 [
7757 w 361.90000000000003
7758 h 54
7759 type "rectangle"
7760 fill "#FFFFFF"
7761 fill2 "#FFFFFF"
7762 outline "#000000"
7763 ]
7764 LabelGraphics
7765 [
7766 text "o 1"
7767 outline "#000000"
7768 fill "#FFFFFF"
7769 fontSize 16
7770 fontName "Monospace"
7771 autoSizePolicy "node_width"
7772 anchor "t"
7773 borderDistance 0.0
7774 ]
7775 LabelGraphics
7776 [
7777 text "
7778 FunctionalArchitectureModel class DefinedPart
7779 FunctionalArchitectureModel class
7780 "
7781 fontSize 14
7782 fontName "Consolas"
7783 alignment "left"
7784 anchor "tl"
7785 borderDistance 6
7786 ]
7787 ]
7788
7789 node
7790 [
7791 id 4
7792 graphics
7793 [
7794 w 41.800000000000004
7795 h 26
7796 type "rectangle"
7797 fill "#FFFFFF"
7798 fill2 "#FFFFFF"
7799 outline "#000000"
7800 ]
7801 LabelGraphics
7802 [
7803 text "true"
7804 outline "#000000"
7805 fill "#FFFFFF"
7806 fontSize 16
7807 fontName "Monospace"
7808 autoSizePolicy "node_width"
7809 anchor "t"
7810 borderDistance 0.0
7811 ]
7812 LabelGraphics
7813 [
7814 text "
7815 "
7816 fontSize 14
7817 fontName "Consolas"
7818 alignment "left"
7819 anchor "tl"
7820 borderDistance 6
7821 ]
7822 ]
7823
7824 node
7825 [
7826 id 5
7827 graphics
7828 [
7829 w 50.6
7830 h 26
7831 type "rectangle"
7832 fill "#FFFFFF"
7833 fill2 "#FFFFFF"
7834 outline "#000000"
7835 ]
7836 LabelGraphics
7837 [
7838 text "false"
7839 outline "#000000"
7840 fill "#FFFFFF"
7841 fontSize 16
7842 fontName "Monospace"
7843 autoSizePolicy "node_width"
7844 anchor "t"
7845 borderDistance 0.0
7846 ]
7847 LabelGraphics
7848 [
7849 text "
7850 "
7851 fontSize 14
7852 fontName "Consolas"
7853 alignment "left"
7854 anchor "tl"
7855 borderDistance 6
7856 ]
7857 ]
7858
7859 node
7860 [
7861 id 6
7862 graphics
7863 [
7864 w 192.50000000000003
7865 h 54
7866 type "rectangle"
7867 fill "#FFFFFF"
7868 fill2 "#FFFFFF"
7869 outline "#000000"
7870 ]
7871 LabelGraphics
7872 [
7873 text "null"
7874 outline "#000000"
7875 fill "#FFFFFF"
7876 fontSize 16
7877 fontName "Monospace"
7878 autoSizePolicy "node_width"
7879 anchor "t"
7880 borderDistance 0.0
7881 ]
7882 LabelGraphics
7883 [
7884 text "
7885 FunctionalElement class
7886 Function class
7887 "
7888 fontSize 14
7889 fontName "Consolas"
7890 alignment "left"
7891 anchor "tl"
7892 borderDistance 6
7893 ]
7894 ]
7895
7896 node
7897 [
7898 id 7
7899 graphics
7900 [
7901 w 112.2
7902 h 26
7903 type "rectangle"
7904 fill "#FFFFFF"
7905 fill2 "#FFFFFF"
7906 outline "#000000"
7907 ]
7908 LabelGraphics
7909 [
7910 text "New Integers"
7911 outline "#000000"
7912 fill "#FFFFFF"
7913 fontSize 16
7914 fontName "Monospace"
7915 autoSizePolicy "node_width"
7916 anchor "t"
7917 borderDistance 0.0
7918 ]
7919 LabelGraphics
7920 [
7921 text "
7922 "
7923 fontSize 14
7924 fontName "Consolas"
7925 alignment "left"
7926 anchor "tl"
7927 borderDistance 6
7928 ]
7929 ]
7930
7931 node
7932 [
7933 id 8
7934 graphics
7935 [
7936 w 85.80000000000001
7937 h 26
7938 type "rectangle"
7939 fill "#FFFFFF"
7940 fill2 "#FFFFFF"
7941 outline "#000000"
7942 ]
7943 LabelGraphics
7944 [
7945 text "New Reals"
7946 outline "#000000"
7947 fill "#FFFFFF"
7948 fontSize 16
7949 fontName "Monospace"
7950 autoSizePolicy "node_width"
7951 anchor "t"
7952 borderDistance 0.0
7953 ]
7954 LabelGraphics
7955 [
7956 text "
7957 "
7958 fontSize 14
7959 fontName "Consolas"
7960 alignment "left"
7961 anchor "tl"
7962 borderDistance 6
7963 ]
7964 ]
7965
7966 node
7967 [
7968 id 9
7969 graphics
7970 [
7971 w 103.4
7972 h 26
7973 type "rectangle"
7974 fill "#FFFFFF"
7975 fill2 "#FFFFFF"
7976 outline "#000000"
7977 ]
7978 LabelGraphics
7979 [
7980 text "New Strings"
7981 outline "#000000"
7982 fill "#FFFFFF"
7983 fontSize 16
7984 fontName "Monospace"
7985 autoSizePolicy "node_width"
7986 anchor "t"
7987 borderDistance 0.0
7988 ]
7989 LabelGraphics
7990 [
7991 text "
7992 "
7993 fontSize 14
7994 fontName "Consolas"
7995 alignment "left"
7996 anchor "tl"
7997 borderDistance 6
7998 ]
7999 ]
8000
8001 node
8002 [
8003 id 10
8004 graphics
8005 [
8006 w 103.4
8007 h 26
8008 type "rectangle"
8009 fill "#FFFFFF"
8010 fill2 "#FFFFFF"
8011 outline "#000000"
8012 ]
8013 LabelGraphics
8014 [
8015 text "New Objects"
8016 outline "#000000"
8017 fill "#FFFFFF"
8018 fontSize 16
8019 fontName "Monospace"
8020 autoSizePolicy "node_width"
8021 anchor "t"
8022 borderDistance 0.0
8023 ]
8024 LabelGraphics
8025 [
8026 text "
8027 "
8028 fontSize 14
8029 fontName "Consolas"
8030 alignment "left"
8031 anchor "tl"
8032 borderDistance 6
8033 ]
8034 ]
8035 edge
8036 [
8037 source 6
8038 target 3
8039 graphics
8040 [
8041 fill "#000000"
8042 targetArrow "standard"
8043 ]
8044 LabelGraphics
8045 [
8046 text "model reference FunctionalElement"
8047 fontSize 14
8048 fontName "Consolas"
8049 configuration "AutoFlippingLabel"
8050 model "six_pos"
8051 position "thead"
8052 ]
8053 ]
8054 edge
8055 [
8056 source 3
8057 target 6
8058 graphics
8059 [
8060 fill "#000000"
8061 width 3
8062 targetArrow "standard"
8063 ]
8064 LabelGraphics
8065 [
8066 text "rootElements reference FunctionalArchitectureModel"
8067 fontSize 14
8068 fontName "Consolas"
8069 configuration "AutoFlippingLabel"
8070 model "six_pos"
8071 position "thead"
8072 ]
8073 ]
8074 edge
8075 [
8076 source 6
8077 target 0
8078 graphics
8079 [
8080 fill "#000000"
8081 targetArrow "standard"
8082 ]
8083 LabelGraphics
8084 [
8085 text "type attribute Function"
8086 fontSize 14
8087 fontName "Consolas"
8088 configuration "AutoFlippingLabel"
8089 model "six_pos"
8090 position "thead"
8091 ]
8092 ]
8093]
8094graph
8095[
8096 node
8097 [
8098 id 0
8099 graphics
8100 [
8101 w 226.60000000000002
8102 h 40
8103 type "rectangle"
8104 fill "#FFFFFF"
8105 fill2 "#FFFFFF"
8106 outline "#000000"
8107 ]
8108 LabelGraphics
8109 [
8110 text "Root literal FunctionType"
8111 outline "#000000"
8112 fill "#FFFFFF"
8113 fontSize 16
8114 fontName "Monospace"
8115 autoSizePolicy "node_width"
8116 anchor "t"
8117 borderDistance 0.0
8118 ]
8119 LabelGraphics
8120 [
8121 text "
8122 FunctionType enum
8123 "
8124 fontSize 14
8125 fontName "Consolas"
8126 alignment "left"
8127 anchor "tl"
8128 borderDistance 6
8129 ]
8130 ]
8131
8132 node
8133 [
8134 id 1
8135 graphics
8136 [
8137 w 297.0
8138 h 40
8139 type "rectangle"
8140 fill "#FFFFFF"
8141 fill2 "#FFFFFF"
8142 outline "#000000"
8143 ]
8144 LabelGraphics
8145 [
8146 text "Intermediate literal FunctionType"
8147 outline "#000000"
8148 fill "#FFFFFF"
8149 fontSize 16
8150 fontName "Monospace"
8151 autoSizePolicy "node_width"
8152 anchor "t"
8153 borderDistance 0.0
8154 ]
8155 LabelGraphics
8156 [
8157 text "
8158 FunctionType enum
8159 "
8160 fontSize 14
8161 fontName "Consolas"
8162 alignment "left"
8163 anchor "tl"
8164 borderDistance 6
8165 ]
8166 ]
8167
8168 node
8169 [
8170 id 2
8171 graphics
8172 [
8173 w 226.60000000000002
8174 h 40
8175 type "rectangle"
8176 fill "#FFFFFF"
8177 fill2 "#FFFFFF"
8178 outline "#000000"
8179 ]
8180 LabelGraphics
8181 [
8182 text "Leaf literal FunctionType"
8183 outline "#000000"
8184 fill "#FFFFFF"
8185 fontSize 16
8186 fontName "Monospace"
8187 autoSizePolicy "node_width"
8188 anchor "t"
8189 borderDistance 0.0
8190 ]
8191 LabelGraphics
8192 [
8193 text "
8194 FunctionType enum
8195 "
8196 fontSize 14
8197 fontName "Consolas"
8198 alignment "left"
8199 anchor "tl"
8200 borderDistance 6
8201 ]
8202 ]
8203
8204 node
8205 [
8206 id 3
8207 graphics
8208 [
8209 w 361.90000000000003
8210 h 54
8211 type "rectangle"
8212 fill "#FFFFFF"
8213 fill2 "#FFFFFF"
8214 outline "#000000"
8215 ]
8216 LabelGraphics
8217 [
8218 text "o 1"
8219 outline "#000000"
8220 fill "#FFFFFF"
8221 fontSize 16
8222 fontName "Monospace"
8223 autoSizePolicy "node_width"
8224 anchor "t"
8225 borderDistance 0.0
8226 ]
8227 LabelGraphics
8228 [
8229 text "
8230 FunctionalArchitectureModel class DefinedPart
8231 FunctionalArchitectureModel class
8232 "
8233 fontSize 14
8234 fontName "Consolas"
8235 alignment "left"
8236 anchor "tl"
8237 borderDistance 6
8238 ]
8239 ]
8240
8241 node
8242 [
8243 id 4
8244 graphics
8245 [
8246 w 41.800000000000004
8247 h 26
8248 type "rectangle"
8249 fill "#FFFFFF"
8250 fill2 "#FFFFFF"
8251 outline "#000000"
8252 ]
8253 LabelGraphics
8254 [
8255 text "true"
8256 outline "#000000"
8257 fill "#FFFFFF"
8258 fontSize 16
8259 fontName "Monospace"
8260 autoSizePolicy "node_width"
8261 anchor "t"
8262 borderDistance 0.0
8263 ]
8264 LabelGraphics
8265 [
8266 text "
8267 "
8268 fontSize 14
8269 fontName "Consolas"
8270 alignment "left"
8271 anchor "tl"
8272 borderDistance 6
8273 ]
8274 ]
8275
8276 node
8277 [
8278 id 5
8279 graphics
8280 [
8281 w 50.6
8282 h 26
8283 type "rectangle"
8284 fill "#FFFFFF"
8285 fill2 "#FFFFFF"
8286 outline "#000000"
8287 ]
8288 LabelGraphics
8289 [
8290 text "false"
8291 outline "#000000"
8292 fill "#FFFFFF"
8293 fontSize 16
8294 fontName "Monospace"
8295 autoSizePolicy "node_width"
8296 anchor "t"
8297 borderDistance 0.0
8298 ]
8299 LabelGraphics
8300 [
8301 text "
8302 "
8303 fontSize 14
8304 fontName "Consolas"
8305 alignment "left"
8306 anchor "tl"
8307 borderDistance 6
8308 ]
8309 ]
8310
8311 node
8312 [
8313 id 6
8314 graphics
8315 [
8316 w 192.50000000000003
8317 h 54
8318 type "rectangle"
8319 fill "#FFFFFF"
8320 fill2 "#FFFFFF"
8321 outline "#000000"
8322 ]
8323 LabelGraphics
8324 [
8325 text "null"
8326 outline "#000000"
8327 fill "#FFFFFF"
8328 fontSize 16
8329 fontName "Monospace"
8330 autoSizePolicy "node_width"
8331 anchor "t"
8332 borderDistance 0.0
8333 ]
8334 LabelGraphics
8335 [
8336 text "
8337 FunctionalElement class
8338 Function class
8339 "
8340 fontSize 14
8341 fontName "Consolas"
8342 alignment "left"
8343 anchor "tl"
8344 borderDistance 6
8345 ]
8346 ]
8347
8348 node
8349 [
8350 id 7
8351 graphics
8352 [
8353 w 112.2
8354 h 26
8355 type "rectangle"
8356 fill "#FFFFFF"
8357 fill2 "#FFFFFF"
8358 outline "#000000"
8359 ]
8360 LabelGraphics
8361 [
8362 text "New Integers"
8363 outline "#000000"
8364 fill "#FFFFFF"
8365 fontSize 16
8366 fontName "Monospace"
8367 autoSizePolicy "node_width"
8368 anchor "t"
8369 borderDistance 0.0
8370 ]
8371 LabelGraphics
8372 [
8373 text "
8374 "
8375 fontSize 14
8376 fontName "Consolas"
8377 alignment "left"
8378 anchor "tl"
8379 borderDistance 6
8380 ]
8381 ]
8382
8383 node
8384 [
8385 id 8
8386 graphics
8387 [
8388 w 85.80000000000001
8389 h 26
8390 type "rectangle"
8391 fill "#FFFFFF"
8392 fill2 "#FFFFFF"
8393 outline "#000000"
8394 ]
8395 LabelGraphics
8396 [
8397 text "New Reals"
8398 outline "#000000"
8399 fill "#FFFFFF"
8400 fontSize 16
8401 fontName "Monospace"
8402 autoSizePolicy "node_width"
8403 anchor "t"
8404 borderDistance 0.0
8405 ]
8406 LabelGraphics
8407 [
8408 text "
8409 "
8410 fontSize 14
8411 fontName "Consolas"
8412 alignment "left"
8413 anchor "tl"
8414 borderDistance 6
8415 ]
8416 ]
8417
8418 node
8419 [
8420 id 9
8421 graphics
8422 [
8423 w 103.4
8424 h 26
8425 type "rectangle"
8426 fill "#FFFFFF"
8427 fill2 "#FFFFFF"
8428 outline "#000000"
8429 ]
8430 LabelGraphics
8431 [
8432 text "New Strings"
8433 outline "#000000"
8434 fill "#FFFFFF"
8435 fontSize 16
8436 fontName "Monospace"
8437 autoSizePolicy "node_width"
8438 anchor "t"
8439 borderDistance 0.0
8440 ]
8441 LabelGraphics
8442 [
8443 text "
8444 "
8445 fontSize 14
8446 fontName "Consolas"
8447 alignment "left"
8448 anchor "tl"
8449 borderDistance 6
8450 ]
8451 ]
8452
8453 node
8454 [
8455 id 10
8456 graphics
8457 [
8458 w 103.4
8459 h 26
8460 type "rectangle"
8461 fill "#FFFFFF"
8462 fill2 "#FFFFFF"
8463 outline "#000000"
8464 ]
8465 LabelGraphics
8466 [
8467 text "New Objects"
8468 outline "#000000"
8469 fill "#FFFFFF"
8470 fontSize 16
8471 fontName "Monospace"
8472 autoSizePolicy "node_width"
8473 anchor "t"
8474 borderDistance 0.0
8475 ]
8476 LabelGraphics
8477 [
8478 text "
8479 "
8480 fontSize 14
8481 fontName "Consolas"
8482 alignment "left"
8483 anchor "tl"
8484 borderDistance 6
8485 ]
8486 ]
8487 edge
8488 [
8489 source 6
8490 target 3
8491 graphics
8492 [
8493 fill "#000000"
8494 targetArrow "standard"
8495 ]
8496 LabelGraphics
8497 [
8498 text "model reference FunctionalElement"
8499 fontSize 14
8500 fontName "Consolas"
8501 configuration "AutoFlippingLabel"
8502 model "six_pos"
8503 position "thead"
8504 ]
8505 ]
8506 edge
8507 [
8508 source 3
8509 target 6
8510 graphics
8511 [
8512 fill "#000000"
8513 width 3
8514 targetArrow "standard"
8515 ]
8516 LabelGraphics
8517 [
8518 text "rootElements reference FunctionalArchitectureModel"
8519 fontSize 14
8520 fontName "Consolas"
8521 configuration "AutoFlippingLabel"
8522 model "six_pos"
8523 position "thead"
8524 ]
8525 ]
8526 edge
8527 [
8528 source 6
8529 target 2
8530 graphics
8531 [
8532 fill "#000000"
8533 targetArrow "standard"
8534 ]
8535 LabelGraphics
8536 [
8537 text "type attribute Function"
8538 fontSize 14
8539 fontName "Consolas"
8540 configuration "AutoFlippingLabel"
8541 model "six_pos"
8542 position "thead"
8543 ]
8544 ]
8545]
8546graph
8547[
8548 node
8549 [
8550 id 0
8551 graphics
8552 [
8553 w 254.10000000000002
8554 h 110
8555 type "rectangle"
8556 fill "#FFFFFF"
8557 fill2 "#FFFFFF"
8558 outline "#000000"
8559 ]
8560 LabelGraphics
8561 [
8562 text "o 1"
8563 outline "#000000"
8564 fill "#FFFFFF"
8565 fontSize 16
8566 fontName "Monospace"
8567 autoSizePolicy "node_width"
8568 anchor "t"
8569 borderDistance 0.0
8570 ]
8571 LabelGraphics
8572 [
8573 text "
8574 EModelElement class DefinedPart
8575 ENamedElement class DefinedPart
8576 EPackage class DefinedPart
8577 EModelElement class
8578 ENamedElement class
8579 EPackage class
8580 "
8581 fontSize 14
8582 fontName "Consolas"
8583 alignment "left"
8584 anchor "tl"
8585 borderDistance 6
8586 ]
8587 ]
8588
8589 node
8590 [
8591 id 1
8592 graphics
8593 [
8594 w 41.800000000000004
8595 h 26
8596 type "rectangle"
8597 fill "#FFFFFF"
8598 fill2 "#FFFFFF"
8599 outline "#000000"
8600 ]
8601 LabelGraphics
8602 [
8603 text "true"
8604 outline "#000000"
8605 fill "#FFFFFF"
8606 fontSize 16
8607 fontName "Monospace"
8608 autoSizePolicy "node_width"
8609 anchor "t"
8610 borderDistance 0.0
8611 ]
8612 LabelGraphics
8613 [
8614 text "
8615 "
8616 fontSize 14
8617 fontName "Consolas"
8618 alignment "left"
8619 anchor "tl"
8620 borderDistance 6
8621 ]
8622 ]
8623
8624 node
8625 [
8626 id 2
8627 graphics
8628 [
8629 w 50.6
8630 h 26
8631 type "rectangle"
8632 fill "#FFFFFF"
8633 fill2 "#FFFFFF"
8634 outline "#000000"
8635 ]
8636 LabelGraphics
8637 [
8638 text "false"
8639 outline "#000000"
8640 fill "#FFFFFF"
8641 fontSize 16
8642 fontName "Monospace"
8643 autoSizePolicy "node_width"
8644 anchor "t"
8645 borderDistance 0.0
8646 ]
8647 LabelGraphics
8648 [
8649 text "
8650 "
8651 fontSize 14
8652 fontName "Consolas"
8653 alignment "left"
8654 anchor "tl"
8655 borderDistance 6
8656 ]
8657 ]
8658
8659 node
8660 [
8661 id 3
8662 graphics
8663 [
8664 w 24.200000000000003
8665 h 26
8666 type "rectangle"
8667 fill "#FFFFFF"
8668 fill2 "#FFFFFF"
8669 outline "#000000"
8670 ]
8671 LabelGraphics
8672 [
8673 text "-1"
8674 outline "#000000"
8675 fill "#FFFFFF"
8676 fontSize 16
8677 fontName "Monospace"
8678 autoSizePolicy "node_width"
8679 anchor "t"
8680 borderDistance 0.0
8681 ]
8682 LabelGraphics
8683 [
8684 text "
8685 "
8686 fontSize 14
8687 fontName "Consolas"
8688 alignment "left"
8689 anchor "tl"
8690 borderDistance 6
8691 ]
8692 ]
8693
8694 node
8695 [
8696 id 4
8697 graphics
8698 [
8699 w 15.400000000000002
8700 h 26
8701 type "rectangle"
8702 fill "#FFFFFF"
8703 fill2 "#FFFFFF"
8704 outline "#000000"
8705 ]
8706 LabelGraphics
8707 [
8708 text "0"
8709 outline "#000000"
8710 fill "#FFFFFF"
8711 fontSize 16
8712 fontName "Monospace"
8713 autoSizePolicy "node_width"
8714 anchor "t"
8715 borderDistance 0.0
8716 ]
8717 LabelGraphics
8718 [
8719 text "
8720 "
8721 fontSize 14
8722 fontName "Consolas"
8723 alignment "left"
8724 anchor "tl"
8725 borderDistance 6
8726 ]
8727 ]
8728
8729 node
8730 [
8731 id 5
8732 graphics
8733 [
8734 w 15.400000000000002
8735 h 26
8736 type "rectangle"
8737 fill "#FFFFFF"
8738 fill2 "#FFFFFF"
8739 outline "#000000"
8740 ]
8741 LabelGraphics
8742 [
8743 text "1"
8744 outline "#000000"
8745 fill "#FFFFFF"
8746 fontSize 16
8747 fontName "Monospace"
8748 autoSizePolicy "node_width"
8749 anchor "t"
8750 borderDistance 0.0
8751 ]
8752 LabelGraphics
8753 [
8754 text "
8755 "
8756 fontSize 14
8757 fontName "Consolas"
8758 alignment "left"
8759 anchor "tl"
8760 borderDistance 6
8761 ]
8762 ]
8763
8764 node
8765 [
8766 id 6
8767 graphics
8768 [
8769 w 33.0
8770 h 26
8771 type "rectangle"
8772 fill "#FFFFFF"
8773 fill2 "#FFFFFF"
8774 outline "#000000"
8775 ]
8776 LabelGraphics
8777 [
8778 text ""A""
8779 outline "#000000"
8780 fill "#FFFFFF"
8781 fontSize 16
8782 fontName "Monospace"
8783 autoSizePolicy "node_width"
8784 anchor "t"
8785 borderDistance 0.0
8786 ]
8787 LabelGraphics
8788 [
8789 text "
8790 "
8791 fontSize 14
8792 fontName "Consolas"
8793 alignment "left"
8794 anchor "tl"
8795 borderDistance 6
8796 ]
8797 ]
8798
8799 node
8800 [
8801 id 7
8802 graphics
8803 [
8804 w 33.0
8805 h 26
8806 type "rectangle"
8807 fill "#FFFFFF"
8808 fill2 "#FFFFFF"
8809 outline "#000000"
8810 ]
8811 LabelGraphics
8812 [
8813 text ""B""
8814 outline "#000000"
8815 fill "#FFFFFF"
8816 fontSize 16
8817 fontName "Monospace"
8818 autoSizePolicy "node_width"
8819 anchor "t"
8820 borderDistance 0.0
8821 ]
8822 LabelGraphics
8823 [
8824 text "
8825 "
8826 fontSize 14
8827 fontName "Consolas"
8828 alignment "left"
8829 anchor "tl"
8830 borderDistance 6
8831 ]
8832 ]
8833
8834 node
8835 [
8836 id 8
8837 graphics
8838 [
8839 w 94.60000000000001
8840 h 26
8841 type "rectangle"
8842 fill "#FFFFFF"
8843 fill2 "#FFFFFF"
8844 outline "#000000"
8845 ]
8846 LabelGraphics
8847 [
8848 text ""nsPrefix""
8849 outline "#000000"
8850 fill "#FFFFFF"
8851 fontSize 16
8852 fontName "Monospace"
8853 autoSizePolicy "node_width"
8854 anchor "t"
8855 borderDistance 0.0
8856 ]
8857 LabelGraphics
8858 [
8859 text "
8860 "
8861 fontSize 14
8862 fontName "Consolas"
8863 alignment "left"
8864 anchor "tl"
8865 borderDistance 6
8866 ]
8867 ]
8868
8869 node
8870 [
8871 id 9
8872 graphics
8873 [
8874 w 68.2
8875 h 26
8876 type "rectangle"
8877 fill "#FFFFFF"
8878 fill2 "#FFFFFF"
8879 outline "#000000"
8880 ]
8881 LabelGraphics
8882 [
8883 text ""nsUri""
8884 outline "#000000"
8885 fill "#FFFFFF"
8886 fontSize 16
8887 fontName "Monospace"
8888 autoSizePolicy "node_width"
8889 anchor "t"
8890 borderDistance 0.0
8891 ]
8892 LabelGraphics
8893 [
8894 text "
8895 "
8896 fontSize 14
8897 fontName "Consolas"
8898 alignment "left"
8899 anchor "tl"
8900 borderDistance 6
8901 ]
8902 ]
8903
8904 node
8905 [
8906 id 10
8907 graphics
8908 [
8909 w 121.00000000000001
8910 h 26
8911 type "rectangle"
8912 fill "#FFFFFF"
8913 fill2 "#FFFFFF"
8914 outline "#000000"
8915 ]
8916 LabelGraphics
8917 [
8918 text ""packageName""
8919 outline "#000000"
8920 fill "#FFFFFF"
8921 fontSize 16
8922 fontName "Monospace"
8923 autoSizePolicy "node_width"
8924 anchor "t"
8925 borderDistance 0.0
8926 ]
8927 LabelGraphics
8928 [
8929 text "
8930 "
8931 fontSize 14
8932 fontName "Consolas"
8933 alignment "left"
8934 anchor "tl"
8935 borderDistance 6
8936 ]
8937 ]
8938
8939 node
8940 [
8941 id 11
8942 graphics
8943 [
8944 w 269.5
8945 h 110
8946 type "rectangle"
8947 fill "#FFFFFF"
8948 fill2 "#FFFFFF"
8949 outline "#000000"
8950 ]
8951 LabelGraphics
8952 [
8953 text "null"
8954 outline "#000000"
8955 fill "#FFFFFF"
8956 fontSize 16
8957 fontName "Monospace"
8958 autoSizePolicy "node_width"
8959 anchor "t"
8960 borderDistance 0.0
8961 ]
8962 LabelGraphics
8963 [
8964 text "
8965 EClassifier class
8966 EDataType class
8967 EModelElement class
8968 ENamedElement class
8969 EModelElement class UndefinedPart
8970 ENamedElement class UndefinedPart
8971 "
8972 fontSize 14
8973 fontName "Consolas"
8974 alignment "left"
8975 anchor "tl"
8976 borderDistance 6
8977 ]
8978 ]
8979
8980 node
8981 [
8982 id 12
8983 graphics
8984 [
8985 w 269.5
8986 h 68
8987 type "rectangle"
8988 fill "#FFFFFF"
8989 fill2 "#FFFFFF"
8990 outline "#000000"
8991 ]
8992 LabelGraphics
8993 [
8994 text "null"
8995 outline "#000000"
8996 fill "#FFFFFF"
8997 fontSize 16
8998 fontName "Monospace"
8999 autoSizePolicy "node_width"
9000 anchor "t"
9001 borderDistance 0.0
9002 ]
9003 LabelGraphics
9004 [
9005 text "
9006 EAnnotation class
9007 EModelElement class
9008 EModelElement class UndefinedPart
9009 "
9010 fontSize 14
9011 fontName "Consolas"
9012 alignment "left"
9013 anchor "tl"
9014 borderDistance 6
9015 ]
9016 ]
9017
9018 node
9019 [
9020 id 13
9021 graphics
9022 [
9023 w 269.5
9024 h 110
9025 type "rectangle"
9026 fill "#FFFFFF"
9027 fill2 "#FFFFFF"
9028 outline "#000000"
9029 ]
9030 LabelGraphics
9031 [
9032 text "null"
9033 outline "#000000"
9034 fill "#FFFFFF"
9035 fontSize 16
9036 fontName "Monospace"
9037 autoSizePolicy "node_width"
9038 anchor "t"
9039 borderDistance 0.0
9040 ]
9041 LabelGraphics
9042 [
9043 text "
9044 EClass class
9045 EClassifier class
9046 EModelElement class
9047 ENamedElement class
9048 EModelElement class UndefinedPart
9049 ENamedElement class UndefinedPart
9050 "
9051 fontSize 14
9052 fontName "Consolas"
9053 alignment "left"
9054 anchor "tl"
9055 borderDistance 6
9056 ]
9057 ]
9058
9059 node
9060 [
9061 id 14
9062 graphics
9063 [
9064 w 269.5
9065 h 110
9066 type "rectangle"
9067 fill "#FFFFFF"
9068 fill2 "#FFFFFF"
9069 outline "#000000"
9070 ]
9071 LabelGraphics
9072 [
9073 text "null"
9074 outline "#000000"
9075 fill "#FFFFFF"
9076 fontSize 16
9077 fontName "Monospace"
9078 autoSizePolicy "node_width"
9079 anchor "t"
9080 borderDistance 0.0
9081 ]
9082 LabelGraphics
9083 [
9084 text "
9085 EClassifier class
9086 EDataType class
9087 EModelElement class
9088 ENamedElement class
9089 EModelElement class UndefinedPart
9090 ENamedElement class UndefinedPart
9091 "
9092 fontSize 14
9093 fontName "Consolas"
9094 alignment "left"
9095 anchor "tl"
9096 borderDistance 6
9097 ]
9098 ]
9099
9100 node
9101 [
9102 id 15
9103 graphics
9104 [
9105 w 269.5
9106 h 68
9107 type "rectangle"
9108 fill "#FFFFFF"
9109 fill2 "#FFFFFF"
9110 outline "#000000"
9111 ]
9112 LabelGraphics
9113 [
9114 text "null"
9115 outline "#000000"
9116 fill "#FFFFFF"
9117 fontSize 16
9118 fontName "Monospace"
9119 autoSizePolicy "node_width"
9120 anchor "t"
9121 borderDistance 0.0
9122 ]
9123 LabelGraphics
9124 [
9125 text "
9126 EAnnotation class
9127 EModelElement class
9128 EModelElement class UndefinedPart
9129 "
9130 fontSize 14
9131 fontName "Consolas"
9132 alignment "left"
9133 anchor "tl"
9134 borderDistance 6
9135 ]
9136 ]
9137
9138 node
9139 [
9140 id 16
9141 graphics
9142 [
9143 w 112.2
9144 h 26
9145 type "rectangle"
9146 fill "#FFFFFF"
9147 fill2 "#FFFFFF"
9148 outline "#000000"
9149 ]
9150 LabelGraphics
9151 [
9152 text "New Integers"
9153 outline "#000000"
9154 fill "#FFFFFF"
9155 fontSize 16
9156 fontName "Monospace"
9157 autoSizePolicy "node_width"
9158 anchor "t"
9159 borderDistance 0.0
9160 ]
9161 LabelGraphics
9162 [
9163 text "
9164 "
9165 fontSize 14
9166 fontName "Consolas"
9167 alignment "left"
9168 anchor "tl"
9169 borderDistance 6
9170 ]
9171 ]
9172
9173 node
9174 [
9175 id 17
9176 graphics
9177 [
9178 w 85.80000000000001
9179 h 26
9180 type "rectangle"
9181 fill "#FFFFFF"
9182 fill2 "#FFFFFF"
9183 outline "#000000"
9184 ]
9185 LabelGraphics
9186 [
9187 text "New Reals"
9188 outline "#000000"
9189 fill "#FFFFFF"
9190 fontSize 16
9191 fontName "Monospace"
9192 autoSizePolicy "node_width"
9193 anchor "t"
9194 borderDistance 0.0
9195 ]
9196 LabelGraphics
9197 [
9198 text "
9199 "
9200 fontSize 14
9201 fontName "Consolas"
9202 alignment "left"
9203 anchor "tl"
9204 borderDistance 6
9205 ]
9206 ]
9207
9208 node
9209 [
9210 id 18
9211 graphics
9212 [
9213 w 103.4
9214 h 26
9215 type "rectangle"
9216 fill "#FFFFFF"
9217 fill2 "#FFFFFF"
9218 outline "#000000"
9219 ]
9220 LabelGraphics
9221 [
9222 text "New Strings"
9223 outline "#000000"
9224 fill "#FFFFFF"
9225 fontSize 16
9226 fontName "Monospace"
9227 autoSizePolicy "node_width"
9228 anchor "t"
9229 borderDistance 0.0
9230 ]
9231 LabelGraphics
9232 [
9233 text "
9234 "
9235 fontSize 14
9236 fontName "Consolas"
9237 alignment "left"
9238 anchor "tl"
9239 borderDistance 6
9240 ]
9241 ]
9242
9243 node
9244 [
9245 id 19
9246 graphics
9247 [
9248 w 103.4
9249 h 26
9250 type "rectangle"
9251 fill "#FFFFFF"
9252 fill2 "#FFFFFF"
9253 outline "#000000"
9254 ]
9255 LabelGraphics
9256 [
9257 text "New Objects"
9258 outline "#000000"
9259 fill "#FFFFFF"
9260 fontSize 16
9261 fontName "Monospace"
9262 autoSizePolicy "node_width"
9263 anchor "t"
9264 borderDistance 0.0
9265 ]
9266 LabelGraphics
9267 [
9268 text "
9269 "
9270 fontSize 14
9271 fontName "Consolas"
9272 alignment "left"
9273 anchor "tl"
9274 borderDistance 6
9275 ]
9276 ]
9277 edge
9278 [
9279 source 12
9280 target 0
9281 graphics
9282 [
9283 fill "#000000"
9284 targetArrow "standard"
9285 ]
9286 LabelGraphics
9287 [
9288 text "eModelElement reference EAnnotation"
9289 fontSize 14
9290 fontName "Consolas"
9291 configuration "AutoFlippingLabel"
9292 model "six_pos"
9293 position "thead"
9294 ]
9295 ]
9296 edge
9297 [
9298 source 15
9299 target 0
9300 graphics
9301 [
9302 fill "#000000"
9303 targetArrow "standard"
9304 ]
9305 LabelGraphics
9306 [
9307 text "eModelElement reference EAnnotation"
9308 fontSize 14
9309 fontName "Consolas"
9310 configuration "AutoFlippingLabel"
9311 model "six_pos"
9312 position "thead"
9313 ]
9314 ]
9315 edge
9316 [
9317 source 11
9318 target 0
9319 graphics
9320 [
9321 fill "#000000"
9322 targetArrow "standard"
9323 ]
9324 LabelGraphics
9325 [
9326 text "ePackage reference EClassifier"
9327 fontSize 14
9328 fontName "Consolas"
9329 configuration "AutoFlippingLabel"
9330 model "six_pos"
9331 position "thead"
9332 ]
9333 ]
9334 edge
9335 [
9336 source 13
9337 target 0
9338 graphics
9339 [
9340 fill "#000000"
9341 targetArrow "standard"
9342 ]
9343 LabelGraphics
9344 [
9345 text "ePackage reference EClassifier"
9346 fontSize 14
9347 fontName "Consolas"
9348 configuration "AutoFlippingLabel"
9349 model "six_pos"
9350 position "thead"
9351 ]
9352 ]
9353 edge
9354 [
9355 source 14
9356 target 0
9357 graphics
9358 [
9359 fill "#000000"
9360 targetArrow "standard"
9361 ]
9362 LabelGraphics
9363 [
9364 text "ePackage reference EClassifier"
9365 fontSize 14
9366 fontName "Consolas"
9367 configuration "AutoFlippingLabel"
9368 model "six_pos"
9369 position "thead"
9370 ]
9371 ]
9372 edge
9373 [
9374 source 0
9375 target 12
9376 graphics
9377 [
9378 fill "#000000"
9379 width 3
9380 targetArrow "standard"
9381 ]
9382 LabelGraphics
9383 [
9384 text "eAnnotations reference EModelElement"
9385 fontSize 14
9386 fontName "Consolas"
9387 configuration "AutoFlippingLabel"
9388 model "six_pos"
9389 position "thead"
9390 ]
9391 ]
9392 edge
9393 [
9394 source 0
9395 target 15
9396 graphics
9397 [
9398 fill "#000000"
9399 width 3
9400 targetArrow "standard"
9401 ]
9402 LabelGraphics
9403 [
9404 text "eAnnotations reference EModelElement"
9405 fontSize 14
9406 fontName "Consolas"
9407 configuration "AutoFlippingLabel"
9408 model "six_pos"
9409 position "thead"
9410 ]
9411 ]
9412 edge
9413 [
9414 source 0
9415 target 11
9416 graphics
9417 [
9418 fill "#000000"
9419 width 3
9420 targetArrow "standard"
9421 ]
9422 LabelGraphics
9423 [
9424 text "eClassifiers reference EPackage"
9425 fontSize 14
9426 fontName "Consolas"
9427 configuration "AutoFlippingLabel"
9428 model "six_pos"
9429 position "thead"
9430 ]
9431 ]
9432 edge
9433 [
9434 source 0
9435 target 13
9436 graphics
9437 [
9438 fill "#000000"
9439 width 3
9440 targetArrow "standard"
9441 ]
9442 LabelGraphics
9443 [
9444 text "eClassifiers reference EPackage"
9445 fontSize 14
9446 fontName "Consolas"
9447 configuration "AutoFlippingLabel"
9448 model "six_pos"
9449 position "thead"
9450 ]
9451 ]
9452 edge
9453 [
9454 source 0
9455 target 14
9456 graphics
9457 [
9458 fill "#000000"
9459 width 3
9460 targetArrow "standard"
9461 ]
9462 LabelGraphics
9463 [
9464 text "eClassifiers reference EPackage"
9465 fontSize 14
9466 fontName "Consolas"
9467 configuration "AutoFlippingLabel"
9468 model "six_pos"
9469 position "thead"
9470 ]
9471 ]
9472 edge
9473 [
9474 source 12
9475 target 7
9476 graphics
9477 [
9478 fill "#000000"
9479 targetArrow "standard"
9480 ]
9481 LabelGraphics
9482 [
9483 text "source attribute EAnnotation"
9484 fontSize 14
9485 fontName "Consolas"
9486 configuration "AutoFlippingLabel"
9487 model "six_pos"
9488 position "thead"
9489 ]
9490 ]
9491 edge
9492 [
9493 source 11
9494 target 8
9495 graphics
9496 [
9497 fill "#000000"
9498 targetArrow "standard"
9499 ]
9500 LabelGraphics
9501 [
9502 text "instanceClassName attribute EClassifier"
9503 fontSize 14
9504 fontName "Consolas"
9505 configuration "AutoFlippingLabel"
9506 model "six_pos"
9507 position "thead"
9508 ]
9509 ]
9510 edge
9511 [
9512 source 11
9513 target 9
9514 graphics
9515 [
9516 fill "#000000"
9517 targetArrow "standard"
9518 ]
9519 LabelGraphics
9520 [
9521 text "instanceTypeName attribute EClassifier"
9522 fontSize 14
9523 fontName "Consolas"
9524 configuration "AutoFlippingLabel"
9525 model "six_pos"
9526 position "thead"
9527 ]
9528 ]
9529 edge
9530 [
9531 source 0
9532 target 10
9533 graphics
9534 [
9535 fill "#000000"
9536 targetArrow "standard"
9537 ]
9538 LabelGraphics
9539 [
9540 text "name attribute ENamedElement"
9541 fontSize 14
9542 fontName "Consolas"
9543 configuration "AutoFlippingLabel"
9544 model "six_pos"
9545 position "thead"
9546 ]
9547 ]
9548 edge
9549 [
9550 source 11
9551 target 8
9552 graphics
9553 [
9554 fill "#000000"
9555 targetArrow "standard"
9556 ]
9557 LabelGraphics
9558 [
9559 text "name attribute ENamedElement"
9560 fontSize 14
9561 fontName "Consolas"
9562 configuration "AutoFlippingLabel"
9563 model "six_pos"
9564 position "thead"
9565 ]
9566 ]
9567 edge
9568 [
9569 source 13
9570 target 9
9571 graphics
9572 [
9573 fill "#000000"
9574 targetArrow "standard"
9575 ]
9576 LabelGraphics
9577 [
9578 text "name attribute ENamedElement"
9579 fontSize 14
9580 fontName "Consolas"
9581 configuration "AutoFlippingLabel"
9582 model "six_pos"
9583 position "thead"
9584 ]
9585 ]
9586 edge
9587 [
9588 source 0
9589 target 9
9590 graphics
9591 [
9592 fill "#000000"
9593 targetArrow "standard"
9594 ]
9595 LabelGraphics
9596 [
9597 text "nsURI attribute EPackage"
9598 fontSize 14
9599 fontName "Consolas"
9600 configuration "AutoFlippingLabel"
9601 model "six_pos"
9602 position "thead"
9603 ]
9604 ]
9605 edge
9606 [
9607 source 0
9608 target 8
9609 graphics
9610 [
9611 fill "#000000"
9612 targetArrow "standard"
9613 ]
9614 LabelGraphics
9615 [
9616 text "nsPrefix attribute EPackage"
9617 fontSize 14
9618 fontName "Consolas"
9619 configuration "AutoFlippingLabel"
9620 model "six_pos"
9621 position "thead"
9622 ]
9623 ]
9624]
9625graph
9626[
9627 node
9628 [
9629 id 0
9630 graphics
9631 [
9632 w 254.10000000000002
9633 h 110
9634 type "rectangle"
9635 fill "#FFFFFF"
9636 fill2 "#FFFFFF"
9637 outline "#000000"
9638 ]
9639 LabelGraphics
9640 [
9641 text "o 1"
9642 outline "#000000"
9643 fill "#FFFFFF"
9644 fontSize 16
9645 fontName "Monospace"
9646 autoSizePolicy "node_width"
9647 anchor "t"
9648 borderDistance 0.0
9649 ]
9650 LabelGraphics
9651 [
9652 text "
9653 EModelElement class DefinedPart
9654 ENamedElement class DefinedPart
9655 EPackage class DefinedPart
9656 EModelElement class
9657 ENamedElement class
9658 EPackage class
9659 "
9660 fontSize 14
9661 fontName "Consolas"
9662 alignment "left"
9663 anchor "tl"
9664 borderDistance 6
9665 ]
9666 ]
9667
9668 node
9669 [
9670 id 1
9671 graphics
9672 [
9673 w 41.800000000000004
9674 h 26
9675 type "rectangle"
9676 fill "#FFFFFF"
9677 fill2 "#FFFFFF"
9678 outline "#000000"
9679 ]
9680 LabelGraphics
9681 [
9682 text "true"
9683 outline "#000000"
9684 fill "#FFFFFF"
9685 fontSize 16
9686 fontName "Monospace"
9687 autoSizePolicy "node_width"
9688 anchor "t"
9689 borderDistance 0.0
9690 ]
9691 LabelGraphics
9692 [
9693 text "
9694 "
9695 fontSize 14
9696 fontName "Consolas"
9697 alignment "left"
9698 anchor "tl"
9699 borderDistance 6
9700 ]
9701 ]
9702
9703 node
9704 [
9705 id 2
9706 graphics
9707 [
9708 w 50.6
9709 h 26
9710 type "rectangle"
9711 fill "#FFFFFF"
9712 fill2 "#FFFFFF"
9713 outline "#000000"
9714 ]
9715 LabelGraphics
9716 [
9717 text "false"
9718 outline "#000000"
9719 fill "#FFFFFF"
9720 fontSize 16
9721 fontName "Monospace"
9722 autoSizePolicy "node_width"
9723 anchor "t"
9724 borderDistance 0.0
9725 ]
9726 LabelGraphics
9727 [
9728 text "
9729 "
9730 fontSize 14
9731 fontName "Consolas"
9732 alignment "left"
9733 anchor "tl"
9734 borderDistance 6
9735 ]
9736 ]
9737
9738 node
9739 [
9740 id 3
9741 graphics
9742 [
9743 w 24.200000000000003
9744 h 26
9745 type "rectangle"
9746 fill "#FFFFFF"
9747 fill2 "#FFFFFF"
9748 outline "#000000"
9749 ]
9750 LabelGraphics
9751 [
9752 text "-1"
9753 outline "#000000"
9754 fill "#FFFFFF"
9755 fontSize 16
9756 fontName "Monospace"
9757 autoSizePolicy "node_width"
9758 anchor "t"
9759 borderDistance 0.0
9760 ]
9761 LabelGraphics
9762 [
9763 text "
9764 "
9765 fontSize 14
9766 fontName "Consolas"
9767 alignment "left"
9768 anchor "tl"
9769 borderDistance 6
9770 ]
9771 ]
9772
9773 node
9774 [
9775 id 4
9776 graphics
9777 [
9778 w 15.400000000000002
9779 h 26
9780 type "rectangle"
9781 fill "#FFFFFF"
9782 fill2 "#FFFFFF"
9783 outline "#000000"
9784 ]
9785 LabelGraphics
9786 [
9787 text "0"
9788 outline "#000000"
9789 fill "#FFFFFF"
9790 fontSize 16
9791 fontName "Monospace"
9792 autoSizePolicy "node_width"
9793 anchor "t"
9794 borderDistance 0.0
9795 ]
9796 LabelGraphics
9797 [
9798 text "
9799 "
9800 fontSize 14
9801 fontName "Consolas"
9802 alignment "left"
9803 anchor "tl"
9804 borderDistance 6
9805 ]
9806 ]
9807
9808 node
9809 [
9810 id 5
9811 graphics
9812 [
9813 w 15.400000000000002
9814 h 26
9815 type "rectangle"
9816 fill "#FFFFFF"
9817 fill2 "#FFFFFF"
9818 outline "#000000"
9819 ]
9820 LabelGraphics
9821 [
9822 text "1"
9823 outline "#000000"
9824 fill "#FFFFFF"
9825 fontSize 16
9826 fontName "Monospace"
9827 autoSizePolicy "node_width"
9828 anchor "t"
9829 borderDistance 0.0
9830 ]
9831 LabelGraphics
9832 [
9833 text "
9834 "
9835 fontSize 14
9836 fontName "Consolas"
9837 alignment "left"
9838 anchor "tl"
9839 borderDistance 6
9840 ]
9841 ]
9842
9843 node
9844 [
9845 id 6
9846 graphics
9847 [
9848 w 33.0
9849 h 26
9850 type "rectangle"
9851 fill "#FFFFFF"
9852 fill2 "#FFFFFF"
9853 outline "#000000"
9854 ]
9855 LabelGraphics
9856 [
9857 text ""A""
9858 outline "#000000"
9859 fill "#FFFFFF"
9860 fontSize 16
9861 fontName "Monospace"
9862 autoSizePolicy "node_width"
9863 anchor "t"
9864 borderDistance 0.0
9865 ]
9866 LabelGraphics
9867 [
9868 text "
9869 "
9870 fontSize 14
9871 fontName "Consolas"
9872 alignment "left"
9873 anchor "tl"
9874 borderDistance 6
9875 ]
9876 ]
9877
9878 node
9879 [
9880 id 7
9881 graphics
9882 [
9883 w 33.0
9884 h 26
9885 type "rectangle"
9886 fill "#FFFFFF"
9887 fill2 "#FFFFFF"
9888 outline "#000000"
9889 ]
9890 LabelGraphics
9891 [
9892 text ""B""
9893 outline "#000000"
9894 fill "#FFFFFF"
9895 fontSize 16
9896 fontName "Monospace"
9897 autoSizePolicy "node_width"
9898 anchor "t"
9899 borderDistance 0.0
9900 ]
9901 LabelGraphics
9902 [
9903 text "
9904 "
9905 fontSize 14
9906 fontName "Consolas"
9907 alignment "left"
9908 anchor "tl"
9909 borderDistance 6
9910 ]
9911 ]
9912
9913 node
9914 [
9915 id 8
9916 graphics
9917 [
9918 w 94.60000000000001
9919 h 26
9920 type "rectangle"
9921 fill "#FFFFFF"
9922 fill2 "#FFFFFF"
9923 outline "#000000"
9924 ]
9925 LabelGraphics
9926 [
9927 text ""nsPrefix""
9928 outline "#000000"
9929 fill "#FFFFFF"
9930 fontSize 16
9931 fontName "Monospace"
9932 autoSizePolicy "node_width"
9933 anchor "t"
9934 borderDistance 0.0
9935 ]
9936 LabelGraphics
9937 [
9938 text "
9939 "
9940 fontSize 14
9941 fontName "Consolas"
9942 alignment "left"
9943 anchor "tl"
9944 borderDistance 6
9945 ]
9946 ]
9947
9948 node
9949 [
9950 id 9
9951 graphics
9952 [
9953 w 68.2
9954 h 26
9955 type "rectangle"
9956 fill "#FFFFFF"
9957 fill2 "#FFFFFF"
9958 outline "#000000"
9959 ]
9960 LabelGraphics
9961 [
9962 text ""nsUri""
9963 outline "#000000"
9964 fill "#FFFFFF"
9965 fontSize 16
9966 fontName "Monospace"
9967 autoSizePolicy "node_width"
9968 anchor "t"
9969 borderDistance 0.0
9970 ]
9971 LabelGraphics
9972 [
9973 text "
9974 "
9975 fontSize 14
9976 fontName "Consolas"
9977 alignment "left"
9978 anchor "tl"
9979 borderDistance 6
9980 ]
9981 ]
9982
9983 node
9984 [
9985 id 10
9986 graphics
9987 [
9988 w 121.00000000000001
9989 h 26
9990 type "rectangle"
9991 fill "#FFFFFF"
9992 fill2 "#FFFFFF"
9993 outline "#000000"
9994 ]
9995 LabelGraphics
9996 [
9997 text ""packageName""
9998 outline "#000000"
9999 fill "#FFFFFF"
10000 fontSize 16
10001 fontName "Monospace"
10002 autoSizePolicy "node_width"
10003 anchor "t"
10004 borderDistance 0.0
10005 ]
10006 LabelGraphics
10007 [
10008 text "
10009 "
10010 fontSize 14
10011 fontName "Consolas"
10012 alignment "left"
10013 anchor "tl"
10014 borderDistance 6
10015 ]
10016 ]
10017
10018 node
10019 [
10020 id 11
10021 graphics
10022 [
10023 w 269.5
10024 h 124
10025 type "rectangle"
10026 fill "#FFFFFF"
10027 fill2 "#FFFFFF"
10028 outline "#000000"
10029 ]
10030 LabelGraphics
10031 [
10032 text "null"
10033 outline "#000000"
10034 fill "#FFFFFF"
10035 fontSize 16
10036 fontName "Monospace"
10037 autoSizePolicy "node_width"
10038 anchor "t"
10039 borderDistance 0.0
10040 ]
10041 LabelGraphics
10042 [
10043 text "
10044 EClassifier class
10045 EDataType class
10046 EEnum class
10047 EModelElement class
10048 ENamedElement class
10049 EModelElement class UndefinedPart
10050 ENamedElement class UndefinedPart
10051 "
10052 fontSize 14
10053 fontName "Consolas"
10054 alignment "left"
10055 anchor "tl"
10056 borderDistance 6
10057 ]
10058 ]
10059
10060 node
10061 [
10062 id 12
10063 graphics
10064 [
10065 w 269.5
10066 h 124
10067 type "rectangle"
10068 fill "#FFFFFF"
10069 fill2 "#FFFFFF"
10070 outline "#000000"
10071 ]
10072 LabelGraphics
10073 [
10074 text "null"
10075 outline "#000000"
10076 fill "#FFFFFF"
10077 fontSize 16
10078 fontName "Monospace"
10079 autoSizePolicy "node_width"
10080 anchor "t"
10081 borderDistance 0.0
10082 ]
10083 LabelGraphics
10084 [
10085 text "
10086 EClassifier class
10087 EDataType class
10088 EEnum class
10089 EModelElement class
10090 ENamedElement class
10091 EModelElement class UndefinedPart
10092 ENamedElement class UndefinedPart
10093 "
10094 fontSize 14
10095 fontName "Consolas"
10096 alignment "left"
10097 anchor "tl"
10098 borderDistance 6
10099 ]
10100 ]
10101
10102 node
10103 [
10104 id 13
10105 graphics
10106 [
10107 w 269.5
10108 h 96
10109 type "rectangle"
10110 fill "#FFFFFF"
10111 fill2 "#FFFFFF"
10112 outline "#000000"
10113 ]
10114 LabelGraphics
10115 [
10116 text "null"
10117 outline "#000000"
10118 fill "#FFFFFF"
10119 fontSize 16
10120 fontName "Monospace"
10121 autoSizePolicy "node_width"
10122 anchor "t"
10123 borderDistance 0.0
10124 ]
10125 LabelGraphics
10126 [
10127 text "
10128 EEnumLiteral class
10129 EModelElement class
10130 ENamedElement class
10131 EModelElement class UndefinedPart
10132 ENamedElement class UndefinedPart
10133 "
10134 fontSize 14
10135 fontName "Consolas"
10136 alignment "left"
10137 anchor "tl"
10138 borderDistance 6
10139 ]
10140 ]
10141
10142 node
10143 [
10144 id 14
10145 graphics
10146 [
10147 w 269.5
10148 h 68
10149 type "rectangle"
10150 fill "#FFFFFF"
10151 fill2 "#FFFFFF"
10152 outline "#000000"
10153 ]
10154 LabelGraphics
10155 [
10156 text "null"
10157 outline "#000000"
10158 fill "#FFFFFF"
10159 fontSize 16
10160 fontName "Monospace"
10161 autoSizePolicy "node_width"
10162 anchor "t"
10163 borderDistance 0.0
10164 ]
10165 LabelGraphics
10166 [
10167 text "
10168 EAnnotation class
10169 EModelElement class
10170 EModelElement class UndefinedPart
10171 "
10172 fontSize 14
10173 fontName "Consolas"
10174 alignment "left"
10175 anchor "tl"
10176 borderDistance 6
10177 ]
10178 ]
10179
10180 node
10181 [
10182 id 15
10183 graphics
10184 [
10185 w 269.5
10186 h 96
10187 type "rectangle"
10188 fill "#FFFFFF"
10189 fill2 "#FFFFFF"
10190 outline "#000000"
10191 ]
10192 LabelGraphics
10193 [
10194 text "null"
10195 outline "#000000"
10196 fill "#FFFFFF"
10197 fontSize 16
10198 fontName "Monospace"
10199 autoSizePolicy "node_width"
10200 anchor "t"
10201 borderDistance 0.0
10202 ]
10203 LabelGraphics
10204 [
10205 text "
10206 EModelElement class
10207 ENamedElement class
10208 ETypeParameter class
10209 EModelElement class UndefinedPart
10210 ENamedElement class UndefinedPart
10211 "
10212 fontSize 14
10213 fontName "Consolas"
10214 alignment "left"
10215 anchor "tl"
10216 borderDistance 6
10217 ]
10218 ]
10219
10220 node
10221 [
10222 id 16
10223 graphics
10224 [
10225 w 112.2
10226 h 26
10227 type "rectangle"
10228 fill "#FFFFFF"
10229 fill2 "#FFFFFF"
10230 outline "#000000"
10231 ]
10232 LabelGraphics
10233 [
10234 text "New Integers"
10235 outline "#000000"
10236 fill "#FFFFFF"
10237 fontSize 16
10238 fontName "Monospace"
10239 autoSizePolicy "node_width"
10240 anchor "t"
10241 borderDistance 0.0
10242 ]
10243 LabelGraphics
10244 [
10245 text "
10246 "
10247 fontSize 14
10248 fontName "Consolas"
10249 alignment "left"
10250 anchor "tl"
10251 borderDistance 6
10252 ]
10253 ]
10254
10255 node
10256 [
10257 id 17
10258 graphics
10259 [
10260 w 85.80000000000001
10261 h 26
10262 type "rectangle"
10263 fill "#FFFFFF"
10264 fill2 "#FFFFFF"
10265 outline "#000000"
10266 ]
10267 LabelGraphics
10268 [
10269 text "New Reals"
10270 outline "#000000"
10271 fill "#FFFFFF"
10272 fontSize 16
10273 fontName "Monospace"
10274 autoSizePolicy "node_width"
10275 anchor "t"
10276 borderDistance 0.0
10277 ]
10278 LabelGraphics
10279 [
10280 text "
10281 "
10282 fontSize 14
10283 fontName "Consolas"
10284 alignment "left"
10285 anchor "tl"
10286 borderDistance 6
10287 ]
10288 ]
10289
10290 node
10291 [
10292 id 18
10293 graphics
10294 [
10295 w 103.4
10296 h 26
10297 type "rectangle"
10298 fill "#FFFFFF"
10299 fill2 "#FFFFFF"
10300 outline "#000000"
10301 ]
10302 LabelGraphics
10303 [
10304 text "New Strings"
10305 outline "#000000"
10306 fill "#FFFFFF"
10307 fontSize 16
10308 fontName "Monospace"
10309 autoSizePolicy "node_width"
10310 anchor "t"
10311 borderDistance 0.0
10312 ]
10313 LabelGraphics
10314 [
10315 text "
10316 "
10317 fontSize 14
10318 fontName "Consolas"
10319 alignment "left"
10320 anchor "tl"
10321 borderDistance 6
10322 ]
10323 ]
10324
10325 node
10326 [
10327 id 19
10328 graphics
10329 [
10330 w 103.4
10331 h 26
10332 type "rectangle"
10333 fill "#FFFFFF"
10334 fill2 "#FFFFFF"
10335 outline "#000000"
10336 ]
10337 LabelGraphics
10338 [
10339 text "New Objects"
10340 outline "#000000"
10341 fill "#FFFFFF"
10342 fontSize 16
10343 fontName "Monospace"
10344 autoSizePolicy "node_width"
10345 anchor "t"
10346 borderDistance 0.0
10347 ]
10348 LabelGraphics
10349 [
10350 text "
10351 "
10352 fontSize 14
10353 fontName "Consolas"
10354 alignment "left"
10355 anchor "tl"
10356 borderDistance 6
10357 ]
10358 ]
10359 edge
10360 [
10361 source 14
10362 target 0
10363 graphics
10364 [
10365 fill "#000000"
10366 targetArrow "standard"
10367 ]
10368 LabelGraphics
10369 [
10370 text "eModelElement reference EAnnotation"
10371 fontSize 14
10372 fontName "Consolas"
10373 configuration "AutoFlippingLabel"
10374 model "six_pos"
10375 position "thead"
10376 ]
10377 ]
10378 edge
10379 [
10380 source 11
10381 target 0
10382 graphics
10383 [
10384 fill "#000000"
10385 targetArrow "standard"
10386 ]
10387 LabelGraphics
10388 [
10389 text "ePackage reference EClassifier"
10390 fontSize 14
10391 fontName "Consolas"
10392 configuration "AutoFlippingLabel"
10393 model "six_pos"
10394 position "thead"
10395 ]
10396 ]
10397 edge
10398 [
10399 source 12
10400 target 0
10401 graphics
10402 [
10403 fill "#000000"
10404 targetArrow "standard"
10405 ]
10406 LabelGraphics
10407 [
10408 text "ePackage reference EClassifier"
10409 fontSize 14
10410 fontName "Consolas"
10411 configuration "AutoFlippingLabel"
10412 model "six_pos"
10413 position "thead"
10414 ]
10415 ]
10416 edge
10417 [
10418 source 12
10419 target 15
10420 graphics
10421 [
10422 fill "#000000"
10423 width 3
10424 targetArrow "standard"
10425 ]
10426 LabelGraphics
10427 [
10428 text "eTypeParameters reference EClassifier"
10429 fontSize 14
10430 fontName "Consolas"
10431 configuration "AutoFlippingLabel"
10432 model "six_pos"
10433 position "thead"
10434 ]
10435 ]
10436 edge
10437 [
10438 source 11
10439 target 13
10440 graphics
10441 [
10442 fill "#000000"
10443 width 3
10444 targetArrow "standard"
10445 ]
10446 LabelGraphics
10447 [
10448 text "eLiterals reference EEnum"
10449 fontSize 14
10450 fontName "Consolas"
10451 configuration "AutoFlippingLabel"
10452 model "six_pos"
10453 position "thead"
10454 ]
10455 ]
10456 edge
10457 [
10458 source 13
10459 target 11
10460 graphics
10461 [
10462 fill "#000000"
10463 targetArrow "standard"
10464 ]
10465 LabelGraphics
10466 [
10467 text "eEnum reference EEnumLiteral"
10468 fontSize 14
10469 fontName "Consolas"
10470 configuration "AutoFlippingLabel"
10471 model "six_pos"
10472 position "thead"
10473 ]
10474 ]
10475 edge
10476 [
10477 source 0
10478 target 14
10479 graphics
10480 [
10481 fill "#000000"
10482 width 3
10483 targetArrow "standard"
10484 ]
10485 LabelGraphics
10486 [
10487 text "eAnnotations reference EModelElement"
10488 fontSize 14
10489 fontName "Consolas"
10490 configuration "AutoFlippingLabel"
10491 model "six_pos"
10492 position "thead"
10493 ]
10494 ]
10495 edge
10496 [
10497 source 0
10498 target 11
10499 graphics
10500 [
10501 fill "#000000"
10502 width 3
10503 targetArrow "standard"
10504 ]
10505 LabelGraphics
10506 [
10507 text "eClassifiers reference EPackage"
10508 fontSize 14
10509 fontName "Consolas"
10510 configuration "AutoFlippingLabel"
10511 model "six_pos"
10512 position "thead"
10513 ]
10514 ]
10515 edge
10516 [
10517 source 0
10518 target 12
10519 graphics
10520 [
10521 fill "#000000"
10522 width 3
10523 targetArrow "standard"
10524 ]
10525 LabelGraphics
10526 [
10527 text "eClassifiers reference EPackage"
10528 fontSize 14
10529 fontName "Consolas"
10530 configuration "AutoFlippingLabel"
10531 model "six_pos"
10532 position "thead"
10533 ]
10534 ]
10535 edge
10536 [
10537 source 11
10538 target 8
10539 graphics
10540 [
10541 fill "#000000"
10542 targetArrow "standard"
10543 ]
10544 LabelGraphics
10545 [
10546 text "instanceClassName attribute EClassifier"
10547 fontSize 14
10548 fontName "Consolas"
10549 configuration "AutoFlippingLabel"
10550 model "six_pos"
10551 position "thead"
10552 ]
10553 ]
10554 edge
10555 [
10556 source 11
10557 target 9
10558 graphics
10559 [
10560 fill "#000000"
10561 targetArrow "standard"
10562 ]
10563 LabelGraphics
10564 [
10565 text "instanceTypeName attribute EClassifier"
10566 fontSize 14
10567 fontName "Consolas"
10568 configuration "AutoFlippingLabel"
10569 model "six_pos"
10570 position "thead"
10571 ]
10572 ]
10573 edge
10574 [
10575 source 12
10576 target 9
10577 graphics
10578 [
10579 fill "#000000"
10580 targetArrow "standard"
10581 ]
10582 LabelGraphics
10583 [
10584 text "instanceTypeName attribute EClassifier"
10585 fontSize 14
10586 fontName "Consolas"
10587 configuration "AutoFlippingLabel"
10588 model "six_pos"
10589 position "thead"
10590 ]
10591 ]
10592 edge
10593 [
10594 source 11
10595 target 2
10596 graphics
10597 [
10598 fill "#000000"
10599 targetArrow "standard"
10600 ]
10601 LabelGraphics
10602 [
10603 text "serializable attribute EDataType"
10604 fontSize 14
10605 fontName "Consolas"
10606 configuration "AutoFlippingLabel"
10607 model "six_pos"
10608 position "thead"
10609 ]
10610 ]
10611 edge
10612 [
10613 source 12
10614 target 2
10615 graphics
10616 [
10617 fill "#000000"
10618 targetArrow "standard"
10619 ]
10620 LabelGraphics
10621 [
10622 text "serializable attribute EDataType"
10623 fontSize 14
10624 fontName "Consolas"
10625 configuration "AutoFlippingLabel"
10626 model "six_pos"
10627 position "thead"
10628 ]
10629 ]
10630 edge
10631 [
10632 source 13
10633 target 9
10634 graphics
10635 [
10636 fill "#000000"
10637 targetArrow "standard"
10638 ]
10639 LabelGraphics
10640 [
10641 text "literal attribute EEnumLiteral"
10642 fontSize 14
10643 fontName "Consolas"
10644 configuration "AutoFlippingLabel"
10645 model "six_pos"
10646 position "thead"
10647 ]
10648 ]
10649 edge
10650 [
10651 source 0
10652 target 10
10653 graphics
10654 [
10655 fill "#000000"
10656 targetArrow "standard"
10657 ]
10658 LabelGraphics
10659 [
10660 text "name attribute ENamedElement"
10661 fontSize 14
10662 fontName "Consolas"
10663 configuration "AutoFlippingLabel"
10664 model "six_pos"
10665 position "thead"
10666 ]
10667 ]
10668 edge
10669 [
10670 source 12
10671 target 10
10672 graphics
10673 [
10674 fill "#000000"
10675 targetArrow "standard"
10676 ]
10677 LabelGraphics
10678 [
10679 text "name attribute ENamedElement"
10680 fontSize 14
10681 fontName "Consolas"
10682 configuration "AutoFlippingLabel"
10683 model "six_pos"
10684 position "thead"
10685 ]
10686 ]
10687 edge
10688 [
10689 source 0
10690 target 9
10691 graphics
10692 [
10693 fill "#000000"
10694 targetArrow "standard"
10695 ]
10696 LabelGraphics
10697 [
10698 text "nsURI attribute EPackage"
10699 fontSize 14
10700 fontName "Consolas"
10701 configuration "AutoFlippingLabel"
10702 model "six_pos"
10703 position "thead"
10704 ]
10705 ]
10706 edge
10707 [
10708 source 0
10709 target 8
10710 graphics
10711 [
10712 fill "#000000"
10713 targetArrow "standard"
10714 ]
10715 LabelGraphics
10716 [
10717 text "nsPrefix attribute EPackage"
10718 fontSize 14
10719 fontName "Consolas"
10720 configuration "AutoFlippingLabel"
10721 model "six_pos"
10722 position "thead"
10723 ]
10724 ]
10725]
10726graph
10727[
10728 node
10729 [
10730 id 0
10731 graphics
10732 [
10733 w 254.10000000000002
10734 h 110
10735 type "rectangle"
10736 fill "#FFFFFF"
10737 fill2 "#FFFFFF"
10738 outline "#000000"
10739 ]
10740 LabelGraphics
10741 [
10742 text "o 1"
10743 outline "#000000"
10744 fill "#FFFFFF"
10745 fontSize 16
10746 fontName "Monospace"
10747 autoSizePolicy "node_width"
10748 anchor "t"
10749 borderDistance 0.0
10750 ]
10751 LabelGraphics
10752 [
10753 text "
10754 EModelElement class DefinedPart
10755 ENamedElement class DefinedPart
10756 EPackage class DefinedPart
10757 EModelElement class
10758 ENamedElement class
10759 EPackage class
10760 "
10761 fontSize 14
10762 fontName "Consolas"
10763 alignment "left"
10764 anchor "tl"
10765 borderDistance 6
10766 ]
10767 ]
10768
10769 node
10770 [
10771 id 1
10772 graphics
10773 [
10774 w 41.800000000000004
10775 h 26
10776 type "rectangle"
10777 fill "#FFFFFF"
10778 fill2 "#FFFFFF"
10779 outline "#000000"
10780 ]
10781 LabelGraphics
10782 [
10783 text "true"
10784 outline "#000000"
10785 fill "#FFFFFF"
10786 fontSize 16
10787 fontName "Monospace"
10788 autoSizePolicy "node_width"
10789 anchor "t"
10790 borderDistance 0.0
10791 ]
10792 LabelGraphics
10793 [
10794 text "
10795 "
10796 fontSize 14
10797 fontName "Consolas"
10798 alignment "left"
10799 anchor "tl"
10800 borderDistance 6
10801 ]
10802 ]
10803
10804 node
10805 [
10806 id 2
10807 graphics
10808 [
10809 w 50.6
10810 h 26
10811 type "rectangle"
10812 fill "#FFFFFF"
10813 fill2 "#FFFFFF"
10814 outline "#000000"
10815 ]
10816 LabelGraphics
10817 [
10818 text "false"
10819 outline "#000000"
10820 fill "#FFFFFF"
10821 fontSize 16
10822 fontName "Monospace"
10823 autoSizePolicy "node_width"
10824 anchor "t"
10825 borderDistance 0.0
10826 ]
10827 LabelGraphics
10828 [
10829 text "
10830 "
10831 fontSize 14
10832 fontName "Consolas"
10833 alignment "left"
10834 anchor "tl"
10835 borderDistance 6
10836 ]
10837 ]
10838
10839 node
10840 [
10841 id 3
10842 graphics
10843 [
10844 w 24.200000000000003
10845 h 26
10846 type "rectangle"
10847 fill "#FFFFFF"
10848 fill2 "#FFFFFF"
10849 outline "#000000"
10850 ]
10851 LabelGraphics
10852 [
10853 text "-1"
10854 outline "#000000"
10855 fill "#FFFFFF"
10856 fontSize 16
10857 fontName "Monospace"
10858 autoSizePolicy "node_width"
10859 anchor "t"
10860 borderDistance 0.0
10861 ]
10862 LabelGraphics
10863 [
10864 text "
10865 "
10866 fontSize 14
10867 fontName "Consolas"
10868 alignment "left"
10869 anchor "tl"
10870 borderDistance 6
10871 ]
10872 ]
10873
10874 node
10875 [
10876 id 4
10877 graphics
10878 [
10879 w 15.400000000000002
10880 h 26
10881 type "rectangle"
10882 fill "#FFFFFF"
10883 fill2 "#FFFFFF"
10884 outline "#000000"
10885 ]
10886 LabelGraphics
10887 [
10888 text "0"
10889 outline "#000000"
10890 fill "#FFFFFF"
10891 fontSize 16
10892 fontName "Monospace"
10893 autoSizePolicy "node_width"
10894 anchor "t"
10895 borderDistance 0.0
10896 ]
10897 LabelGraphics
10898 [
10899 text "
10900 "
10901 fontSize 14
10902 fontName "Consolas"
10903 alignment "left"
10904 anchor "tl"
10905 borderDistance 6
10906 ]
10907 ]
10908
10909 node
10910 [
10911 id 5
10912 graphics
10913 [
10914 w 15.400000000000002
10915 h 26
10916 type "rectangle"
10917 fill "#FFFFFF"
10918 fill2 "#FFFFFF"
10919 outline "#000000"
10920 ]
10921 LabelGraphics
10922 [
10923 text "1"
10924 outline "#000000"
10925 fill "#FFFFFF"
10926 fontSize 16
10927 fontName "Monospace"
10928 autoSizePolicy "node_width"
10929 anchor "t"
10930 borderDistance 0.0
10931 ]
10932 LabelGraphics
10933 [
10934 text "
10935 "
10936 fontSize 14
10937 fontName "Consolas"
10938 alignment "left"
10939 anchor "tl"
10940 borderDistance 6
10941 ]
10942 ]
10943
10944 node
10945 [
10946 id 6
10947 graphics
10948 [
10949 w 33.0
10950 h 26
10951 type "rectangle"
10952 fill "#FFFFFF"
10953 fill2 "#FFFFFF"
10954 outline "#000000"
10955 ]
10956 LabelGraphics
10957 [
10958 text ""A""
10959 outline "#000000"
10960 fill "#FFFFFF"
10961 fontSize 16
10962 fontName "Monospace"
10963 autoSizePolicy "node_width"
10964 anchor "t"
10965 borderDistance 0.0
10966 ]
10967 LabelGraphics
10968 [
10969 text "
10970 "
10971 fontSize 14
10972 fontName "Consolas"
10973 alignment "left"
10974 anchor "tl"
10975 borderDistance 6
10976 ]
10977 ]
10978
10979 node
10980 [
10981 id 7
10982 graphics
10983 [
10984 w 33.0
10985 h 26
10986 type "rectangle"
10987 fill "#FFFFFF"
10988 fill2 "#FFFFFF"
10989 outline "#000000"
10990 ]
10991 LabelGraphics
10992 [
10993 text ""B""
10994 outline "#000000"
10995 fill "#FFFFFF"
10996 fontSize 16
10997 fontName "Monospace"
10998 autoSizePolicy "node_width"
10999 anchor "t"
11000 borderDistance 0.0
11001 ]
11002 LabelGraphics
11003 [
11004 text "
11005 "
11006 fontSize 14
11007 fontName "Consolas"
11008 alignment "left"
11009 anchor "tl"
11010 borderDistance 6
11011 ]
11012 ]
11013
11014 node
11015 [
11016 id 8
11017 graphics
11018 [
11019 w 94.60000000000001
11020 h 26
11021 type "rectangle"
11022 fill "#FFFFFF"
11023 fill2 "#FFFFFF"
11024 outline "#000000"
11025 ]
11026 LabelGraphics
11027 [
11028 text ""nsPrefix""
11029 outline "#000000"
11030 fill "#FFFFFF"
11031 fontSize 16
11032 fontName "Monospace"
11033 autoSizePolicy "node_width"
11034 anchor "t"
11035 borderDistance 0.0
11036 ]
11037 LabelGraphics
11038 [
11039 text "
11040 "
11041 fontSize 14
11042 fontName "Consolas"
11043 alignment "left"
11044 anchor "tl"
11045 borderDistance 6
11046 ]
11047 ]
11048
11049 node
11050 [
11051 id 9
11052 graphics
11053 [
11054 w 68.2
11055 h 26
11056 type "rectangle"
11057 fill "#FFFFFF"
11058 fill2 "#FFFFFF"
11059 outline "#000000"
11060 ]
11061 LabelGraphics
11062 [
11063 text ""nsUri""
11064 outline "#000000"
11065 fill "#FFFFFF"
11066 fontSize 16
11067 fontName "Monospace"
11068 autoSizePolicy "node_width"
11069 anchor "t"
11070 borderDistance 0.0
11071 ]
11072 LabelGraphics
11073 [
11074 text "
11075 "
11076 fontSize 14
11077 fontName "Consolas"
11078 alignment "left"
11079 anchor "tl"
11080 borderDistance 6
11081 ]
11082 ]
11083
11084 node
11085 [
11086 id 10
11087 graphics
11088 [
11089 w 121.00000000000001
11090 h 26
11091 type "rectangle"
11092 fill "#FFFFFF"
11093 fill2 "#FFFFFF"
11094 outline "#000000"
11095 ]
11096 LabelGraphics
11097 [
11098 text ""packageName""
11099 outline "#000000"
11100 fill "#FFFFFF"
11101 fontSize 16
11102 fontName "Monospace"
11103 autoSizePolicy "node_width"
11104 anchor "t"
11105 borderDistance 0.0
11106 ]
11107 LabelGraphics
11108 [
11109 text "
11110 "
11111 fontSize 14
11112 fontName "Consolas"
11113 alignment "left"
11114 anchor "tl"
11115 borderDistance 6
11116 ]
11117 ]
11118
11119 node
11120 [
11121 id 11
11122 graphics
11123 [
11124 w 269.5
11125 h 110
11126 type "rectangle"
11127 fill "#FFFFFF"
11128 fill2 "#FFFFFF"
11129 outline "#000000"
11130 ]
11131 LabelGraphics
11132 [
11133 text "null"
11134 outline "#000000"
11135 fill "#FFFFFF"
11136 fontSize 16
11137 fontName "Monospace"
11138 autoSizePolicy "node_width"
11139 anchor "t"
11140 borderDistance 0.0
11141 ]
11142 LabelGraphics
11143 [
11144 text "
11145 EClassifier class
11146 EDataType class
11147 EModelElement class
11148 ENamedElement class
11149 EModelElement class UndefinedPart
11150 ENamedElement class UndefinedPart
11151 "
11152 fontSize 14
11153 fontName "Consolas"
11154 alignment "left"
11155 anchor "tl"
11156 borderDistance 6
11157 ]
11158 ]
11159
11160 node
11161 [
11162 id 12
11163 graphics
11164 [
11165 w 269.5
11166 h 110
11167 type "rectangle"
11168 fill "#FFFFFF"
11169 fill2 "#FFFFFF"
11170 outline "#000000"
11171 ]
11172 LabelGraphics
11173 [
11174 text "null"
11175 outline "#000000"
11176 fill "#FFFFFF"
11177 fontSize 16
11178 fontName "Monospace"
11179 autoSizePolicy "node_width"
11180 anchor "t"
11181 borderDistance 0.0
11182 ]
11183 LabelGraphics
11184 [
11185 text "
11186 EModelElement class
11187 ENamedElement class
11188 EPackage class
11189 EModelElement class UndefinedPart
11190 ENamedElement class UndefinedPart
11191 EPackage class UndefinedPart
11192 "
11193 fontSize 14
11194 fontName "Consolas"
11195 alignment "left"
11196 anchor "tl"
11197 borderDistance 6
11198 ]
11199 ]
11200
11201 node
11202 [
11203 id 13
11204 graphics
11205 [
11206 w 269.5
11207 h 124
11208 type "rectangle"
11209 fill "#FFFFFF"
11210 fill2 "#FFFFFF"
11211 outline "#000000"
11212 ]
11213 LabelGraphics
11214 [
11215 text "null"
11216 outline "#000000"
11217 fill "#FFFFFF"
11218 fontSize 16
11219 fontName "Monospace"
11220 autoSizePolicy "node_width"
11221 anchor "t"
11222 borderDistance 0.0
11223 ]
11224 LabelGraphics
11225 [
11226 text "
11227 EClassifier class
11228 EDataType class
11229 EEnum class
11230 EModelElement class
11231 ENamedElement class
11232 EModelElement class UndefinedPart
11233 ENamedElement class UndefinedPart
11234 "
11235 fontSize 14
11236 fontName "Consolas"
11237 alignment "left"
11238 anchor "tl"
11239 borderDistance 6
11240 ]
11241 ]
11242
11243 node
11244 [
11245 id 14
11246 graphics
11247 [
11248 w 269.5
11249 h 96
11250 type "rectangle"
11251 fill "#FFFFFF"
11252 fill2 "#FFFFFF"
11253 outline "#000000"
11254 ]
11255 LabelGraphics
11256 [
11257 text "null"
11258 outline "#000000"
11259 fill "#FFFFFF"
11260 fontSize 16
11261 fontName "Monospace"
11262 autoSizePolicy "node_width"
11263 anchor "t"
11264 borderDistance 0.0
11265 ]
11266 LabelGraphics
11267 [
11268 text "
11269 EModelElement class
11270 ENamedElement class
11271 ETypeParameter class
11272 EModelElement class UndefinedPart
11273 ENamedElement class UndefinedPart
11274 "
11275 fontSize 14
11276 fontName "Consolas"
11277 alignment "left"
11278 anchor "tl"
11279 borderDistance 6
11280 ]
11281 ]
11282
11283 node
11284 [
11285 id 15
11286 graphics
11287 [
11288 w 269.5
11289 h 68
11290 type "rectangle"
11291 fill "#FFFFFF"
11292 fill2 "#FFFFFF"
11293 outline "#000000"
11294 ]
11295 LabelGraphics
11296 [
11297 text "null"
11298 outline "#000000"
11299 fill "#FFFFFF"
11300 fontSize 16
11301 fontName "Monospace"
11302 autoSizePolicy "node_width"
11303 anchor "t"
11304 borderDistance 0.0
11305 ]
11306 LabelGraphics
11307 [
11308 text "
11309 EAnnotation class
11310 EModelElement class
11311 EModelElement class UndefinedPart
11312 "
11313 fontSize 14
11314 fontName "Consolas"
11315 alignment "left"
11316 anchor "tl"
11317 borderDistance 6
11318 ]
11319 ]
11320
11321 node
11322 [
11323 id 16
11324 graphics
11325 [
11326 w 112.2
11327 h 26
11328 type "rectangle"
11329 fill "#FFFFFF"
11330 fill2 "#FFFFFF"
11331 outline "#000000"
11332 ]
11333 LabelGraphics
11334 [
11335 text "New Integers"
11336 outline "#000000"
11337 fill "#FFFFFF"
11338 fontSize 16
11339 fontName "Monospace"
11340 autoSizePolicy "node_width"
11341 anchor "t"
11342 borderDistance 0.0
11343 ]
11344 LabelGraphics
11345 [
11346 text "
11347 "
11348 fontSize 14
11349 fontName "Consolas"
11350 alignment "left"
11351 anchor "tl"
11352 borderDistance 6
11353 ]
11354 ]
11355
11356 node
11357 [
11358 id 17
11359 graphics
11360 [
11361 w 85.80000000000001
11362 h 26
11363 type "rectangle"
11364 fill "#FFFFFF"
11365 fill2 "#FFFFFF"
11366 outline "#000000"
11367 ]
11368 LabelGraphics
11369 [
11370 text "New Reals"
11371 outline "#000000"
11372 fill "#FFFFFF"
11373 fontSize 16
11374 fontName "Monospace"
11375 autoSizePolicy "node_width"
11376 anchor "t"
11377 borderDistance 0.0
11378 ]
11379 LabelGraphics
11380 [
11381 text "
11382 "
11383 fontSize 14
11384 fontName "Consolas"
11385 alignment "left"
11386 anchor "tl"
11387 borderDistance 6
11388 ]
11389 ]
11390
11391 node
11392 [
11393 id 18
11394 graphics
11395 [
11396 w 103.4
11397 h 26
11398 type "rectangle"
11399 fill "#FFFFFF"
11400 fill2 "#FFFFFF"
11401 outline "#000000"
11402 ]
11403 LabelGraphics
11404 [
11405 text "New Strings"
11406 outline "#000000"
11407 fill "#FFFFFF"
11408 fontSize 16
11409 fontName "Monospace"
11410 autoSizePolicy "node_width"
11411 anchor "t"
11412 borderDistance 0.0
11413 ]
11414 LabelGraphics
11415 [
11416 text "
11417 "
11418 fontSize 14
11419 fontName "Consolas"
11420 alignment "left"
11421 anchor "tl"
11422 borderDistance 6
11423 ]
11424 ]
11425
11426 node
11427 [
11428 id 19
11429 graphics
11430 [
11431 w 103.4
11432 h 26
11433 type "rectangle"
11434 fill "#FFFFFF"
11435 fill2 "#FFFFFF"
11436 outline "#000000"
11437 ]
11438 LabelGraphics
11439 [
11440 text "New Objects"
11441 outline "#000000"
11442 fill "#FFFFFF"
11443 fontSize 16
11444 fontName "Monospace"
11445 autoSizePolicy "node_width"
11446 anchor "t"
11447 borderDistance 0.0
11448 ]
11449 LabelGraphics
11450 [
11451 text "
11452 "
11453 fontSize 14
11454 fontName "Consolas"
11455 alignment "left"
11456 anchor "tl"
11457 borderDistance 6
11458 ]
11459 ]
11460 edge
11461 [
11462 source 15
11463 target 0
11464 graphics
11465 [
11466 fill "#000000"
11467 targetArrow "standard"
11468 ]
11469 LabelGraphics
11470 [
11471 text "eModelElement reference EAnnotation"
11472 fontSize 14
11473 fontName "Consolas"
11474 configuration "AutoFlippingLabel"
11475 model "six_pos"
11476 position "thead"
11477 ]
11478 ]
11479 edge
11480 [
11481 source 11
11482 target 0
11483 graphics
11484 [
11485 fill "#000000"
11486 targetArrow "standard"
11487 ]
11488 LabelGraphics
11489 [
11490 text "ePackage reference EClassifier"
11491 fontSize 14
11492 fontName "Consolas"
11493 configuration "AutoFlippingLabel"
11494 model "six_pos"
11495 position "thead"
11496 ]
11497 ]
11498 edge
11499 [
11500 source 13
11501 target 0
11502 graphics
11503 [
11504 fill "#000000"
11505 targetArrow "standard"
11506 ]
11507 LabelGraphics
11508 [
11509 text "ePackage reference EClassifier"
11510 fontSize 14
11511 fontName "Consolas"
11512 configuration "AutoFlippingLabel"
11513 model "six_pos"
11514 position "thead"
11515 ]
11516 ]
11517 edge
11518 [
11519 source 13
11520 target 14
11521 graphics
11522 [
11523 fill "#000000"
11524 width 3
11525 targetArrow "standard"
11526 ]
11527 LabelGraphics
11528 [
11529 text "eTypeParameters reference EClassifier"
11530 fontSize 14
11531 fontName "Consolas"
11532 configuration "AutoFlippingLabel"
11533 model "six_pos"
11534 position "thead"
11535 ]
11536 ]
11537 edge
11538 [
11539 source 0
11540 target 15
11541 graphics
11542 [
11543 fill "#000000"
11544 width 3
11545 targetArrow "standard"
11546 ]
11547 LabelGraphics
11548 [
11549 text "eAnnotations reference EModelElement"
11550 fontSize 14
11551 fontName "Consolas"
11552 configuration "AutoFlippingLabel"
11553 model "six_pos"
11554 position "thead"
11555 ]
11556 ]
11557 edge
11558 [
11559 source 0
11560 target 11
11561 graphics
11562 [
11563 fill "#000000"
11564 width 3
11565 targetArrow "standard"
11566 ]
11567 LabelGraphics
11568 [
11569 text "eClassifiers reference EPackage"
11570 fontSize 14
11571 fontName "Consolas"
11572 configuration "AutoFlippingLabel"
11573 model "six_pos"
11574 position "thead"
11575 ]
11576 ]
11577 edge
11578 [
11579 source 0
11580 target 13
11581 graphics
11582 [
11583 fill "#000000"
11584 width 3
11585 targetArrow "standard"
11586 ]
11587 LabelGraphics
11588 [
11589 text "eClassifiers reference EPackage"
11590 fontSize 14
11591 fontName "Consolas"
11592 configuration "AutoFlippingLabel"
11593 model "six_pos"
11594 position "thead"
11595 ]
11596 ]
11597 edge
11598 [
11599 source 0
11600 target 12
11601 graphics
11602 [
11603 fill "#000000"
11604 width 3
11605 targetArrow "standard"
11606 ]
11607 LabelGraphics
11608 [
11609 text "eSubpackages reference EPackage"
11610 fontSize 14
11611 fontName "Consolas"
11612 configuration "AutoFlippingLabel"
11613 model "six_pos"
11614 position "thead"
11615 ]
11616 ]
11617 edge
11618 [
11619 source 12
11620 target 0
11621 graphics
11622 [
11623 fill "#000000"
11624 targetArrow "standard"
11625 ]
11626 LabelGraphics
11627 [
11628 text "eSuperPackage reference EPackage"
11629 fontSize 14
11630 fontName "Consolas"
11631 configuration "AutoFlippingLabel"
11632 model "six_pos"
11633 position "thead"
11634 ]
11635 ]
11636 edge
11637 [
11638 source 11
11639 target 6
11640 graphics
11641 [
11642 fill "#000000"
11643 targetArrow "standard"
11644 ]
11645 LabelGraphics
11646 [
11647 text "instanceClassName attribute EClassifier"
11648 fontSize 14
11649 fontName "Consolas"
11650 configuration "AutoFlippingLabel"
11651 model "six_pos"
11652 position "thead"
11653 ]
11654 ]
11655 edge
11656 [
11657 source 11
11658 target 1
11659 graphics
11660 [
11661 fill "#000000"
11662 targetArrow "standard"
11663 ]
11664 LabelGraphics
11665 [
11666 text "serializable attribute EDataType"
11667 fontSize 14
11668 fontName "Consolas"
11669 configuration "AutoFlippingLabel"
11670 model "six_pos"
11671 position "thead"
11672 ]
11673 ]
11674 edge
11675 [
11676 source 0
11677 target 10
11678 graphics
11679 [
11680 fill "#000000"
11681 targetArrow "standard"
11682 ]
11683 LabelGraphics
11684 [
11685 text "name attribute ENamedElement"
11686 fontSize 14
11687 fontName "Consolas"
11688 configuration "AutoFlippingLabel"
11689 model "six_pos"
11690 position "thead"
11691 ]
11692 ]
11693 edge
11694 [
11695 source 12
11696 target 6
11697 graphics
11698 [
11699 fill "#000000"
11700 targetArrow "standard"
11701 ]
11702 LabelGraphics
11703 [
11704 text "name attribute ENamedElement"
11705 fontSize 14
11706 fontName "Consolas"
11707 configuration "AutoFlippingLabel"
11708 model "six_pos"
11709 position "thead"
11710 ]
11711 ]
11712 edge
11713 [
11714 source 0
11715 target 9
11716 graphics
11717 [
11718 fill "#000000"
11719 targetArrow "standard"
11720 ]
11721 LabelGraphics
11722 [
11723 text "nsURI attribute EPackage"
11724 fontSize 14
11725 fontName "Consolas"
11726 configuration "AutoFlippingLabel"
11727 model "six_pos"
11728 position "thead"
11729 ]
11730 ]
11731 edge
11732 [
11733 source 12
11734 target 10
11735 graphics
11736 [
11737 fill "#000000"
11738 targetArrow "standard"
11739 ]
11740 LabelGraphics
11741 [
11742 text "nsURI attribute EPackage"
11743 fontSize 14
11744 fontName "Consolas"
11745 configuration "AutoFlippingLabel"
11746 model "six_pos"
11747 position "thead"
11748 ]
11749 ]
11750 edge
11751 [
11752 source 0
11753 target 8
11754 graphics
11755 [
11756 fill "#000000"
11757 targetArrow "standard"
11758 ]
11759 LabelGraphics
11760 [
11761 text "nsPrefix attribute EPackage"
11762 fontSize 14
11763 fontName "Consolas"
11764 configuration "AutoFlippingLabel"
11765 model "six_pos"
11766 position "thead"
11767 ]
11768 ]
11769 edge
11770 [
11771 source 12
11772 target 8
11773 graphics
11774 [
11775 fill "#000000"
11776 targetArrow "standard"
11777 ]
11778 LabelGraphics
11779 [
11780 text "nsPrefix attribute EPackage"
11781 fontSize 14
11782 fontName "Consolas"
11783 configuration "AutoFlippingLabel"
11784 model "six_pos"
11785 position "thead"
11786 ]
11787 ]
11788]
11789graph
11790[
11791 node
11792 [
11793 id 0
11794 graphics
11795 [
11796 w 254.10000000000002
11797 h 110
11798 type "rectangle"
11799 fill "#FFFFFF"
11800 fill2 "#FFFFFF"
11801 outline "#000000"
11802 ]
11803 LabelGraphics
11804 [
11805 text "o 1"
11806 outline "#000000"
11807 fill "#FFFFFF"
11808 fontSize 16
11809 fontName "Monospace"
11810 autoSizePolicy "node_width"
11811 anchor "t"
11812 borderDistance 0.0
11813 ]
11814 LabelGraphics
11815 [
11816 text "
11817 EModelElement class DefinedPart
11818 ENamedElement class DefinedPart
11819 EPackage class DefinedPart
11820 EModelElement class
11821 ENamedElement class
11822 EPackage class
11823 "
11824 fontSize 14
11825 fontName "Consolas"
11826 alignment "left"
11827 anchor "tl"
11828 borderDistance 6
11829 ]
11830 ]
11831
11832 node
11833 [
11834 id 1
11835 graphics
11836 [
11837 w 41.800000000000004
11838 h 26
11839 type "rectangle"
11840 fill "#FFFFFF"
11841 fill2 "#FFFFFF"
11842 outline "#000000"
11843 ]
11844 LabelGraphics
11845 [
11846 text "true"
11847 outline "#000000"
11848 fill "#FFFFFF"
11849 fontSize 16
11850 fontName "Monospace"
11851 autoSizePolicy "node_width"
11852 anchor "t"
11853 borderDistance 0.0
11854 ]
11855 LabelGraphics
11856 [
11857 text "
11858 "
11859 fontSize 14
11860 fontName "Consolas"
11861 alignment "left"
11862 anchor "tl"
11863 borderDistance 6
11864 ]
11865 ]
11866
11867 node
11868 [
11869 id 2
11870 graphics
11871 [
11872 w 50.6
11873 h 26
11874 type "rectangle"
11875 fill "#FFFFFF"
11876 fill2 "#FFFFFF"
11877 outline "#000000"
11878 ]
11879 LabelGraphics
11880 [
11881 text "false"
11882 outline "#000000"
11883 fill "#FFFFFF"
11884 fontSize 16
11885 fontName "Monospace"
11886 autoSizePolicy "node_width"
11887 anchor "t"
11888 borderDistance 0.0
11889 ]
11890 LabelGraphics
11891 [
11892 text "
11893 "
11894 fontSize 14
11895 fontName "Consolas"
11896 alignment "left"
11897 anchor "tl"
11898 borderDistance 6
11899 ]
11900 ]
11901
11902 node
11903 [
11904 id 3
11905 graphics
11906 [
11907 w 24.200000000000003
11908 h 26
11909 type "rectangle"
11910 fill "#FFFFFF"
11911 fill2 "#FFFFFF"
11912 outline "#000000"
11913 ]
11914 LabelGraphics
11915 [
11916 text "-1"
11917 outline "#000000"
11918 fill "#FFFFFF"
11919 fontSize 16
11920 fontName "Monospace"
11921 autoSizePolicy "node_width"
11922 anchor "t"
11923 borderDistance 0.0
11924 ]
11925 LabelGraphics
11926 [
11927 text "
11928 "
11929 fontSize 14
11930 fontName "Consolas"
11931 alignment "left"
11932 anchor "tl"
11933 borderDistance 6
11934 ]
11935 ]
11936
11937 node
11938 [
11939 id 4
11940 graphics
11941 [
11942 w 15.400000000000002
11943 h 26
11944 type "rectangle"
11945 fill "#FFFFFF"
11946 fill2 "#FFFFFF"
11947 outline "#000000"
11948 ]
11949 LabelGraphics
11950 [
11951 text "0"
11952 outline "#000000"
11953 fill "#FFFFFF"
11954 fontSize 16
11955 fontName "Monospace"
11956 autoSizePolicy "node_width"
11957 anchor "t"
11958 borderDistance 0.0
11959 ]
11960 LabelGraphics
11961 [
11962 text "
11963 "
11964 fontSize 14
11965 fontName "Consolas"
11966 alignment "left"
11967 anchor "tl"
11968 borderDistance 6
11969 ]
11970 ]
11971
11972 node
11973 [
11974 id 5
11975 graphics
11976 [
11977 w 15.400000000000002
11978 h 26
11979 type "rectangle"
11980 fill "#FFFFFF"
11981 fill2 "#FFFFFF"
11982 outline "#000000"
11983 ]
11984 LabelGraphics
11985 [
11986 text "1"
11987 outline "#000000"
11988 fill "#FFFFFF"
11989 fontSize 16
11990 fontName "Monospace"
11991 autoSizePolicy "node_width"
11992 anchor "t"
11993 borderDistance 0.0
11994 ]
11995 LabelGraphics
11996 [
11997 text "
11998 "
11999 fontSize 14
12000 fontName "Consolas"
12001 alignment "left"
12002 anchor "tl"
12003 borderDistance 6
12004 ]
12005 ]
12006
12007 node
12008 [
12009 id 6
12010 graphics
12011 [
12012 w 33.0
12013 h 26
12014 type "rectangle"
12015 fill "#FFFFFF"
12016 fill2 "#FFFFFF"
12017 outline "#000000"
12018 ]
12019 LabelGraphics
12020 [
12021 text ""A""
12022 outline "#000000"
12023 fill "#FFFFFF"
12024 fontSize 16
12025 fontName "Monospace"
12026 autoSizePolicy "node_width"
12027 anchor "t"
12028 borderDistance 0.0
12029 ]
12030 LabelGraphics
12031 [
12032 text "
12033 "
12034 fontSize 14
12035 fontName "Consolas"
12036 alignment "left"
12037 anchor "tl"
12038 borderDistance 6
12039 ]
12040 ]
12041
12042 node
12043 [
12044 id 7
12045 graphics
12046 [
12047 w 33.0
12048 h 26
12049 type "rectangle"
12050 fill "#FFFFFF"
12051 fill2 "#FFFFFF"
12052 outline "#000000"
12053 ]
12054 LabelGraphics
12055 [
12056 text ""B""
12057 outline "#000000"
12058 fill "#FFFFFF"
12059 fontSize 16
12060 fontName "Monospace"
12061 autoSizePolicy "node_width"
12062 anchor "t"
12063 borderDistance 0.0
12064 ]
12065 LabelGraphics
12066 [
12067 text "
12068 "
12069 fontSize 14
12070 fontName "Consolas"
12071 alignment "left"
12072 anchor "tl"
12073 borderDistance 6
12074 ]
12075 ]
12076
12077 node
12078 [
12079 id 8
12080 graphics
12081 [
12082 w 94.60000000000001
12083 h 26
12084 type "rectangle"
12085 fill "#FFFFFF"
12086 fill2 "#FFFFFF"
12087 outline "#000000"
12088 ]
12089 LabelGraphics
12090 [
12091 text ""nsPrefix""
12092 outline "#000000"
12093 fill "#FFFFFF"
12094 fontSize 16
12095 fontName "Monospace"
12096 autoSizePolicy "node_width"
12097 anchor "t"
12098 borderDistance 0.0
12099 ]
12100 LabelGraphics
12101 [
12102 text "
12103 "
12104 fontSize 14
12105 fontName "Consolas"
12106 alignment "left"
12107 anchor "tl"
12108 borderDistance 6
12109 ]
12110 ]
12111
12112 node
12113 [
12114 id 9
12115 graphics
12116 [
12117 w 68.2
12118 h 26
12119 type "rectangle"
12120 fill "#FFFFFF"
12121 fill2 "#FFFFFF"
12122 outline "#000000"
12123 ]
12124 LabelGraphics
12125 [
12126 text ""nsUri""
12127 outline "#000000"
12128 fill "#FFFFFF"
12129 fontSize 16
12130 fontName "Monospace"
12131 autoSizePolicy "node_width"
12132 anchor "t"
12133 borderDistance 0.0
12134 ]
12135 LabelGraphics
12136 [
12137 text "
12138 "
12139 fontSize 14
12140 fontName "Consolas"
12141 alignment "left"
12142 anchor "tl"
12143 borderDistance 6
12144 ]
12145 ]
12146
12147 node
12148 [
12149 id 10
12150 graphics
12151 [
12152 w 121.00000000000001
12153 h 26
12154 type "rectangle"
12155 fill "#FFFFFF"
12156 fill2 "#FFFFFF"
12157 outline "#000000"
12158 ]
12159 LabelGraphics
12160 [
12161 text ""packageName""
12162 outline "#000000"
12163 fill "#FFFFFF"
12164 fontSize 16
12165 fontName "Monospace"
12166 autoSizePolicy "node_width"
12167 anchor "t"
12168 borderDistance 0.0
12169 ]
12170 LabelGraphics
12171 [
12172 text "
12173 "
12174 fontSize 14
12175 fontName "Consolas"
12176 alignment "left"
12177 anchor "tl"
12178 borderDistance 6
12179 ]
12180 ]
12181
12182 node
12183 [
12184 id 11
12185 graphics
12186 [
12187 w 269.5
12188 h 110
12189 type "rectangle"
12190 fill "#FFFFFF"
12191 fill2 "#FFFFFF"
12192 outline "#000000"
12193 ]
12194 LabelGraphics
12195 [
12196 text "null"
12197 outline "#000000"
12198 fill "#FFFFFF"
12199 fontSize 16
12200 fontName "Monospace"
12201 autoSizePolicy "node_width"
12202 anchor "t"
12203 borderDistance 0.0
12204 ]
12205 LabelGraphics
12206 [
12207 text "
12208 EClass class
12209 EClassifier class
12210 EModelElement class
12211 ENamedElement class
12212 EModelElement class UndefinedPart
12213 ENamedElement class UndefinedPart
12214 "
12215 fontSize 14
12216 fontName "Consolas"
12217 alignment "left"
12218 anchor "tl"
12219 borderDistance 6
12220 ]
12221 ]
12222
12223 node
12224 [
12225 id 12
12226 graphics
12227 [
12228 w 269.5
12229 h 110
12230 type "rectangle"
12231 fill "#FFFFFF"
12232 fill2 "#FFFFFF"
12233 outline "#000000"
12234 ]
12235 LabelGraphics
12236 [
12237 text "null"
12238 outline "#000000"
12239 fill "#FFFFFF"
12240 fontSize 16
12241 fontName "Monospace"
12242 autoSizePolicy "node_width"
12243 anchor "t"
12244 borderDistance 0.0
12245 ]
12246 LabelGraphics
12247 [
12248 text "
12249 EModelElement class
12250 ENamedElement class
12251 EPackage class
12252 EModelElement class UndefinedPart
12253 ENamedElement class UndefinedPart
12254 EPackage class UndefinedPart
12255 "
12256 fontSize 14
12257 fontName "Consolas"
12258 alignment "left"
12259 anchor "tl"
12260 borderDistance 6
12261 ]
12262 ]
12263
12264 node
12265 [
12266 id 13
12267 graphics
12268 [
12269 w 269.5
12270 h 110
12271 type "rectangle"
12272 fill "#FFFFFF"
12273 fill2 "#FFFFFF"
12274 outline "#000000"
12275 ]
12276 LabelGraphics
12277 [
12278 text "null"
12279 outline "#000000"
12280 fill "#FFFFFF"
12281 fontSize 16
12282 fontName "Monospace"
12283 autoSizePolicy "node_width"
12284 anchor "t"
12285 borderDistance 0.0
12286 ]
12287 LabelGraphics
12288 [
12289 text "
12290 EModelElement class
12291 ENamedElement class
12292 EPackage class
12293 EModelElement class UndefinedPart
12294 ENamedElement class UndefinedPart
12295 EPackage class UndefinedPart
12296 "
12297 fontSize 14
12298 fontName "Consolas"
12299 alignment "left"
12300 anchor "tl"
12301 borderDistance 6
12302 ]
12303 ]
12304
12305 node
12306 [
12307 id 14
12308 graphics
12309 [
12310 w 269.5
12311 h 96
12312 type "rectangle"
12313 fill "#FFFFFF"
12314 fill2 "#FFFFFF"
12315 outline "#000000"
12316 ]
12317 LabelGraphics
12318 [
12319 text "null"
12320 outline "#000000"
12321 fill "#FFFFFF"
12322 fontSize 16
12323 fontName "Monospace"
12324 autoSizePolicy "node_width"
12325 anchor "t"
12326 borderDistance 0.0
12327 ]
12328 LabelGraphics
12329 [
12330 text "
12331 EModelElement class
12332 ENamedElement class
12333 ETypeParameter class
12334 EModelElement class UndefinedPart
12335 ENamedElement class UndefinedPart
12336 "
12337 fontSize 14
12338 fontName "Consolas"
12339 alignment "left"
12340 anchor "tl"
12341 borderDistance 6
12342 ]
12343 ]
12344
12345 node
12346 [
12347 id 15
12348 graphics
12349 [
12350 w 269.5
12351 h 110
12352 type "rectangle"
12353 fill "#FFFFFF"
12354 fill2 "#FFFFFF"
12355 outline "#000000"
12356 ]
12357 LabelGraphics
12358 [
12359 text "null"
12360 outline "#000000"
12361 fill "#FFFFFF"
12362 fontSize 16
12363 fontName "Monospace"
12364 autoSizePolicy "node_width"
12365 anchor "t"
12366 borderDistance 0.0
12367 ]
12368 LabelGraphics
12369 [
12370 text "
12371 EClass class
12372 EClassifier class
12373 EModelElement class
12374 ENamedElement class
12375 EModelElement class UndefinedPart
12376 ENamedElement class UndefinedPart
12377 "
12378 fontSize 14
12379 fontName "Consolas"
12380 alignment "left"
12381 anchor "tl"
12382 borderDistance 6
12383 ]
12384 ]
12385
12386 node
12387 [
12388 id 16
12389 graphics
12390 [
12391 w 112.2
12392 h 26
12393 type "rectangle"
12394 fill "#FFFFFF"
12395 fill2 "#FFFFFF"
12396 outline "#000000"
12397 ]
12398 LabelGraphics
12399 [
12400 text "New Integers"
12401 outline "#000000"
12402 fill "#FFFFFF"
12403 fontSize 16
12404 fontName "Monospace"
12405 autoSizePolicy "node_width"
12406 anchor "t"
12407 borderDistance 0.0
12408 ]
12409 LabelGraphics
12410 [
12411 text "
12412 "
12413 fontSize 14
12414 fontName "Consolas"
12415 alignment "left"
12416 anchor "tl"
12417 borderDistance 6
12418 ]
12419 ]
12420
12421 node
12422 [
12423 id 17
12424 graphics
12425 [
12426 w 85.80000000000001
12427 h 26
12428 type "rectangle"
12429 fill "#FFFFFF"
12430 fill2 "#FFFFFF"
12431 outline "#000000"
12432 ]
12433 LabelGraphics
12434 [
12435 text "New Reals"
12436 outline "#000000"
12437 fill "#FFFFFF"
12438 fontSize 16
12439 fontName "Monospace"
12440 autoSizePolicy "node_width"
12441 anchor "t"
12442 borderDistance 0.0
12443 ]
12444 LabelGraphics
12445 [
12446 text "
12447 "
12448 fontSize 14
12449 fontName "Consolas"
12450 alignment "left"
12451 anchor "tl"
12452 borderDistance 6
12453 ]
12454 ]
12455
12456 node
12457 [
12458 id 18
12459 graphics
12460 [
12461 w 103.4
12462 h 26
12463 type "rectangle"
12464 fill "#FFFFFF"
12465 fill2 "#FFFFFF"
12466 outline "#000000"
12467 ]
12468 LabelGraphics
12469 [
12470 text "New Strings"
12471 outline "#000000"
12472 fill "#FFFFFF"
12473 fontSize 16
12474 fontName "Monospace"
12475 autoSizePolicy "node_width"
12476 anchor "t"
12477 borderDistance 0.0
12478 ]
12479 LabelGraphics
12480 [
12481 text "
12482 "
12483 fontSize 14
12484 fontName "Consolas"
12485 alignment "left"
12486 anchor "tl"
12487 borderDistance 6
12488 ]
12489 ]
12490
12491 node
12492 [
12493 id 19
12494 graphics
12495 [
12496 w 103.4
12497 h 26
12498 type "rectangle"
12499 fill "#FFFFFF"
12500 fill2 "#FFFFFF"
12501 outline "#000000"
12502 ]
12503 LabelGraphics
12504 [
12505 text "New Objects"
12506 outline "#000000"
12507 fill "#FFFFFF"
12508 fontSize 16
12509 fontName "Monospace"
12510 autoSizePolicy "node_width"
12511 anchor "t"
12512 borderDistance 0.0
12513 ]
12514 LabelGraphics
12515 [
12516 text "
12517 "
12518 fontSize 14
12519 fontName "Consolas"
12520 alignment "left"
12521 anchor "tl"
12522 borderDistance 6
12523 ]
12524 ]
12525 edge
12526 [
12527 source 11
12528 target 0
12529 graphics
12530 [
12531 fill "#000000"
12532 targetArrow "standard"
12533 ]
12534 LabelGraphics
12535 [
12536 text "ePackage reference EClassifier"
12537 fontSize 14
12538 fontName "Consolas"
12539 configuration "AutoFlippingLabel"
12540 model "six_pos"
12541 position "thead"
12542 ]
12543 ]
12544 edge
12545 [
12546 source 15
12547 target 13
12548 graphics
12549 [
12550 fill "#000000"
12551 targetArrow "standard"
12552 ]
12553 LabelGraphics
12554 [
12555 text "ePackage reference EClassifier"
12556 fontSize 14
12557 fontName "Consolas"
12558 configuration "AutoFlippingLabel"
12559 model "six_pos"
12560 position "thead"
12561 ]
12562 ]
12563 edge
12564 [
12565 source 11
12566 target 14
12567 graphics
12568 [
12569 fill "#000000"
12570 width 3
12571 targetArrow "standard"
12572 ]
12573 LabelGraphics
12574 [
12575 text "eTypeParameters reference EClassifier"
12576 fontSize 14
12577 fontName "Consolas"
12578 configuration "AutoFlippingLabel"
12579 model "six_pos"
12580 position "thead"
12581 ]
12582 ]
12583 edge
12584 [
12585 source 0
12586 target 11
12587 graphics
12588 [
12589 fill "#000000"
12590 width 3
12591 targetArrow "standard"
12592 ]
12593 LabelGraphics
12594 [
12595 text "eClassifiers reference EPackage"
12596 fontSize 14
12597 fontName "Consolas"
12598 configuration "AutoFlippingLabel"
12599 model "six_pos"
12600 position "thead"
12601 ]
12602 ]
12603 edge
12604 [
12605 source 13
12606 target 15
12607 graphics
12608 [
12609 fill "#000000"
12610 width 3
12611 targetArrow "standard"
12612 ]
12613 LabelGraphics
12614 [
12615 text "eClassifiers reference EPackage"
12616 fontSize 14
12617 fontName "Consolas"
12618 configuration "AutoFlippingLabel"
12619 model "six_pos"
12620 position "thead"
12621 ]
12622 ]
12623 edge
12624 [
12625 source 0
12626 target 12
12627 graphics
12628 [
12629 fill "#000000"
12630 width 3
12631 targetArrow "standard"
12632 ]
12633 LabelGraphics
12634 [
12635 text "eSubpackages reference EPackage"
12636 fontSize 14
12637 fontName "Consolas"
12638 configuration "AutoFlippingLabel"
12639 model "six_pos"
12640 position "thead"
12641 ]
12642 ]
12643 edge
12644 [
12645 source 12
12646 target 13
12647 graphics
12648 [
12649 fill "#000000"
12650 width 3
12651 targetArrow "standard"
12652 ]
12653 LabelGraphics
12654 [
12655 text "eSubpackages reference EPackage"
12656 fontSize 14
12657 fontName "Consolas"
12658 configuration "AutoFlippingLabel"
12659 model "six_pos"
12660 position "thead"
12661 ]
12662 ]
12663 edge
12664 [
12665 source 12
12666 target 0
12667 graphics
12668 [
12669 fill "#000000"
12670 targetArrow "standard"
12671 ]
12672 LabelGraphics
12673 [
12674 text "eSuperPackage reference EPackage"
12675 fontSize 14
12676 fontName "Consolas"
12677 configuration "AutoFlippingLabel"
12678 model "six_pos"
12679 position "thead"
12680 ]
12681 ]
12682 edge
12683 [
12684 source 13
12685 target 12
12686 graphics
12687 [
12688 fill "#000000"
12689 targetArrow "standard"
12690 ]
12691 LabelGraphics
12692 [
12693 text "eSuperPackage reference EPackage"
12694 fontSize 14
12695 fontName "Consolas"
12696 configuration "AutoFlippingLabel"
12697 model "six_pos"
12698 position "thead"
12699 ]
12700 ]
12701 edge
12702 [
12703 source 11
12704 target 1
12705 graphics
12706 [
12707 fill "#000000"
12708 targetArrow "standard"
12709 ]
12710 LabelGraphics
12711 [
12712 text "abstract attribute EClass"
12713 fontSize 14
12714 fontName "Consolas"
12715 configuration "AutoFlippingLabel"
12716 model "six_pos"
12717 position "thead"
12718 ]
12719 ]
12720 edge
12721 [
12722 source 11
12723 target 2
12724 graphics
12725 [
12726 fill "#000000"
12727 targetArrow "standard"
12728 ]
12729 LabelGraphics
12730 [
12731 text "interface attribute EClass"
12732 fontSize 14
12733 fontName "Consolas"
12734 configuration "AutoFlippingLabel"
12735 model "six_pos"
12736 position "thead"
12737 ]
12738 ]
12739 edge
12740 [
12741 source 11
12742 target 8
12743 graphics
12744 [
12745 fill "#000000"
12746 targetArrow "standard"
12747 ]
12748 LabelGraphics
12749 [
12750 text "instanceTypeName attribute EClassifier"
12751 fontSize 14
12752 fontName "Consolas"
12753 configuration "AutoFlippingLabel"
12754 model "six_pos"
12755 position "thead"
12756 ]
12757 ]
12758 edge
12759 [
12760 source 0
12761 target 10
12762 graphics
12763 [
12764 fill "#000000"
12765 targetArrow "standard"
12766 ]
12767 LabelGraphics
12768 [
12769 text "name attribute ENamedElement"
12770 fontSize 14
12771 fontName "Consolas"
12772 configuration "AutoFlippingLabel"
12773 model "six_pos"
12774 position "thead"
12775 ]
12776 ]
12777 edge
12778 [
12779 source 13
12780 target 8
12781 graphics
12782 [
12783 fill "#000000"
12784 targetArrow "standard"
12785 ]
12786 LabelGraphics
12787 [
12788 text "name attribute ENamedElement"
12789 fontSize 14
12790 fontName "Consolas"
12791 configuration "AutoFlippingLabel"
12792 model "six_pos"
12793 position "thead"
12794 ]
12795 ]
12796 edge
12797 [
12798 source 0
12799 target 9
12800 graphics
12801 [
12802 fill "#000000"
12803 targetArrow "standard"
12804 ]
12805 LabelGraphics
12806 [
12807 text "nsURI attribute EPackage"
12808 fontSize 14
12809 fontName "Consolas"
12810 configuration "AutoFlippingLabel"
12811 model "six_pos"
12812 position "thead"
12813 ]
12814 ]
12815 edge
12816 [
12817 source 13
12818 target 7
12819 graphics
12820 [
12821 fill "#000000"
12822 targetArrow "standard"
12823 ]
12824 LabelGraphics
12825 [
12826 text "nsURI attribute EPackage"
12827 fontSize 14
12828 fontName "Consolas"
12829 configuration "AutoFlippingLabel"
12830 model "six_pos"
12831 position "thead"
12832 ]
12833 ]
12834 edge
12835 [
12836 source 12
12837 target 7
12838 graphics
12839 [
12840 fill "#000000"
12841 targetArrow "standard"
12842 ]
12843 LabelGraphics
12844 [
12845 text "nsURI attribute EPackage"
12846 fontSize 14
12847 fontName "Consolas"
12848 configuration "AutoFlippingLabel"
12849 model "six_pos"
12850 position "thead"
12851 ]
12852 ]
12853 edge
12854 [
12855 source 0
12856 target 8
12857 graphics
12858 [
12859 fill "#000000"
12860 targetArrow "standard"
12861 ]
12862 LabelGraphics
12863 [
12864 text "nsPrefix attribute EPackage"
12865 fontSize 14
12866 fontName "Consolas"
12867 configuration "AutoFlippingLabel"
12868 model "six_pos"
12869 position "thead"
12870 ]
12871 ]
12872]
12873graph
12874[
12875 node
12876 [
12877 id 0
12878 graphics
12879 [
12880 w 226.60000000000002
12881 h 40
12882 type "rectangle"
12883 fill "#FFFFFF"
12884 fill2 "#FFFFFF"
12885 outline "#000000"
12886 ]
12887 LabelGraphics
12888 [
12889 text "Root literal FunctionType"
12890 outline "#000000"
12891 fill "#FFFFFF"
12892 fontSize 16
12893 fontName "Monospace"
12894 autoSizePolicy "node_width"
12895 anchor "t"
12896 borderDistance 0.0
12897 ]
12898 LabelGraphics
12899 [
12900 text "
12901 FunctionType enum
12902 "
12903 fontSize 14
12904 fontName "Consolas"
12905 alignment "left"
12906 anchor "tl"
12907 borderDistance 6
12908 ]
12909 ]
12910
12911 node
12912 [
12913 id 1
12914 graphics
12915 [
12916 w 297.0
12917 h 40
12918 type "rectangle"
12919 fill "#FFFFFF"
12920 fill2 "#FFFFFF"
12921 outline "#000000"
12922 ]
12923 LabelGraphics
12924 [
12925 text "Intermediate literal FunctionType"
12926 outline "#000000"
12927 fill "#FFFFFF"
12928 fontSize 16
12929 fontName "Monospace"
12930 autoSizePolicy "node_width"
12931 anchor "t"
12932 borderDistance 0.0
12933 ]
12934 LabelGraphics
12935 [
12936 text "
12937 FunctionType enum
12938 "
12939 fontSize 14
12940 fontName "Consolas"
12941 alignment "left"
12942 anchor "tl"
12943 borderDistance 6
12944 ]
12945 ]
12946
12947 node
12948 [
12949 id 2
12950 graphics
12951 [
12952 w 226.60000000000002
12953 h 40
12954 type "rectangle"
12955 fill "#FFFFFF"
12956 fill2 "#FFFFFF"
12957 outline "#000000"
12958 ]
12959 LabelGraphics
12960 [
12961 text "Leaf literal FunctionType"
12962 outline "#000000"
12963 fill "#FFFFFF"
12964 fontSize 16
12965 fontName "Monospace"
12966 autoSizePolicy "node_width"
12967 anchor "t"
12968 borderDistance 0.0
12969 ]
12970 LabelGraphics
12971 [
12972 text "
12973 FunctionType enum
12974 "
12975 fontSize 14
12976 fontName "Consolas"
12977 alignment "left"
12978 anchor "tl"
12979 borderDistance 6
12980 ]
12981 ]
12982
12983 node
12984 [
12985 id 3
12986 graphics
12987 [
12988 w 361.90000000000003
12989 h 54
12990 type "rectangle"
12991 fill "#FFFFFF"
12992 fill2 "#FFFFFF"
12993 outline "#000000"
12994 ]
12995 LabelGraphics
12996 [
12997 text "o 1"
12998 outline "#000000"
12999 fill "#FFFFFF"
13000 fontSize 16
13001 fontName "Monospace"
13002 autoSizePolicy "node_width"
13003 anchor "t"
13004 borderDistance 0.0
13005 ]
13006 LabelGraphics
13007 [
13008 text "
13009 FunctionalArchitectureModel class DefinedPart
13010 FunctionalArchitectureModel class
13011 "
13012 fontSize 14
13013 fontName "Consolas"
13014 alignment "left"
13015 anchor "tl"
13016 borderDistance 6
13017 ]
13018 ]
13019
13020 node
13021 [
13022 id 4
13023 graphics
13024 [
13025 w 41.800000000000004
13026 h 26
13027 type "rectangle"
13028 fill "#FFFFFF"
13029 fill2 "#FFFFFF"
13030 outline "#000000"
13031 ]
13032 LabelGraphics
13033 [
13034 text "true"
13035 outline "#000000"
13036 fill "#FFFFFF"
13037 fontSize 16
13038 fontName "Monospace"
13039 autoSizePolicy "node_width"
13040 anchor "t"
13041 borderDistance 0.0
13042 ]
13043 LabelGraphics
13044 [
13045 text "
13046 "
13047 fontSize 14
13048 fontName "Consolas"
13049 alignment "left"
13050 anchor "tl"
13051 borderDistance 6
13052 ]
13053 ]
13054
13055 node
13056 [
13057 id 5
13058 graphics
13059 [
13060 w 50.6
13061 h 26
13062 type "rectangle"
13063 fill "#FFFFFF"
13064 fill2 "#FFFFFF"
13065 outline "#000000"
13066 ]
13067 LabelGraphics
13068 [
13069 text "false"
13070 outline "#000000"
13071 fill "#FFFFFF"
13072 fontSize 16
13073 fontName "Monospace"
13074 autoSizePolicy "node_width"
13075 anchor "t"
13076 borderDistance 0.0
13077 ]
13078 LabelGraphics
13079 [
13080 text "
13081 "
13082 fontSize 14
13083 fontName "Consolas"
13084 alignment "left"
13085 anchor "tl"
13086 borderDistance 6
13087 ]
13088 ]
13089
13090 node
13091 [
13092 id 6
13093 graphics
13094 [
13095 w 192.50000000000003
13096 h 54
13097 type "rectangle"
13098 fill "#FFFFFF"
13099 fill2 "#FFFFFF"
13100 outline "#000000"
13101 ]
13102 LabelGraphics
13103 [
13104 text "null"
13105 outline "#000000"
13106 fill "#FFFFFF"
13107 fontSize 16
13108 fontName "Monospace"
13109 autoSizePolicy "node_width"
13110 anchor "t"
13111 borderDistance 0.0
13112 ]
13113 LabelGraphics
13114 [
13115 text "
13116 FunctionalElement class
13117 Function class
13118 "
13119 fontSize 14
13120 fontName "Consolas"
13121 alignment "left"
13122 anchor "tl"
13123 borderDistance 6
13124 ]
13125 ]
13126
13127 node
13128 [
13129 id 7
13130 graphics
13131 [
13132 w 112.2
13133 h 26
13134 type "rectangle"
13135 fill "#FFFFFF"
13136 fill2 "#FFFFFF"
13137 outline "#000000"
13138 ]
13139 LabelGraphics
13140 [
13141 text "New Integers"
13142 outline "#000000"
13143 fill "#FFFFFF"
13144 fontSize 16
13145 fontName "Monospace"
13146 autoSizePolicy "node_width"
13147 anchor "t"
13148 borderDistance 0.0
13149 ]
13150 LabelGraphics
13151 [
13152 text "
13153 "
13154 fontSize 14
13155 fontName "Consolas"
13156 alignment "left"
13157 anchor "tl"
13158 borderDistance 6
13159 ]
13160 ]
13161
13162 node
13163 [
13164 id 8
13165 graphics
13166 [
13167 w 85.80000000000001
13168 h 26
13169 type "rectangle"
13170 fill "#FFFFFF"
13171 fill2 "#FFFFFF"
13172 outline "#000000"
13173 ]
13174 LabelGraphics
13175 [
13176 text "New Reals"
13177 outline "#000000"
13178 fill "#FFFFFF"
13179 fontSize 16
13180 fontName "Monospace"
13181 autoSizePolicy "node_width"
13182 anchor "t"
13183 borderDistance 0.0
13184 ]
13185 LabelGraphics
13186 [
13187 text "
13188 "
13189 fontSize 14
13190 fontName "Consolas"
13191 alignment "left"
13192 anchor "tl"
13193 borderDistance 6
13194 ]
13195 ]
13196
13197 node
13198 [
13199 id 9
13200 graphics
13201 [
13202 w 103.4
13203 h 26
13204 type "rectangle"
13205 fill "#FFFFFF"
13206 fill2 "#FFFFFF"
13207 outline "#000000"
13208 ]
13209 LabelGraphics
13210 [
13211 text "New Strings"
13212 outline "#000000"
13213 fill "#FFFFFF"
13214 fontSize 16
13215 fontName "Monospace"
13216 autoSizePolicy "node_width"
13217 anchor "t"
13218 borderDistance 0.0
13219 ]
13220 LabelGraphics
13221 [
13222 text "
13223 "
13224 fontSize 14
13225 fontName "Consolas"
13226 alignment "left"
13227 anchor "tl"
13228 borderDistance 6
13229 ]
13230 ]
13231
13232 node
13233 [
13234 id 10
13235 graphics
13236 [
13237 w 103.4
13238 h 26
13239 type "rectangle"
13240 fill "#FFFFFF"
13241 fill2 "#FFFFFF"
13242 outline "#000000"
13243 ]
13244 LabelGraphics
13245 [
13246 text "New Objects"
13247 outline "#000000"
13248 fill "#FFFFFF"
13249 fontSize 16
13250 fontName "Monospace"
13251 autoSizePolicy "node_width"
13252 anchor "t"
13253 borderDistance 0.0
13254 ]
13255 LabelGraphics
13256 [
13257 text "
13258 "
13259 fontSize 14
13260 fontName "Consolas"
13261 alignment "left"
13262 anchor "tl"
13263 borderDistance 6
13264 ]
13265 ]
13266 edge
13267 [
13268 source 6
13269 target 3
13270 graphics
13271 [
13272 fill "#000000"
13273 targetArrow "standard"
13274 ]
13275 LabelGraphics
13276 [
13277 text "model reference FunctionalElement"
13278 fontSize 14
13279 fontName "Consolas"
13280 configuration "AutoFlippingLabel"
13281 model "six_pos"
13282 position "thead"
13283 ]
13284 ]
13285 edge
13286 [
13287 source 3
13288 target 6
13289 graphics
13290 [
13291 fill "#000000"
13292 width 3
13293 targetArrow "standard"
13294 ]
13295 LabelGraphics
13296 [
13297 text "rootElements reference FunctionalArchitectureModel"
13298 fontSize 14
13299 fontName "Consolas"
13300 configuration "AutoFlippingLabel"
13301 model "six_pos"
13302 position "thead"
13303 ]
13304 ]
13305 edge
13306 [
13307 source 6
13308 target 0
13309 graphics
13310 [
13311 fill "#000000"
13312 targetArrow "standard"
13313 ]
13314 LabelGraphics
13315 [
13316 text "type attribute Function"
13317 fontSize 14
13318 fontName "Consolas"
13319 configuration "AutoFlippingLabel"
13320 model "six_pos"
13321 position "thead"
13322 ]
13323 ]
13324]
13325graph
13326[
13327 node
13328 [
13329 id 0
13330 graphics
13331 [
13332 w 254.10000000000002
13333 h 110
13334 type "rectangle"
13335 fill "#FFFFFF"
13336 fill2 "#FFFFFF"
13337 outline "#000000"
13338 ]
13339 LabelGraphics
13340 [
13341 text "o 1"
13342 outline "#000000"
13343 fill "#FFFFFF"
13344 fontSize 16
13345 fontName "Monospace"
13346 autoSizePolicy "node_width"
13347 anchor "t"
13348 borderDistance 0.0
13349 ]
13350 LabelGraphics
13351 [
13352 text "
13353 EModelElement class DefinedPart
13354 ENamedElement class DefinedPart
13355 EPackage class DefinedPart
13356 EModelElement class
13357 ENamedElement class
13358 EPackage class
13359 "
13360 fontSize 14
13361 fontName "Consolas"
13362 alignment "left"
13363 anchor "tl"
13364 borderDistance 6
13365 ]
13366 ]
13367
13368 node
13369 [
13370 id 1
13371 graphics
13372 [
13373 w 41.800000000000004
13374 h 26
13375 type "rectangle"
13376 fill "#FFFFFF"
13377 fill2 "#FFFFFF"
13378 outline "#000000"
13379 ]
13380 LabelGraphics
13381 [
13382 text "true"
13383 outline "#000000"
13384 fill "#FFFFFF"
13385 fontSize 16
13386 fontName "Monospace"
13387 autoSizePolicy "node_width"
13388 anchor "t"
13389 borderDistance 0.0
13390 ]
13391 LabelGraphics
13392 [
13393 text "
13394 "
13395 fontSize 14
13396 fontName "Consolas"
13397 alignment "left"
13398 anchor "tl"
13399 borderDistance 6
13400 ]
13401 ]
13402
13403 node
13404 [
13405 id 2
13406 graphics
13407 [
13408 w 50.6
13409 h 26
13410 type "rectangle"
13411 fill "#FFFFFF"
13412 fill2 "#FFFFFF"
13413 outline "#000000"
13414 ]
13415 LabelGraphics
13416 [
13417 text "false"
13418 outline "#000000"
13419 fill "#FFFFFF"
13420 fontSize 16
13421 fontName "Monospace"
13422 autoSizePolicy "node_width"
13423 anchor "t"
13424 borderDistance 0.0
13425 ]
13426 LabelGraphics
13427 [
13428 text "
13429 "
13430 fontSize 14
13431 fontName "Consolas"
13432 alignment "left"
13433 anchor "tl"
13434 borderDistance 6
13435 ]
13436 ]
13437
13438 node
13439 [
13440 id 3
13441 graphics
13442 [
13443 w 24.200000000000003
13444 h 26
13445 type "rectangle"
13446 fill "#FFFFFF"
13447 fill2 "#FFFFFF"
13448 outline "#000000"
13449 ]
13450 LabelGraphics
13451 [
13452 text "-1"
13453 outline "#000000"
13454 fill "#FFFFFF"
13455 fontSize 16
13456 fontName "Monospace"
13457 autoSizePolicy "node_width"
13458 anchor "t"
13459 borderDistance 0.0
13460 ]
13461 LabelGraphics
13462 [
13463 text "
13464 "
13465 fontSize 14
13466 fontName "Consolas"
13467 alignment "left"
13468 anchor "tl"
13469 borderDistance 6
13470 ]
13471 ]
13472
13473 node
13474 [
13475 id 4
13476 graphics
13477 [
13478 w 15.400000000000002
13479 h 26
13480 type "rectangle"
13481 fill "#FFFFFF"
13482 fill2 "#FFFFFF"
13483 outline "#000000"
13484 ]
13485 LabelGraphics
13486 [
13487 text "0"
13488 outline "#000000"
13489 fill "#FFFFFF"
13490 fontSize 16
13491 fontName "Monospace"
13492 autoSizePolicy "node_width"
13493 anchor "t"
13494 borderDistance 0.0
13495 ]
13496 LabelGraphics
13497 [
13498 text "
13499 "
13500 fontSize 14
13501 fontName "Consolas"
13502 alignment "left"
13503 anchor "tl"
13504 borderDistance 6
13505 ]
13506 ]
13507
13508 node
13509 [
13510 id 5
13511 graphics
13512 [
13513 w 15.400000000000002
13514 h 26
13515 type "rectangle"
13516 fill "#FFFFFF"
13517 fill2 "#FFFFFF"
13518 outline "#000000"
13519 ]
13520 LabelGraphics
13521 [
13522 text "1"
13523 outline "#000000"
13524 fill "#FFFFFF"
13525 fontSize 16
13526 fontName "Monospace"
13527 autoSizePolicy "node_width"
13528 anchor "t"
13529 borderDistance 0.0
13530 ]
13531 LabelGraphics
13532 [
13533 text "
13534 "
13535 fontSize 14
13536 fontName "Consolas"
13537 alignment "left"
13538 anchor "tl"
13539 borderDistance 6
13540 ]
13541 ]
13542
13543 node
13544 [
13545 id 6
13546 graphics
13547 [
13548 w 33.0
13549 h 26
13550 type "rectangle"
13551 fill "#FFFFFF"
13552 fill2 "#FFFFFF"
13553 outline "#000000"
13554 ]
13555 LabelGraphics
13556 [
13557 text ""A""
13558 outline "#000000"
13559 fill "#FFFFFF"
13560 fontSize 16
13561 fontName "Monospace"
13562 autoSizePolicy "node_width"
13563 anchor "t"
13564 borderDistance 0.0
13565 ]
13566 LabelGraphics
13567 [
13568 text "
13569 "
13570 fontSize 14
13571 fontName "Consolas"
13572 alignment "left"
13573 anchor "tl"
13574 borderDistance 6
13575 ]
13576 ]
13577
13578 node
13579 [
13580 id 7
13581 graphics
13582 [
13583 w 33.0
13584 h 26
13585 type "rectangle"
13586 fill "#FFFFFF"
13587 fill2 "#FFFFFF"
13588 outline "#000000"
13589 ]
13590 LabelGraphics
13591 [
13592 text ""B""
13593 outline "#000000"
13594 fill "#FFFFFF"
13595 fontSize 16
13596 fontName "Monospace"
13597 autoSizePolicy "node_width"
13598 anchor "t"
13599 borderDistance 0.0
13600 ]
13601 LabelGraphics
13602 [
13603 text "
13604 "
13605 fontSize 14
13606 fontName "Consolas"
13607 alignment "left"
13608 anchor "tl"
13609 borderDistance 6
13610 ]
13611 ]
13612
13613 node
13614 [
13615 id 8
13616 graphics
13617 [
13618 w 94.60000000000001
13619 h 26
13620 type "rectangle"
13621 fill "#FFFFFF"
13622 fill2 "#FFFFFF"
13623 outline "#000000"
13624 ]
13625 LabelGraphics
13626 [
13627 text ""nsPrefix""
13628 outline "#000000"
13629 fill "#FFFFFF"
13630 fontSize 16
13631 fontName "Monospace"
13632 autoSizePolicy "node_width"
13633 anchor "t"
13634 borderDistance 0.0
13635 ]
13636 LabelGraphics
13637 [
13638 text "
13639 "
13640 fontSize 14
13641 fontName "Consolas"
13642 alignment "left"
13643 anchor "tl"
13644 borderDistance 6
13645 ]
13646 ]
13647
13648 node
13649 [
13650 id 9
13651 graphics
13652 [
13653 w 68.2
13654 h 26
13655 type "rectangle"
13656 fill "#FFFFFF"
13657 fill2 "#FFFFFF"
13658 outline "#000000"
13659 ]
13660 LabelGraphics
13661 [
13662 text ""nsUri""
13663 outline "#000000"
13664 fill "#FFFFFF"
13665 fontSize 16
13666 fontName "Monospace"
13667 autoSizePolicy "node_width"
13668 anchor "t"
13669 borderDistance 0.0
13670 ]
13671 LabelGraphics
13672 [
13673 text "
13674 "
13675 fontSize 14
13676 fontName "Consolas"
13677 alignment "left"
13678 anchor "tl"
13679 borderDistance 6
13680 ]
13681 ]
13682
13683 node
13684 [
13685 id 10
13686 graphics
13687 [
13688 w 121.00000000000001
13689 h 26
13690 type "rectangle"
13691 fill "#FFFFFF"
13692 fill2 "#FFFFFF"
13693 outline "#000000"
13694 ]
13695 LabelGraphics
13696 [
13697 text ""packageName""
13698 outline "#000000"
13699 fill "#FFFFFF"
13700 fontSize 16
13701 fontName "Monospace"
13702 autoSizePolicy "node_width"
13703 anchor "t"
13704 borderDistance 0.0
13705 ]
13706 LabelGraphics
13707 [
13708 text "
13709 "
13710 fontSize 14
13711 fontName "Consolas"
13712 alignment "left"
13713 anchor "tl"
13714 borderDistance 6
13715 ]
13716 ]
13717
13718 node
13719 [
13720 id 11
13721 graphics
13722 [
13723 w 269.5
13724 h 110
13725 type "rectangle"
13726 fill "#FFFFFF"
13727 fill2 "#FFFFFF"
13728 outline "#000000"
13729 ]
13730 LabelGraphics
13731 [
13732 text "null"
13733 outline "#000000"
13734 fill "#FFFFFF"
13735 fontSize 16
13736 fontName "Monospace"
13737 autoSizePolicy "node_width"
13738 anchor "t"
13739 borderDistance 0.0
13740 ]
13741 LabelGraphics
13742 [
13743 text "
13744 EClass class
13745 EClassifier class
13746 EModelElement class
13747 ENamedElement class
13748 EModelElement class UndefinedPart
13749 ENamedElement class UndefinedPart
13750 "
13751 fontSize 14
13752 fontName "Consolas"
13753 alignment "left"
13754 anchor "tl"
13755 borderDistance 6
13756 ]
13757 ]
13758
13759 node
13760 [
13761 id 12
13762 graphics
13763 [
13764 w 269.5
13765 h 110
13766 type "rectangle"
13767 fill "#FFFFFF"
13768 fill2 "#FFFFFF"
13769 outline "#000000"
13770 ]
13771 LabelGraphics
13772 [
13773 text "null"
13774 outline "#000000"
13775 fill "#FFFFFF"
13776 fontSize 16
13777 fontName "Monospace"
13778 autoSizePolicy "node_width"
13779 anchor "t"
13780 borderDistance 0.0
13781 ]
13782 LabelGraphics
13783 [
13784 text "
13785 EModelElement class
13786 ENamedElement class
13787 EPackage class
13788 EModelElement class UndefinedPart
13789 ENamedElement class UndefinedPart
13790 EPackage class UndefinedPart
13791 "
13792 fontSize 14
13793 fontName "Consolas"
13794 alignment "left"
13795 anchor "tl"
13796 borderDistance 6
13797 ]
13798 ]
13799
13800 node
13801 [
13802 id 13
13803 graphics
13804 [
13805 w 269.5
13806 h 110
13807 type "rectangle"
13808 fill "#FFFFFF"
13809 fill2 "#FFFFFF"
13810 outline "#000000"
13811 ]
13812 LabelGraphics
13813 [
13814 text "null"
13815 outline "#000000"
13816 fill "#FFFFFF"
13817 fontSize 16
13818 fontName "Monospace"
13819 autoSizePolicy "node_width"
13820 anchor "t"
13821 borderDistance 0.0
13822 ]
13823 LabelGraphics
13824 [
13825 text "
13826 EModelElement class
13827 ENamedElement class
13828 EOperation class
13829 ETypedElement class
13830 EModelElement class UndefinedPart
13831 ENamedElement class UndefinedPart
13832 "
13833 fontSize 14
13834 fontName "Consolas"
13835 alignment "left"
13836 anchor "tl"
13837 borderDistance 6
13838 ]
13839 ]
13840
13841 node
13842 [
13843 id 14
13844 graphics
13845 [
13846 w 269.5
13847 h 68
13848 type "rectangle"
13849 fill "#FFFFFF"
13850 fill2 "#FFFFFF"
13851 outline "#000000"
13852 ]
13853 LabelGraphics
13854 [
13855 text "null"
13856 outline "#000000"
13857 fill "#FFFFFF"
13858 fontSize 16
13859 fontName "Monospace"
13860 autoSizePolicy "node_width"
13861 anchor "t"
13862 borderDistance 0.0
13863 ]
13864 LabelGraphics
13865 [
13866 text "
13867 EAnnotation class
13868 EModelElement class
13869 EModelElement class UndefinedPart
13870 "
13871 fontSize 14
13872 fontName "Consolas"
13873 alignment "left"
13874 anchor "tl"
13875 borderDistance 6
13876 ]
13877 ]
13878
13879 node
13880 [
13881 id 15
13882 graphics
13883 [
13884 w 238.70000000000002
13885 h 40
13886 type "rectangle"
13887 fill "#FFFFFF"
13888 fill2 "#FFFFFF"
13889 outline "#000000"
13890 ]
13891 LabelGraphics
13892 [
13893 text "null"
13894 outline "#000000"
13895 fill "#FFFFFF"
13896 fontSize 16
13897 fontName "Monospace"
13898 autoSizePolicy "node_width"
13899 anchor "t"
13900 borderDistance 0.0
13901 ]
13902 LabelGraphics
13903 [
13904 text "
13905 EStringToStringMapEntry class
13906 "
13907 fontSize 14
13908 fontName "Consolas"
13909 alignment "left"
13910 anchor "tl"
13911 borderDistance 6
13912 ]
13913 ]
13914
13915 node
13916 [
13917 id 16
13918 graphics
13919 [
13920 w 112.2
13921 h 26
13922 type "rectangle"
13923 fill "#FFFFFF"
13924 fill2 "#FFFFFF"
13925 outline "#000000"
13926 ]
13927 LabelGraphics
13928 [
13929 text "New Integers"
13930 outline "#000000"
13931 fill "#FFFFFF"
13932 fontSize 16
13933 fontName "Monospace"
13934 autoSizePolicy "node_width"
13935 anchor "t"
13936 borderDistance 0.0
13937 ]
13938 LabelGraphics
13939 [
13940 text "
13941 "
13942 fontSize 14
13943 fontName "Consolas"
13944 alignment "left"
13945 anchor "tl"
13946 borderDistance 6
13947 ]
13948 ]
13949
13950 node
13951 [
13952 id 17
13953 graphics
13954 [
13955 w 85.80000000000001
13956 h 26
13957 type "rectangle"
13958 fill "#FFFFFF"
13959 fill2 "#FFFFFF"
13960 outline "#000000"
13961 ]
13962 LabelGraphics
13963 [
13964 text "New Reals"
13965 outline "#000000"
13966 fill "#FFFFFF"
13967 fontSize 16
13968 fontName "Monospace"
13969 autoSizePolicy "node_width"
13970 anchor "t"
13971 borderDistance 0.0
13972 ]
13973 LabelGraphics
13974 [
13975 text "
13976 "
13977 fontSize 14
13978 fontName "Consolas"
13979 alignment "left"
13980 anchor "tl"
13981 borderDistance 6
13982 ]
13983 ]
13984
13985 node
13986 [
13987 id 18
13988 graphics
13989 [
13990 w 103.4
13991 h 26
13992 type "rectangle"
13993 fill "#FFFFFF"
13994 fill2 "#FFFFFF"
13995 outline "#000000"
13996 ]
13997 LabelGraphics
13998 [
13999 text "New Strings"
14000 outline "#000000"
14001 fill "#FFFFFF"
14002 fontSize 16
14003 fontName "Monospace"
14004 autoSizePolicy "node_width"
14005 anchor "t"
14006 borderDistance 0.0
14007 ]
14008 LabelGraphics
14009 [
14010 text "
14011 "
14012 fontSize 14
14013 fontName "Consolas"
14014 alignment "left"
14015 anchor "tl"
14016 borderDistance 6
14017 ]
14018 ]
14019
14020 node
14021 [
14022 id 19
14023 graphics
14024 [
14025 w 103.4
14026 h 26
14027 type "rectangle"
14028 fill "#FFFFFF"
14029 fill2 "#FFFFFF"
14030 outline "#000000"
14031 ]
14032 LabelGraphics
14033 [
14034 text "New Objects"
14035 outline "#000000"
14036 fill "#FFFFFF"
14037 fontSize 16
14038 fontName "Monospace"
14039 autoSizePolicy "node_width"
14040 anchor "t"
14041 borderDistance 0.0
14042 ]
14043 LabelGraphics
14044 [
14045 text "
14046 "
14047 fontSize 14
14048 fontName "Consolas"
14049 alignment "left"
14050 anchor "tl"
14051 borderDistance 6
14052 ]
14053 ]
14054 edge
14055 [
14056 source 14
14057 target 15
14058 graphics
14059 [
14060 fill "#000000"
14061 width 3
14062 targetArrow "standard"
14063 ]
14064 LabelGraphics
14065 [
14066 text "details reference EAnnotation"
14067 fontSize 14
14068 fontName "Consolas"
14069 configuration "AutoFlippingLabel"
14070 model "six_pos"
14071 position "thead"
14072 ]
14073 ]
14074 edge
14075 [
14076 source 14
14077 target 0
14078 graphics
14079 [
14080 fill "#000000"
14081 targetArrow "standard"
14082 ]
14083 LabelGraphics
14084 [
14085 text "eModelElement reference EAnnotation"
14086 fontSize 14
14087 fontName "Consolas"
14088 configuration "AutoFlippingLabel"
14089 model "six_pos"
14090 position "thead"
14091 ]
14092 ]
14093 edge
14094 [
14095 source 11
14096 target 11
14097 graphics
14098 [
14099 fill "#000000"
14100 targetArrow "standard"
14101 ]
14102 LabelGraphics
14103 [
14104 text "eSuperTypes reference EClass"
14105 fontSize 14
14106 fontName "Consolas"
14107 configuration "AutoFlippingLabel"
14108 model "six_pos"
14109 position "thead"
14110 ]
14111 ]
14112 edge
14113 [
14114 source 11
14115 target 13
14116 graphics
14117 [
14118 fill "#000000"
14119 width 3
14120 targetArrow "standard"
14121 ]
14122 LabelGraphics
14123 [
14124 text "eOperations reference EClass"
14125 fontSize 14
14126 fontName "Consolas"
14127 configuration "AutoFlippingLabel"
14128 model "six_pos"
14129 position "thead"
14130 ]
14131 ]
14132 edge
14133 [
14134 source 11
14135 target 11
14136 graphics
14137 [
14138 fill "#000000"
14139 targetArrow "standard"
14140 ]
14141 LabelGraphics
14142 [
14143 text "eAllSuperTypes reference EClass"
14144 fontSize 14
14145 fontName "Consolas"
14146 configuration "AutoFlippingLabel"
14147 model "six_pos"
14148 position "thead"
14149 ]
14150 ]
14151 edge
14152 [
14153 source 11
14154 target 0
14155 graphics
14156 [
14157 fill "#000000"
14158 targetArrow "standard"
14159 ]
14160 LabelGraphics
14161 [
14162 text "ePackage reference EClassifier"
14163 fontSize 14
14164 fontName "Consolas"
14165 configuration "AutoFlippingLabel"
14166 model "six_pos"
14167 position "thead"
14168 ]
14169 ]
14170 edge
14171 [
14172 source 0
14173 target 14
14174 graphics
14175 [
14176 fill "#000000"
14177 width 3
14178 targetArrow "standard"
14179 ]
14180 LabelGraphics
14181 [
14182 text "eAnnotations reference EModelElement"
14183 fontSize 14
14184 fontName "Consolas"
14185 configuration "AutoFlippingLabel"
14186 model "six_pos"
14187 position "thead"
14188 ]
14189 ]
14190 edge
14191 [
14192 source 13
14193 target 11
14194 graphics
14195 [
14196 fill "#000000"
14197 targetArrow "standard"
14198 ]
14199 LabelGraphics
14200 [
14201 text "eContainingClass reference EOperation"
14202 fontSize 14
14203 fontName "Consolas"
14204 configuration "AutoFlippingLabel"
14205 model "six_pos"
14206 position "thead"
14207 ]
14208 ]
14209 edge
14210 [
14211 source 0
14212 target 11
14213 graphics
14214 [
14215 fill "#000000"
14216 width 3
14217 targetArrow "standard"
14218 ]
14219 LabelGraphics
14220 [
14221 text "eClassifiers reference EPackage"
14222 fontSize 14
14223 fontName "Consolas"
14224 configuration "AutoFlippingLabel"
14225 model "six_pos"
14226 position "thead"
14227 ]
14228 ]
14229 edge
14230 [
14231 source 0
14232 target 12
14233 graphics
14234 [
14235 fill "#000000"
14236 width 3
14237 targetArrow "standard"
14238 ]
14239 LabelGraphics
14240 [
14241 text "eSubpackages reference EPackage"
14242 fontSize 14
14243 fontName "Consolas"
14244 configuration "AutoFlippingLabel"
14245 model "six_pos"
14246 position "thead"
14247 ]
14248 ]
14249 edge
14250 [
14251 source 12
14252 target 0
14253 graphics
14254 [
14255 fill "#000000"
14256 targetArrow "standard"
14257 ]
14258 LabelGraphics
14259 [
14260 text "eSuperPackage reference EPackage"
14261 fontSize 14
14262 fontName "Consolas"
14263 configuration "AutoFlippingLabel"
14264 model "six_pos"
14265 position "thead"
14266 ]
14267 ]
14268 edge
14269 [
14270 source 11
14271 target 8
14272 graphics
14273 [
14274 fill "#000000"
14275 targetArrow "standard"
14276 ]
14277 LabelGraphics
14278 [
14279 text "instanceClassName attribute EClassifier"
14280 fontSize 14
14281 fontName "Consolas"
14282 configuration "AutoFlippingLabel"
14283 model "six_pos"
14284 position "thead"
14285 ]
14286 ]
14287 edge
14288 [
14289 source 0
14290 target 10
14291 graphics
14292 [
14293 fill "#000000"
14294 targetArrow "standard"
14295 ]
14296 LabelGraphics
14297 [
14298 text "name attribute ENamedElement"
14299 fontSize 14
14300 fontName "Consolas"
14301 configuration "AutoFlippingLabel"
14302 model "six_pos"
14303 position "thead"
14304 ]
14305 ]
14306 edge
14307 [
14308 source 12
14309 target 7
14310 graphics
14311 [
14312 fill "#000000"
14313 targetArrow "standard"
14314 ]
14315 LabelGraphics
14316 [
14317 text "name attribute ENamedElement"
14318 fontSize 14
14319 fontName "Consolas"
14320 configuration "AutoFlippingLabel"
14321 model "six_pos"
14322 position "thead"
14323 ]
14324 ]
14325 edge
14326 [
14327 source 0
14328 target 9
14329 graphics
14330 [
14331 fill "#000000"
14332 targetArrow "standard"
14333 ]
14334 LabelGraphics
14335 [
14336 text "nsURI attribute EPackage"
14337 fontSize 14
14338 fontName "Consolas"
14339 configuration "AutoFlippingLabel"
14340 model "six_pos"
14341 position "thead"
14342 ]
14343 ]
14344 edge
14345 [
14346 source 12
14347 target 8
14348 graphics
14349 [
14350 fill "#000000"
14351 targetArrow "standard"
14352 ]
14353 LabelGraphics
14354 [
14355 text "nsURI attribute EPackage"
14356 fontSize 14
14357 fontName "Consolas"
14358 configuration "AutoFlippingLabel"
14359 model "six_pos"
14360 position "thead"
14361 ]
14362 ]
14363 edge
14364 [
14365 source 0
14366 target 8
14367 graphics
14368 [
14369 fill "#000000"
14370 targetArrow "standard"
14371 ]
14372 LabelGraphics
14373 [
14374 text "nsPrefix attribute EPackage"
14375 fontSize 14
14376 fontName "Consolas"
14377 configuration "AutoFlippingLabel"
14378 model "six_pos"
14379 position "thead"
14380 ]
14381 ]
14382 edge
14383 [
14384 source 13
14385 target 1
14386 graphics
14387 [
14388 fill "#000000"
14389 targetArrow "standard"
14390 ]
14391 LabelGraphics
14392 [
14393 text "unique attribute ETypedElement"
14394 fontSize 14
14395 fontName "Consolas"
14396 configuration "AutoFlippingLabel"
14397 model "six_pos"
14398 position "thead"
14399 ]
14400 ]
14401 edge
14402 [
14403 source 13
14404 target 4
14405 graphics
14406 [
14407 fill "#000000"
14408 targetArrow "standard"
14409 ]
14410 LabelGraphics
14411 [
14412 text "upperBound attribute ETypedElement"
14413 fontSize 14
14414 fontName "Consolas"
14415 configuration "AutoFlippingLabel"
14416 model "six_pos"
14417 position "thead"
14418 ]
14419 ]
14420]
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/1.png b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/1.png
index c1d6f49f..0ea0ef1b 100644
--- a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/1.png
+++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/1.png
Binary files differ
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/1.xmi b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/1.xmi
index d9529633..cb79481b 100644
--- a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/1.xmi
+++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/1.xmi
@@ -1,9 +1,10 @@
1<?xml version="1.0" encoding="ASCII"?> 1<?xml version="1.0" encoding="ASCII"?>
2<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="packageName" nsURI="nsUri" nsPrefix="nsPrefix"> 2<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="packageName" nsURI="nsUri" nsPrefix="nsPrefix">
3 <eClassifiers xsi:type="ecore:EEnum" name="packageName" instanceClassName="A"/> 3 <eAnnotations>
4 <eClassifiers xsi:type="ecore:EEnum"/> 4 <details/>
5 <eClassifiers xsi:type="ecore:EEnum" name="packageName" instanceClassName="nsPrefix"/> 5 </eAnnotations>
6 <eSubpackages name="A"> 6 <eClassifiers xsi:type="ecore:EClass" instanceClassName="nsPrefix" eSuperTypes="//%">
7 <eClassifiers xsi:type="ecore:EEnum"/> 7 <eOperations upperBound="0"/>
8 </eSubpackages> 8 </eClassifiers>
9 <eSubpackages name="B" nsURI="nsPrefix"/>
9</ecore:EPackage> 10</ecore:EPackage>
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/2.gml b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/2.gml
index f6242732..77ffa87d 100644
--- a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/2.gml
+++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/2.gml
@@ -4760,3 +4760,6877 @@ graph
4760 ] 4760 ]
4761 ] 4761 ]
4762] 4762]
4763graph
4764[
4765 node
4766 [
4767 id 0
4768 graphics
4769 [
4770 w 226.60000000000002
4771 h 40
4772 type "rectangle"
4773 fill "#FFFFFF"
4774 fill2 "#FFFFFF"
4775 outline "#000000"
4776 ]
4777 LabelGraphics
4778 [
4779 text "Root literal FunctionType"
4780 outline "#000000"
4781 fill "#FFFFFF"
4782 fontSize 16
4783 fontName "Monospace"
4784 autoSizePolicy "node_width"
4785 anchor "t"
4786 borderDistance 0.0
4787 ]
4788 LabelGraphics
4789 [
4790 text "
4791 FunctionType enum
4792 "
4793 fontSize 14
4794 fontName "Consolas"
4795 alignment "left"
4796 anchor "tl"
4797 borderDistance 6
4798 ]
4799 ]
4800
4801 node
4802 [
4803 id 1
4804 graphics
4805 [
4806 w 297.0
4807 h 40
4808 type "rectangle"
4809 fill "#FFFFFF"
4810 fill2 "#FFFFFF"
4811 outline "#000000"
4812 ]
4813 LabelGraphics
4814 [
4815 text "Intermediate literal FunctionType"
4816 outline "#000000"
4817 fill "#FFFFFF"
4818 fontSize 16
4819 fontName "Monospace"
4820 autoSizePolicy "node_width"
4821 anchor "t"
4822 borderDistance 0.0
4823 ]
4824 LabelGraphics
4825 [
4826 text "
4827 FunctionType enum
4828 "
4829 fontSize 14
4830 fontName "Consolas"
4831 alignment "left"
4832 anchor "tl"
4833 borderDistance 6
4834 ]
4835 ]
4836
4837 node
4838 [
4839 id 2
4840 graphics
4841 [
4842 w 226.60000000000002
4843 h 40
4844 type "rectangle"
4845 fill "#FFFFFF"
4846 fill2 "#FFFFFF"
4847 outline "#000000"
4848 ]
4849 LabelGraphics
4850 [
4851 text "Leaf literal FunctionType"
4852 outline "#000000"
4853 fill "#FFFFFF"
4854 fontSize 16
4855 fontName "Monospace"
4856 autoSizePolicy "node_width"
4857 anchor "t"
4858 borderDistance 0.0
4859 ]
4860 LabelGraphics
4861 [
4862 text "
4863 FunctionType enum
4864 "
4865 fontSize 14
4866 fontName "Consolas"
4867 alignment "left"
4868 anchor "tl"
4869 borderDistance 6
4870 ]
4871 ]
4872
4873 node
4874 [
4875 id 3
4876 graphics
4877 [
4878 w 361.90000000000003
4879 h 54
4880 type "rectangle"
4881 fill "#FFFFFF"
4882 fill2 "#FFFFFF"
4883 outline "#000000"
4884 ]
4885 LabelGraphics
4886 [
4887 text "o 1"
4888 outline "#000000"
4889 fill "#FFFFFF"
4890 fontSize 16
4891 fontName "Monospace"
4892 autoSizePolicy "node_width"
4893 anchor "t"
4894 borderDistance 0.0
4895 ]
4896 LabelGraphics
4897 [
4898 text "
4899 FunctionalArchitectureModel class DefinedPart
4900 FunctionalArchitectureModel class
4901 "
4902 fontSize 14
4903 fontName "Consolas"
4904 alignment "left"
4905 anchor "tl"
4906 borderDistance 6
4907 ]
4908 ]
4909
4910 node
4911 [
4912 id 4
4913 graphics
4914 [
4915 w 41.800000000000004
4916 h 26
4917 type "rectangle"
4918 fill "#FFFFFF"
4919 fill2 "#FFFFFF"
4920 outline "#000000"
4921 ]
4922 LabelGraphics
4923 [
4924 text "true"
4925 outline "#000000"
4926 fill "#FFFFFF"
4927 fontSize 16
4928 fontName "Monospace"
4929 autoSizePolicy "node_width"
4930 anchor "t"
4931 borderDistance 0.0
4932 ]
4933 LabelGraphics
4934 [
4935 text "
4936 "
4937 fontSize 14
4938 fontName "Consolas"
4939 alignment "left"
4940 anchor "tl"
4941 borderDistance 6
4942 ]
4943 ]
4944
4945 node
4946 [
4947 id 5
4948 graphics
4949 [
4950 w 50.6
4951 h 26
4952 type "rectangle"
4953 fill "#FFFFFF"
4954 fill2 "#FFFFFF"
4955 outline "#000000"
4956 ]
4957 LabelGraphics
4958 [
4959 text "false"
4960 outline "#000000"
4961 fill "#FFFFFF"
4962 fontSize 16
4963 fontName "Monospace"
4964 autoSizePolicy "node_width"
4965 anchor "t"
4966 borderDistance 0.0
4967 ]
4968 LabelGraphics
4969 [
4970 text "
4971 "
4972 fontSize 14
4973 fontName "Consolas"
4974 alignment "left"
4975 anchor "tl"
4976 borderDistance 6
4977 ]
4978 ]
4979
4980 node
4981 [
4982 id 6
4983 graphics
4984 [
4985 w 192.50000000000003
4986 h 54
4987 type "rectangle"
4988 fill "#FFFFFF"
4989 fill2 "#FFFFFF"
4990 outline "#000000"
4991 ]
4992 LabelGraphics
4993 [
4994 text "null"
4995 outline "#000000"
4996 fill "#FFFFFF"
4997 fontSize 16
4998 fontName "Monospace"
4999 autoSizePolicy "node_width"
5000 anchor "t"
5001 borderDistance 0.0
5002 ]
5003 LabelGraphics
5004 [
5005 text "
5006 FunctionalElement class
5007 Function class
5008 "
5009 fontSize 14
5010 fontName "Consolas"
5011 alignment "left"
5012 anchor "tl"
5013 borderDistance 6
5014 ]
5015 ]
5016
5017 node
5018 [
5019 id 7
5020 graphics
5021 [
5022 w 112.2
5023 h 26
5024 type "rectangle"
5025 fill "#FFFFFF"
5026 fill2 "#FFFFFF"
5027 outline "#000000"
5028 ]
5029 LabelGraphics
5030 [
5031 text "New Integers"
5032 outline "#000000"
5033 fill "#FFFFFF"
5034 fontSize 16
5035 fontName "Monospace"
5036 autoSizePolicy "node_width"
5037 anchor "t"
5038 borderDistance 0.0
5039 ]
5040 LabelGraphics
5041 [
5042 text "
5043 "
5044 fontSize 14
5045 fontName "Consolas"
5046 alignment "left"
5047 anchor "tl"
5048 borderDistance 6
5049 ]
5050 ]
5051
5052 node
5053 [
5054 id 8
5055 graphics
5056 [
5057 w 85.80000000000001
5058 h 26
5059 type "rectangle"
5060 fill "#FFFFFF"
5061 fill2 "#FFFFFF"
5062 outline "#000000"
5063 ]
5064 LabelGraphics
5065 [
5066 text "New Reals"
5067 outline "#000000"
5068 fill "#FFFFFF"
5069 fontSize 16
5070 fontName "Monospace"
5071 autoSizePolicy "node_width"
5072 anchor "t"
5073 borderDistance 0.0
5074 ]
5075 LabelGraphics
5076 [
5077 text "
5078 "
5079 fontSize 14
5080 fontName "Consolas"
5081 alignment "left"
5082 anchor "tl"
5083 borderDistance 6
5084 ]
5085 ]
5086
5087 node
5088 [
5089 id 9
5090 graphics
5091 [
5092 w 103.4
5093 h 26
5094 type "rectangle"
5095 fill "#FFFFFF"
5096 fill2 "#FFFFFF"
5097 outline "#000000"
5098 ]
5099 LabelGraphics
5100 [
5101 text "New Strings"
5102 outline "#000000"
5103 fill "#FFFFFF"
5104 fontSize 16
5105 fontName "Monospace"
5106 autoSizePolicy "node_width"
5107 anchor "t"
5108 borderDistance 0.0
5109 ]
5110 LabelGraphics
5111 [
5112 text "
5113 "
5114 fontSize 14
5115 fontName "Consolas"
5116 alignment "left"
5117 anchor "tl"
5118 borderDistance 6
5119 ]
5120 ]
5121
5122 node
5123 [
5124 id 10
5125 graphics
5126 [
5127 w 103.4
5128 h 26
5129 type "rectangle"
5130 fill "#FFFFFF"
5131 fill2 "#FFFFFF"
5132 outline "#000000"
5133 ]
5134 LabelGraphics
5135 [
5136 text "New Objects"
5137 outline "#000000"
5138 fill "#FFFFFF"
5139 fontSize 16
5140 fontName "Monospace"
5141 autoSizePolicy "node_width"
5142 anchor "t"
5143 borderDistance 0.0
5144 ]
5145 LabelGraphics
5146 [
5147 text "
5148 "
5149 fontSize 14
5150 fontName "Consolas"
5151 alignment "left"
5152 anchor "tl"
5153 borderDistance 6
5154 ]
5155 ]
5156 edge
5157 [
5158 source 6
5159 target 3
5160 graphics
5161 [
5162 fill "#000000"
5163 targetArrow "standard"
5164 ]
5165 LabelGraphics
5166 [
5167 text "model reference FunctionalElement"
5168 fontSize 14
5169 fontName "Consolas"
5170 configuration "AutoFlippingLabel"
5171 model "six_pos"
5172 position "thead"
5173 ]
5174 ]
5175 edge
5176 [
5177 source 3
5178 target 6
5179 graphics
5180 [
5181 fill "#000000"
5182 width 3
5183 targetArrow "standard"
5184 ]
5185 LabelGraphics
5186 [
5187 text "rootElements reference FunctionalArchitectureModel"
5188 fontSize 14
5189 fontName "Consolas"
5190 configuration "AutoFlippingLabel"
5191 model "six_pos"
5192 position "thead"
5193 ]
5194 ]
5195 edge
5196 [
5197 source 6
5198 target 2
5199 graphics
5200 [
5201 fill "#000000"
5202 targetArrow "standard"
5203 ]
5204 LabelGraphics
5205 [
5206 text "type attribute Function"
5207 fontSize 14
5208 fontName "Consolas"
5209 configuration "AutoFlippingLabel"
5210 model "six_pos"
5211 position "thead"
5212 ]
5213 ]
5214]
5215graph
5216[
5217 node
5218 [
5219 id 0
5220 graphics
5221 [
5222 w 226.60000000000002
5223 h 40
5224 type "rectangle"
5225 fill "#FFFFFF"
5226 fill2 "#FFFFFF"
5227 outline "#000000"
5228 ]
5229 LabelGraphics
5230 [
5231 text "Root literal FunctionType"
5232 outline "#000000"
5233 fill "#FFFFFF"
5234 fontSize 16
5235 fontName "Monospace"
5236 autoSizePolicy "node_width"
5237 anchor "t"
5238 borderDistance 0.0
5239 ]
5240 LabelGraphics
5241 [
5242 text "
5243 FunctionType enum
5244 "
5245 fontSize 14
5246 fontName "Consolas"
5247 alignment "left"
5248 anchor "tl"
5249 borderDistance 6
5250 ]
5251 ]
5252
5253 node
5254 [
5255 id 1
5256 graphics
5257 [
5258 w 297.0
5259 h 40
5260 type "rectangle"
5261 fill "#FFFFFF"
5262 fill2 "#FFFFFF"
5263 outline "#000000"
5264 ]
5265 LabelGraphics
5266 [
5267 text "Intermediate literal FunctionType"
5268 outline "#000000"
5269 fill "#FFFFFF"
5270 fontSize 16
5271 fontName "Monospace"
5272 autoSizePolicy "node_width"
5273 anchor "t"
5274 borderDistance 0.0
5275 ]
5276 LabelGraphics
5277 [
5278 text "
5279 FunctionType enum
5280 "
5281 fontSize 14
5282 fontName "Consolas"
5283 alignment "left"
5284 anchor "tl"
5285 borderDistance 6
5286 ]
5287 ]
5288
5289 node
5290 [
5291 id 2
5292 graphics
5293 [
5294 w 226.60000000000002
5295 h 40
5296 type "rectangle"
5297 fill "#FFFFFF"
5298 fill2 "#FFFFFF"
5299 outline "#000000"
5300 ]
5301 LabelGraphics
5302 [
5303 text "Leaf literal FunctionType"
5304 outline "#000000"
5305 fill "#FFFFFF"
5306 fontSize 16
5307 fontName "Monospace"
5308 autoSizePolicy "node_width"
5309 anchor "t"
5310 borderDistance 0.0
5311 ]
5312 LabelGraphics
5313 [
5314 text "
5315 FunctionType enum
5316 "
5317 fontSize 14
5318 fontName "Consolas"
5319 alignment "left"
5320 anchor "tl"
5321 borderDistance 6
5322 ]
5323 ]
5324
5325 node
5326 [
5327 id 3
5328 graphics
5329 [
5330 w 361.90000000000003
5331 h 54
5332 type "rectangle"
5333 fill "#FFFFFF"
5334 fill2 "#FFFFFF"
5335 outline "#000000"
5336 ]
5337 LabelGraphics
5338 [
5339 text "o 1"
5340 outline "#000000"
5341 fill "#FFFFFF"
5342 fontSize 16
5343 fontName "Monospace"
5344 autoSizePolicy "node_width"
5345 anchor "t"
5346 borderDistance 0.0
5347 ]
5348 LabelGraphics
5349 [
5350 text "
5351 FunctionalArchitectureModel class DefinedPart
5352 FunctionalArchitectureModel class
5353 "
5354 fontSize 14
5355 fontName "Consolas"
5356 alignment "left"
5357 anchor "tl"
5358 borderDistance 6
5359 ]
5360 ]
5361
5362 node
5363 [
5364 id 4
5365 graphics
5366 [
5367 w 41.800000000000004
5368 h 26
5369 type "rectangle"
5370 fill "#FFFFFF"
5371 fill2 "#FFFFFF"
5372 outline "#000000"
5373 ]
5374 LabelGraphics
5375 [
5376 text "true"
5377 outline "#000000"
5378 fill "#FFFFFF"
5379 fontSize 16
5380 fontName "Monospace"
5381 autoSizePolicy "node_width"
5382 anchor "t"
5383 borderDistance 0.0
5384 ]
5385 LabelGraphics
5386 [
5387 text "
5388 "
5389 fontSize 14
5390 fontName "Consolas"
5391 alignment "left"
5392 anchor "tl"
5393 borderDistance 6
5394 ]
5395 ]
5396
5397 node
5398 [
5399 id 5
5400 graphics
5401 [
5402 w 50.6
5403 h 26
5404 type "rectangle"
5405 fill "#FFFFFF"
5406 fill2 "#FFFFFF"
5407 outline "#000000"
5408 ]
5409 LabelGraphics
5410 [
5411 text "false"
5412 outline "#000000"
5413 fill "#FFFFFF"
5414 fontSize 16
5415 fontName "Monospace"
5416 autoSizePolicy "node_width"
5417 anchor "t"
5418 borderDistance 0.0
5419 ]
5420 LabelGraphics
5421 [
5422 text "
5423 "
5424 fontSize 14
5425 fontName "Consolas"
5426 alignment "left"
5427 anchor "tl"
5428 borderDistance 6
5429 ]
5430 ]
5431
5432 node
5433 [
5434 id 6
5435 graphics
5436 [
5437 w 192.50000000000003
5438 h 54
5439 type "rectangle"
5440 fill "#FFFFFF"
5441 fill2 "#FFFFFF"
5442 outline "#000000"
5443 ]
5444 LabelGraphics
5445 [
5446 text "null"
5447 outline "#000000"
5448 fill "#FFFFFF"
5449 fontSize 16
5450 fontName "Monospace"
5451 autoSizePolicy "node_width"
5452 anchor "t"
5453 borderDistance 0.0
5454 ]
5455 LabelGraphics
5456 [
5457 text "
5458 FunctionalElement class
5459 Function class
5460 "
5461 fontSize 14
5462 fontName "Consolas"
5463 alignment "left"
5464 anchor "tl"
5465 borderDistance 6
5466 ]
5467 ]
5468
5469 node
5470 [
5471 id 7
5472 graphics
5473 [
5474 w 112.2
5475 h 26
5476 type "rectangle"
5477 fill "#FFFFFF"
5478 fill2 "#FFFFFF"
5479 outline "#000000"
5480 ]
5481 LabelGraphics
5482 [
5483 text "New Integers"
5484 outline "#000000"
5485 fill "#FFFFFF"
5486 fontSize 16
5487 fontName "Monospace"
5488 autoSizePolicy "node_width"
5489 anchor "t"
5490 borderDistance 0.0
5491 ]
5492 LabelGraphics
5493 [
5494 text "
5495 "
5496 fontSize 14
5497 fontName "Consolas"
5498 alignment "left"
5499 anchor "tl"
5500 borderDistance 6
5501 ]
5502 ]
5503
5504 node
5505 [
5506 id 8
5507 graphics
5508 [
5509 w 85.80000000000001
5510 h 26
5511 type "rectangle"
5512 fill "#FFFFFF"
5513 fill2 "#FFFFFF"
5514 outline "#000000"
5515 ]
5516 LabelGraphics
5517 [
5518 text "New Reals"
5519 outline "#000000"
5520 fill "#FFFFFF"
5521 fontSize 16
5522 fontName "Monospace"
5523 autoSizePolicy "node_width"
5524 anchor "t"
5525 borderDistance 0.0
5526 ]
5527 LabelGraphics
5528 [
5529 text "
5530 "
5531 fontSize 14
5532 fontName "Consolas"
5533 alignment "left"
5534 anchor "tl"
5535 borderDistance 6
5536 ]
5537 ]
5538
5539 node
5540 [
5541 id 9
5542 graphics
5543 [
5544 w 103.4
5545 h 26
5546 type "rectangle"
5547 fill "#FFFFFF"
5548 fill2 "#FFFFFF"
5549 outline "#000000"
5550 ]
5551 LabelGraphics
5552 [
5553 text "New Strings"
5554 outline "#000000"
5555 fill "#FFFFFF"
5556 fontSize 16
5557 fontName "Monospace"
5558 autoSizePolicy "node_width"
5559 anchor "t"
5560 borderDistance 0.0
5561 ]
5562 LabelGraphics
5563 [
5564 text "
5565 "
5566 fontSize 14
5567 fontName "Consolas"
5568 alignment "left"
5569 anchor "tl"
5570 borderDistance 6
5571 ]
5572 ]
5573
5574 node
5575 [
5576 id 10
5577 graphics
5578 [
5579 w 103.4
5580 h 26
5581 type "rectangle"
5582 fill "#FFFFFF"
5583 fill2 "#FFFFFF"
5584 outline "#000000"
5585 ]
5586 LabelGraphics
5587 [
5588 text "New Objects"
5589 outline "#000000"
5590 fill "#FFFFFF"
5591 fontSize 16
5592 fontName "Monospace"
5593 autoSizePolicy "node_width"
5594 anchor "t"
5595 borderDistance 0.0
5596 ]
5597 LabelGraphics
5598 [
5599 text "
5600 "
5601 fontSize 14
5602 fontName "Consolas"
5603 alignment "left"
5604 anchor "tl"
5605 borderDistance 6
5606 ]
5607 ]
5608 edge
5609 [
5610 source 6
5611 target 3
5612 graphics
5613 [
5614 fill "#000000"
5615 targetArrow "standard"
5616 ]
5617 LabelGraphics
5618 [
5619 text "model reference FunctionalElement"
5620 fontSize 14
5621 fontName "Consolas"
5622 configuration "AutoFlippingLabel"
5623 model "six_pos"
5624 position "thead"
5625 ]
5626 ]
5627 edge
5628 [
5629 source 3
5630 target 6
5631 graphics
5632 [
5633 fill "#000000"
5634 width 3
5635 targetArrow "standard"
5636 ]
5637 LabelGraphics
5638 [
5639 text "rootElements reference FunctionalArchitectureModel"
5640 fontSize 14
5641 fontName "Consolas"
5642 configuration "AutoFlippingLabel"
5643 model "six_pos"
5644 position "thead"
5645 ]
5646 ]
5647 edge
5648 [
5649 source 6
5650 target 1
5651 graphics
5652 [
5653 fill "#000000"
5654 targetArrow "standard"
5655 ]
5656 LabelGraphics
5657 [
5658 text "type attribute Function"
5659 fontSize 14
5660 fontName "Consolas"
5661 configuration "AutoFlippingLabel"
5662 model "six_pos"
5663 position "thead"
5664 ]
5665 ]
5666]
5667graph
5668[
5669 node
5670 [
5671 id 0
5672 graphics
5673 [
5674 w 254.10000000000002
5675 h 110
5676 type "rectangle"
5677 fill "#FFFFFF"
5678 fill2 "#FFFFFF"
5679 outline "#000000"
5680 ]
5681 LabelGraphics
5682 [
5683 text "o 1"
5684 outline "#000000"
5685 fill "#FFFFFF"
5686 fontSize 16
5687 fontName "Monospace"
5688 autoSizePolicy "node_width"
5689 anchor "t"
5690 borderDistance 0.0
5691 ]
5692 LabelGraphics
5693 [
5694 text "
5695 EModelElement class DefinedPart
5696 ENamedElement class DefinedPart
5697 EPackage class DefinedPart
5698 EModelElement class
5699 ENamedElement class
5700 EPackage class
5701 "
5702 fontSize 14
5703 fontName "Consolas"
5704 alignment "left"
5705 anchor "tl"
5706 borderDistance 6
5707 ]
5708 ]
5709
5710 node
5711 [
5712 id 1
5713 graphics
5714 [
5715 w 41.800000000000004
5716 h 26
5717 type "rectangle"
5718 fill "#FFFFFF"
5719 fill2 "#FFFFFF"
5720 outline "#000000"
5721 ]
5722 LabelGraphics
5723 [
5724 text "true"
5725 outline "#000000"
5726 fill "#FFFFFF"
5727 fontSize 16
5728 fontName "Monospace"
5729 autoSizePolicy "node_width"
5730 anchor "t"
5731 borderDistance 0.0
5732 ]
5733 LabelGraphics
5734 [
5735 text "
5736 "
5737 fontSize 14
5738 fontName "Consolas"
5739 alignment "left"
5740 anchor "tl"
5741 borderDistance 6
5742 ]
5743 ]
5744
5745 node
5746 [
5747 id 2
5748 graphics
5749 [
5750 w 50.6
5751 h 26
5752 type "rectangle"
5753 fill "#FFFFFF"
5754 fill2 "#FFFFFF"
5755 outline "#000000"
5756 ]
5757 LabelGraphics
5758 [
5759 text "false"
5760 outline "#000000"
5761 fill "#FFFFFF"
5762 fontSize 16
5763 fontName "Monospace"
5764 autoSizePolicy "node_width"
5765 anchor "t"
5766 borderDistance 0.0
5767 ]
5768 LabelGraphics
5769 [
5770 text "
5771 "
5772 fontSize 14
5773 fontName "Consolas"
5774 alignment "left"
5775 anchor "tl"
5776 borderDistance 6
5777 ]
5778 ]
5779
5780 node
5781 [
5782 id 3
5783 graphics
5784 [
5785 w 24.200000000000003
5786 h 26
5787 type "rectangle"
5788 fill "#FFFFFF"
5789 fill2 "#FFFFFF"
5790 outline "#000000"
5791 ]
5792 LabelGraphics
5793 [
5794 text "-1"
5795 outline "#000000"
5796 fill "#FFFFFF"
5797 fontSize 16
5798 fontName "Monospace"
5799 autoSizePolicy "node_width"
5800 anchor "t"
5801 borderDistance 0.0
5802 ]
5803 LabelGraphics
5804 [
5805 text "
5806 "
5807 fontSize 14
5808 fontName "Consolas"
5809 alignment "left"
5810 anchor "tl"
5811 borderDistance 6
5812 ]
5813 ]
5814
5815 node
5816 [
5817 id 4
5818 graphics
5819 [
5820 w 15.400000000000002
5821 h 26
5822 type "rectangle"
5823 fill "#FFFFFF"
5824 fill2 "#FFFFFF"
5825 outline "#000000"
5826 ]
5827 LabelGraphics
5828 [
5829 text "0"
5830 outline "#000000"
5831 fill "#FFFFFF"
5832 fontSize 16
5833 fontName "Monospace"
5834 autoSizePolicy "node_width"
5835 anchor "t"
5836 borderDistance 0.0
5837 ]
5838 LabelGraphics
5839 [
5840 text "
5841 "
5842 fontSize 14
5843 fontName "Consolas"
5844 alignment "left"
5845 anchor "tl"
5846 borderDistance 6
5847 ]
5848 ]
5849
5850 node
5851 [
5852 id 5
5853 graphics
5854 [
5855 w 15.400000000000002
5856 h 26
5857 type "rectangle"
5858 fill "#FFFFFF"
5859 fill2 "#FFFFFF"
5860 outline "#000000"
5861 ]
5862 LabelGraphics
5863 [
5864 text "1"
5865 outline "#000000"
5866 fill "#FFFFFF"
5867 fontSize 16
5868 fontName "Monospace"
5869 autoSizePolicy "node_width"
5870 anchor "t"
5871 borderDistance 0.0
5872 ]
5873 LabelGraphics
5874 [
5875 text "
5876 "
5877 fontSize 14
5878 fontName "Consolas"
5879 alignment "left"
5880 anchor "tl"
5881 borderDistance 6
5882 ]
5883 ]
5884
5885 node
5886 [
5887 id 6
5888 graphics
5889 [
5890 w 33.0
5891 h 26
5892 type "rectangle"
5893 fill "#FFFFFF"
5894 fill2 "#FFFFFF"
5895 outline "#000000"
5896 ]
5897 LabelGraphics
5898 [
5899 text ""A""
5900 outline "#000000"
5901 fill "#FFFFFF"
5902 fontSize 16
5903 fontName "Monospace"
5904 autoSizePolicy "node_width"
5905 anchor "t"
5906 borderDistance 0.0
5907 ]
5908 LabelGraphics
5909 [
5910 text "
5911 "
5912 fontSize 14
5913 fontName "Consolas"
5914 alignment "left"
5915 anchor "tl"
5916 borderDistance 6
5917 ]
5918 ]
5919
5920 node
5921 [
5922 id 7
5923 graphics
5924 [
5925 w 33.0
5926 h 26
5927 type "rectangle"
5928 fill "#FFFFFF"
5929 fill2 "#FFFFFF"
5930 outline "#000000"
5931 ]
5932 LabelGraphics
5933 [
5934 text ""B""
5935 outline "#000000"
5936 fill "#FFFFFF"
5937 fontSize 16
5938 fontName "Monospace"
5939 autoSizePolicy "node_width"
5940 anchor "t"
5941 borderDistance 0.0
5942 ]
5943 LabelGraphics
5944 [
5945 text "
5946 "
5947 fontSize 14
5948 fontName "Consolas"
5949 alignment "left"
5950 anchor "tl"
5951 borderDistance 6
5952 ]
5953 ]
5954
5955 node
5956 [
5957 id 8
5958 graphics
5959 [
5960 w 94.60000000000001
5961 h 26
5962 type "rectangle"
5963 fill "#FFFFFF"
5964 fill2 "#FFFFFF"
5965 outline "#000000"
5966 ]
5967 LabelGraphics
5968 [
5969 text ""nsPrefix""
5970 outline "#000000"
5971 fill "#FFFFFF"
5972 fontSize 16
5973 fontName "Monospace"
5974 autoSizePolicy "node_width"
5975 anchor "t"
5976 borderDistance 0.0
5977 ]
5978 LabelGraphics
5979 [
5980 text "
5981 "
5982 fontSize 14
5983 fontName "Consolas"
5984 alignment "left"
5985 anchor "tl"
5986 borderDistance 6
5987 ]
5988 ]
5989
5990 node
5991 [
5992 id 9
5993 graphics
5994 [
5995 w 68.2
5996 h 26
5997 type "rectangle"
5998 fill "#FFFFFF"
5999 fill2 "#FFFFFF"
6000 outline "#000000"
6001 ]
6002 LabelGraphics
6003 [
6004 text ""nsUri""
6005 outline "#000000"
6006 fill "#FFFFFF"
6007 fontSize 16
6008 fontName "Monospace"
6009 autoSizePolicy "node_width"
6010 anchor "t"
6011 borderDistance 0.0
6012 ]
6013 LabelGraphics
6014 [
6015 text "
6016 "
6017 fontSize 14
6018 fontName "Consolas"
6019 alignment "left"
6020 anchor "tl"
6021 borderDistance 6
6022 ]
6023 ]
6024
6025 node
6026 [
6027 id 10
6028 graphics
6029 [
6030 w 121.00000000000001
6031 h 26
6032 type "rectangle"
6033 fill "#FFFFFF"
6034 fill2 "#FFFFFF"
6035 outline "#000000"
6036 ]
6037 LabelGraphics
6038 [
6039 text ""packageName""
6040 outline "#000000"
6041 fill "#FFFFFF"
6042 fontSize 16
6043 fontName "Monospace"
6044 autoSizePolicy "node_width"
6045 anchor "t"
6046 borderDistance 0.0
6047 ]
6048 LabelGraphics
6049 [
6050 text "
6051 "
6052 fontSize 14
6053 fontName "Consolas"
6054 alignment "left"
6055 anchor "tl"
6056 borderDistance 6
6057 ]
6058 ]
6059
6060 node
6061 [
6062 id 11
6063 graphics
6064 [
6065 w 269.5
6066 h 110
6067 type "rectangle"
6068 fill "#FFFFFF"
6069 fill2 "#FFFFFF"
6070 outline "#000000"
6071 ]
6072 LabelGraphics
6073 [
6074 text "null"
6075 outline "#000000"
6076 fill "#FFFFFF"
6077 fontSize 16
6078 fontName "Monospace"
6079 autoSizePolicy "node_width"
6080 anchor "t"
6081 borderDistance 0.0
6082 ]
6083 LabelGraphics
6084 [
6085 text "
6086 EClassifier class
6087 EDataType class
6088 EModelElement class
6089 ENamedElement class
6090 EModelElement class UndefinedPart
6091 ENamedElement class UndefinedPart
6092 "
6093 fontSize 14
6094 fontName "Consolas"
6095 alignment "left"
6096 anchor "tl"
6097 borderDistance 6
6098 ]
6099 ]
6100
6101 node
6102 [
6103 id 12
6104 graphics
6105 [
6106 w 269.5
6107 h 68
6108 type "rectangle"
6109 fill "#FFFFFF"
6110 fill2 "#FFFFFF"
6111 outline "#000000"
6112 ]
6113 LabelGraphics
6114 [
6115 text "null"
6116 outline "#000000"
6117 fill "#FFFFFF"
6118 fontSize 16
6119 fontName "Monospace"
6120 autoSizePolicy "node_width"
6121 anchor "t"
6122 borderDistance 0.0
6123 ]
6124 LabelGraphics
6125 [
6126 text "
6127 EAnnotation class
6128 EModelElement class
6129 EModelElement class UndefinedPart
6130 "
6131 fontSize 14
6132 fontName "Consolas"
6133 alignment "left"
6134 anchor "tl"
6135 borderDistance 6
6136 ]
6137 ]
6138
6139 node
6140 [
6141 id 13
6142 graphics
6143 [
6144 w 269.5
6145 h 110
6146 type "rectangle"
6147 fill "#FFFFFF"
6148 fill2 "#FFFFFF"
6149 outline "#000000"
6150 ]
6151 LabelGraphics
6152 [
6153 text "null"
6154 outline "#000000"
6155 fill "#FFFFFF"
6156 fontSize 16
6157 fontName "Monospace"
6158 autoSizePolicy "node_width"
6159 anchor "t"
6160 borderDistance 0.0
6161 ]
6162 LabelGraphics
6163 [
6164 text "
6165 EClass class
6166 EClassifier class
6167 EModelElement class
6168 ENamedElement class
6169 EModelElement class UndefinedPart
6170 ENamedElement class UndefinedPart
6171 "
6172 fontSize 14
6173 fontName "Consolas"
6174 alignment "left"
6175 anchor "tl"
6176 borderDistance 6
6177 ]
6178 ]
6179
6180 node
6181 [
6182 id 14
6183 graphics
6184 [
6185 w 269.5
6186 h 110
6187 type "rectangle"
6188 fill "#FFFFFF"
6189 fill2 "#FFFFFF"
6190 outline "#000000"
6191 ]
6192 LabelGraphics
6193 [
6194 text "null"
6195 outline "#000000"
6196 fill "#FFFFFF"
6197 fontSize 16
6198 fontName "Monospace"
6199 autoSizePolicy "node_width"
6200 anchor "t"
6201 borderDistance 0.0
6202 ]
6203 LabelGraphics
6204 [
6205 text "
6206 EClassifier class
6207 EDataType class
6208 EModelElement class
6209 ENamedElement class
6210 EModelElement class UndefinedPart
6211 ENamedElement class UndefinedPart
6212 "
6213 fontSize 14
6214 fontName "Consolas"
6215 alignment "left"
6216 anchor "tl"
6217 borderDistance 6
6218 ]
6219 ]
6220
6221 node
6222 [
6223 id 15
6224 graphics
6225 [
6226 w 269.5
6227 h 68
6228 type "rectangle"
6229 fill "#FFFFFF"
6230 fill2 "#FFFFFF"
6231 outline "#000000"
6232 ]
6233 LabelGraphics
6234 [
6235 text "null"
6236 outline "#000000"
6237 fill "#FFFFFF"
6238 fontSize 16
6239 fontName "Monospace"
6240 autoSizePolicy "node_width"
6241 anchor "t"
6242 borderDistance 0.0
6243 ]
6244 LabelGraphics
6245 [
6246 text "
6247 EAnnotation class
6248 EModelElement class
6249 EModelElement class UndefinedPart
6250 "
6251 fontSize 14
6252 fontName "Consolas"
6253 alignment "left"
6254 anchor "tl"
6255 borderDistance 6
6256 ]
6257 ]
6258
6259 node
6260 [
6261 id 16
6262 graphics
6263 [
6264 w 112.2
6265 h 26
6266 type "rectangle"
6267 fill "#FFFFFF"
6268 fill2 "#FFFFFF"
6269 outline "#000000"
6270 ]
6271 LabelGraphics
6272 [
6273 text "New Integers"
6274 outline "#000000"
6275 fill "#FFFFFF"
6276 fontSize 16
6277 fontName "Monospace"
6278 autoSizePolicy "node_width"
6279 anchor "t"
6280 borderDistance 0.0
6281 ]
6282 LabelGraphics
6283 [
6284 text "
6285 "
6286 fontSize 14
6287 fontName "Consolas"
6288 alignment "left"
6289 anchor "tl"
6290 borderDistance 6
6291 ]
6292 ]
6293
6294 node
6295 [
6296 id 17
6297 graphics
6298 [
6299 w 85.80000000000001
6300 h 26
6301 type "rectangle"
6302 fill "#FFFFFF"
6303 fill2 "#FFFFFF"
6304 outline "#000000"
6305 ]
6306 LabelGraphics
6307 [
6308 text "New Reals"
6309 outline "#000000"
6310 fill "#FFFFFF"
6311 fontSize 16
6312 fontName "Monospace"
6313 autoSizePolicy "node_width"
6314 anchor "t"
6315 borderDistance 0.0
6316 ]
6317 LabelGraphics
6318 [
6319 text "
6320 "
6321 fontSize 14
6322 fontName "Consolas"
6323 alignment "left"
6324 anchor "tl"
6325 borderDistance 6
6326 ]
6327 ]
6328
6329 node
6330 [
6331 id 18
6332 graphics
6333 [
6334 w 103.4
6335 h 26
6336 type "rectangle"
6337 fill "#FFFFFF"
6338 fill2 "#FFFFFF"
6339 outline "#000000"
6340 ]
6341 LabelGraphics
6342 [
6343 text "New Strings"
6344 outline "#000000"
6345 fill "#FFFFFF"
6346 fontSize 16
6347 fontName "Monospace"
6348 autoSizePolicy "node_width"
6349 anchor "t"
6350 borderDistance 0.0
6351 ]
6352 LabelGraphics
6353 [
6354 text "
6355 "
6356 fontSize 14
6357 fontName "Consolas"
6358 alignment "left"
6359 anchor "tl"
6360 borderDistance 6
6361 ]
6362 ]
6363
6364 node
6365 [
6366 id 19
6367 graphics
6368 [
6369 w 103.4
6370 h 26
6371 type "rectangle"
6372 fill "#FFFFFF"
6373 fill2 "#FFFFFF"
6374 outline "#000000"
6375 ]
6376 LabelGraphics
6377 [
6378 text "New Objects"
6379 outline "#000000"
6380 fill "#FFFFFF"
6381 fontSize 16
6382 fontName "Monospace"
6383 autoSizePolicy "node_width"
6384 anchor "t"
6385 borderDistance 0.0
6386 ]
6387 LabelGraphics
6388 [
6389 text "
6390 "
6391 fontSize 14
6392 fontName "Consolas"
6393 alignment "left"
6394 anchor "tl"
6395 borderDistance 6
6396 ]
6397 ]
6398 edge
6399 [
6400 source 12
6401 target 0
6402 graphics
6403 [
6404 fill "#000000"
6405 targetArrow "standard"
6406 ]
6407 LabelGraphics
6408 [
6409 text "eModelElement reference EAnnotation"
6410 fontSize 14
6411 fontName "Consolas"
6412 configuration "AutoFlippingLabel"
6413 model "six_pos"
6414 position "thead"
6415 ]
6416 ]
6417 edge
6418 [
6419 source 15
6420 target 0
6421 graphics
6422 [
6423 fill "#000000"
6424 targetArrow "standard"
6425 ]
6426 LabelGraphics
6427 [
6428 text "eModelElement reference EAnnotation"
6429 fontSize 14
6430 fontName "Consolas"
6431 configuration "AutoFlippingLabel"
6432 model "six_pos"
6433 position "thead"
6434 ]
6435 ]
6436 edge
6437 [
6438 source 11
6439 target 0
6440 graphics
6441 [
6442 fill "#000000"
6443 targetArrow "standard"
6444 ]
6445 LabelGraphics
6446 [
6447 text "ePackage reference EClassifier"
6448 fontSize 14
6449 fontName "Consolas"
6450 configuration "AutoFlippingLabel"
6451 model "six_pos"
6452 position "thead"
6453 ]
6454 ]
6455 edge
6456 [
6457 source 13
6458 target 0
6459 graphics
6460 [
6461 fill "#000000"
6462 targetArrow "standard"
6463 ]
6464 LabelGraphics
6465 [
6466 text "ePackage reference EClassifier"
6467 fontSize 14
6468 fontName "Consolas"
6469 configuration "AutoFlippingLabel"
6470 model "six_pos"
6471 position "thead"
6472 ]
6473 ]
6474 edge
6475 [
6476 source 14
6477 target 0
6478 graphics
6479 [
6480 fill "#000000"
6481 targetArrow "standard"
6482 ]
6483 LabelGraphics
6484 [
6485 text "ePackage reference EClassifier"
6486 fontSize 14
6487 fontName "Consolas"
6488 configuration "AutoFlippingLabel"
6489 model "six_pos"
6490 position "thead"
6491 ]
6492 ]
6493 edge
6494 [
6495 source 0
6496 target 12
6497 graphics
6498 [
6499 fill "#000000"
6500 width 3
6501 targetArrow "standard"
6502 ]
6503 LabelGraphics
6504 [
6505 text "eAnnotations reference EModelElement"
6506 fontSize 14
6507 fontName "Consolas"
6508 configuration "AutoFlippingLabel"
6509 model "six_pos"
6510 position "thead"
6511 ]
6512 ]
6513 edge
6514 [
6515 source 0
6516 target 15
6517 graphics
6518 [
6519 fill "#000000"
6520 width 3
6521 targetArrow "standard"
6522 ]
6523 LabelGraphics
6524 [
6525 text "eAnnotations reference EModelElement"
6526 fontSize 14
6527 fontName "Consolas"
6528 configuration "AutoFlippingLabel"
6529 model "six_pos"
6530 position "thead"
6531 ]
6532 ]
6533 edge
6534 [
6535 source 0
6536 target 11
6537 graphics
6538 [
6539 fill "#000000"
6540 width 3
6541 targetArrow "standard"
6542 ]
6543 LabelGraphics
6544 [
6545 text "eClassifiers reference EPackage"
6546 fontSize 14
6547 fontName "Consolas"
6548 configuration "AutoFlippingLabel"
6549 model "six_pos"
6550 position "thead"
6551 ]
6552 ]
6553 edge
6554 [
6555 source 0
6556 target 13
6557 graphics
6558 [
6559 fill "#000000"
6560 width 3
6561 targetArrow "standard"
6562 ]
6563 LabelGraphics
6564 [
6565 text "eClassifiers reference EPackage"
6566 fontSize 14
6567 fontName "Consolas"
6568 configuration "AutoFlippingLabel"
6569 model "six_pos"
6570 position "thead"
6571 ]
6572 ]
6573 edge
6574 [
6575 source 0
6576 target 14
6577 graphics
6578 [
6579 fill "#000000"
6580 width 3
6581 targetArrow "standard"
6582 ]
6583 LabelGraphics
6584 [
6585 text "eClassifiers reference EPackage"
6586 fontSize 14
6587 fontName "Consolas"
6588 configuration "AutoFlippingLabel"
6589 model "six_pos"
6590 position "thead"
6591 ]
6592 ]
6593 edge
6594 [
6595 source 12
6596 target 7
6597 graphics
6598 [
6599 fill "#000000"
6600 targetArrow "standard"
6601 ]
6602 LabelGraphics
6603 [
6604 text "source attribute EAnnotation"
6605 fontSize 14
6606 fontName "Consolas"
6607 configuration "AutoFlippingLabel"
6608 model "six_pos"
6609 position "thead"
6610 ]
6611 ]
6612 edge
6613 [
6614 source 11
6615 target 8
6616 graphics
6617 [
6618 fill "#000000"
6619 targetArrow "standard"
6620 ]
6621 LabelGraphics
6622 [
6623 text "instanceClassName attribute EClassifier"
6624 fontSize 14
6625 fontName "Consolas"
6626 configuration "AutoFlippingLabel"
6627 model "six_pos"
6628 position "thead"
6629 ]
6630 ]
6631 edge
6632 [
6633 source 11
6634 target 9
6635 graphics
6636 [
6637 fill "#000000"
6638 targetArrow "standard"
6639 ]
6640 LabelGraphics
6641 [
6642 text "instanceTypeName attribute EClassifier"
6643 fontSize 14
6644 fontName "Consolas"
6645 configuration "AutoFlippingLabel"
6646 model "six_pos"
6647 position "thead"
6648 ]
6649 ]
6650 edge
6651 [
6652 source 0
6653 target 10
6654 graphics
6655 [
6656 fill "#000000"
6657 targetArrow "standard"
6658 ]
6659 LabelGraphics
6660 [
6661 text "name attribute ENamedElement"
6662 fontSize 14
6663 fontName "Consolas"
6664 configuration "AutoFlippingLabel"
6665 model "six_pos"
6666 position "thead"
6667 ]
6668 ]
6669 edge
6670 [
6671 source 11
6672 target 8
6673 graphics
6674 [
6675 fill "#000000"
6676 targetArrow "standard"
6677 ]
6678 LabelGraphics
6679 [
6680 text "name attribute ENamedElement"
6681 fontSize 14
6682 fontName "Consolas"
6683 configuration "AutoFlippingLabel"
6684 model "six_pos"
6685 position "thead"
6686 ]
6687 ]
6688 edge
6689 [
6690 source 13
6691 target 9
6692 graphics
6693 [
6694 fill "#000000"
6695 targetArrow "standard"
6696 ]
6697 LabelGraphics
6698 [
6699 text "name attribute ENamedElement"
6700 fontSize 14
6701 fontName "Consolas"
6702 configuration "AutoFlippingLabel"
6703 model "six_pos"
6704 position "thead"
6705 ]
6706 ]
6707 edge
6708 [
6709 source 14
6710 target 8
6711 graphics
6712 [
6713 fill "#000000"
6714 targetArrow "standard"
6715 ]
6716 LabelGraphics
6717 [
6718 text "name attribute ENamedElement"
6719 fontSize 14
6720 fontName "Consolas"
6721 configuration "AutoFlippingLabel"
6722 model "six_pos"
6723 position "thead"
6724 ]
6725 ]
6726 edge
6727 [
6728 source 0
6729 target 9
6730 graphics
6731 [
6732 fill "#000000"
6733 targetArrow "standard"
6734 ]
6735 LabelGraphics
6736 [
6737 text "nsURI attribute EPackage"
6738 fontSize 14
6739 fontName "Consolas"
6740 configuration "AutoFlippingLabel"
6741 model "six_pos"
6742 position "thead"
6743 ]
6744 ]
6745 edge
6746 [
6747 source 0
6748 target 8
6749 graphics
6750 [
6751 fill "#000000"
6752 targetArrow "standard"
6753 ]
6754 LabelGraphics
6755 [
6756 text "nsPrefix attribute EPackage"
6757 fontSize 14
6758 fontName "Consolas"
6759 configuration "AutoFlippingLabel"
6760 model "six_pos"
6761 position "thead"
6762 ]
6763 ]
6764]
6765graph
6766[
6767 node
6768 [
6769 id 0
6770 graphics
6771 [
6772 w 254.10000000000002
6773 h 110
6774 type "rectangle"
6775 fill "#FFFFFF"
6776 fill2 "#FFFFFF"
6777 outline "#000000"
6778 ]
6779 LabelGraphics
6780 [
6781 text "o 1"
6782 outline "#000000"
6783 fill "#FFFFFF"
6784 fontSize 16
6785 fontName "Monospace"
6786 autoSizePolicy "node_width"
6787 anchor "t"
6788 borderDistance 0.0
6789 ]
6790 LabelGraphics
6791 [
6792 text "
6793 EModelElement class DefinedPart
6794 ENamedElement class DefinedPart
6795 EPackage class DefinedPart
6796 EModelElement class
6797 ENamedElement class
6798 EPackage class
6799 "
6800 fontSize 14
6801 fontName "Consolas"
6802 alignment "left"
6803 anchor "tl"
6804 borderDistance 6
6805 ]
6806 ]
6807
6808 node
6809 [
6810 id 1
6811 graphics
6812 [
6813 w 41.800000000000004
6814 h 26
6815 type "rectangle"
6816 fill "#FFFFFF"
6817 fill2 "#FFFFFF"
6818 outline "#000000"
6819 ]
6820 LabelGraphics
6821 [
6822 text "true"
6823 outline "#000000"
6824 fill "#FFFFFF"
6825 fontSize 16
6826 fontName "Monospace"
6827 autoSizePolicy "node_width"
6828 anchor "t"
6829 borderDistance 0.0
6830 ]
6831 LabelGraphics
6832 [
6833 text "
6834 "
6835 fontSize 14
6836 fontName "Consolas"
6837 alignment "left"
6838 anchor "tl"
6839 borderDistance 6
6840 ]
6841 ]
6842
6843 node
6844 [
6845 id 2
6846 graphics
6847 [
6848 w 50.6
6849 h 26
6850 type "rectangle"
6851 fill "#FFFFFF"
6852 fill2 "#FFFFFF"
6853 outline "#000000"
6854 ]
6855 LabelGraphics
6856 [
6857 text "false"
6858 outline "#000000"
6859 fill "#FFFFFF"
6860 fontSize 16
6861 fontName "Monospace"
6862 autoSizePolicy "node_width"
6863 anchor "t"
6864 borderDistance 0.0
6865 ]
6866 LabelGraphics
6867 [
6868 text "
6869 "
6870 fontSize 14
6871 fontName "Consolas"
6872 alignment "left"
6873 anchor "tl"
6874 borderDistance 6
6875 ]
6876 ]
6877
6878 node
6879 [
6880 id 3
6881 graphics
6882 [
6883 w 24.200000000000003
6884 h 26
6885 type "rectangle"
6886 fill "#FFFFFF"
6887 fill2 "#FFFFFF"
6888 outline "#000000"
6889 ]
6890 LabelGraphics
6891 [
6892 text "-1"
6893 outline "#000000"
6894 fill "#FFFFFF"
6895 fontSize 16
6896 fontName "Monospace"
6897 autoSizePolicy "node_width"
6898 anchor "t"
6899 borderDistance 0.0
6900 ]
6901 LabelGraphics
6902 [
6903 text "
6904 "
6905 fontSize 14
6906 fontName "Consolas"
6907 alignment "left"
6908 anchor "tl"
6909 borderDistance 6
6910 ]
6911 ]
6912
6913 node
6914 [
6915 id 4
6916 graphics
6917 [
6918 w 15.400000000000002
6919 h 26
6920 type "rectangle"
6921 fill "#FFFFFF"
6922 fill2 "#FFFFFF"
6923 outline "#000000"
6924 ]
6925 LabelGraphics
6926 [
6927 text "0"
6928 outline "#000000"
6929 fill "#FFFFFF"
6930 fontSize 16
6931 fontName "Monospace"
6932 autoSizePolicy "node_width"
6933 anchor "t"
6934 borderDistance 0.0
6935 ]
6936 LabelGraphics
6937 [
6938 text "
6939 "
6940 fontSize 14
6941 fontName "Consolas"
6942 alignment "left"
6943 anchor "tl"
6944 borderDistance 6
6945 ]
6946 ]
6947
6948 node
6949 [
6950 id 5
6951 graphics
6952 [
6953 w 15.400000000000002
6954 h 26
6955 type "rectangle"
6956 fill "#FFFFFF"
6957 fill2 "#FFFFFF"
6958 outline "#000000"
6959 ]
6960 LabelGraphics
6961 [
6962 text "1"
6963 outline "#000000"
6964 fill "#FFFFFF"
6965 fontSize 16
6966 fontName "Monospace"
6967 autoSizePolicy "node_width"
6968 anchor "t"
6969 borderDistance 0.0
6970 ]
6971 LabelGraphics
6972 [
6973 text "
6974 "
6975 fontSize 14
6976 fontName "Consolas"
6977 alignment "left"
6978 anchor "tl"
6979 borderDistance 6
6980 ]
6981 ]
6982
6983 node
6984 [
6985 id 6
6986 graphics
6987 [
6988 w 33.0
6989 h 26
6990 type "rectangle"
6991 fill "#FFFFFF"
6992 fill2 "#FFFFFF"
6993 outline "#000000"
6994 ]
6995 LabelGraphics
6996 [
6997 text ""A""
6998 outline "#000000"
6999 fill "#FFFFFF"
7000 fontSize 16
7001 fontName "Monospace"
7002 autoSizePolicy "node_width"
7003 anchor "t"
7004 borderDistance 0.0
7005 ]
7006 LabelGraphics
7007 [
7008 text "
7009 "
7010 fontSize 14
7011 fontName "Consolas"
7012 alignment "left"
7013 anchor "tl"
7014 borderDistance 6
7015 ]
7016 ]
7017
7018 node
7019 [
7020 id 7
7021 graphics
7022 [
7023 w 33.0
7024 h 26
7025 type "rectangle"
7026 fill "#FFFFFF"
7027 fill2 "#FFFFFF"
7028 outline "#000000"
7029 ]
7030 LabelGraphics
7031 [
7032 text ""B""
7033 outline "#000000"
7034 fill "#FFFFFF"
7035 fontSize 16
7036 fontName "Monospace"
7037 autoSizePolicy "node_width"
7038 anchor "t"
7039 borderDistance 0.0
7040 ]
7041 LabelGraphics
7042 [
7043 text "
7044 "
7045 fontSize 14
7046 fontName "Consolas"
7047 alignment "left"
7048 anchor "tl"
7049 borderDistance 6
7050 ]
7051 ]
7052
7053 node
7054 [
7055 id 8
7056 graphics
7057 [
7058 w 94.60000000000001
7059 h 26
7060 type "rectangle"
7061 fill "#FFFFFF"
7062 fill2 "#FFFFFF"
7063 outline "#000000"
7064 ]
7065 LabelGraphics
7066 [
7067 text ""nsPrefix""
7068 outline "#000000"
7069 fill "#FFFFFF"
7070 fontSize 16
7071 fontName "Monospace"
7072 autoSizePolicy "node_width"
7073 anchor "t"
7074 borderDistance 0.0
7075 ]
7076 LabelGraphics
7077 [
7078 text "
7079 "
7080 fontSize 14
7081 fontName "Consolas"
7082 alignment "left"
7083 anchor "tl"
7084 borderDistance 6
7085 ]
7086 ]
7087
7088 node
7089 [
7090 id 9
7091 graphics
7092 [
7093 w 68.2
7094 h 26
7095 type "rectangle"
7096 fill "#FFFFFF"
7097 fill2 "#FFFFFF"
7098 outline "#000000"
7099 ]
7100 LabelGraphics
7101 [
7102 text ""nsUri""
7103 outline "#000000"
7104 fill "#FFFFFF"
7105 fontSize 16
7106 fontName "Monospace"
7107 autoSizePolicy "node_width"
7108 anchor "t"
7109 borderDistance 0.0
7110 ]
7111 LabelGraphics
7112 [
7113 text "
7114 "
7115 fontSize 14
7116 fontName "Consolas"
7117 alignment "left"
7118 anchor "tl"
7119 borderDistance 6
7120 ]
7121 ]
7122
7123 node
7124 [
7125 id 10
7126 graphics
7127 [
7128 w 121.00000000000001
7129 h 26
7130 type "rectangle"
7131 fill "#FFFFFF"
7132 fill2 "#FFFFFF"
7133 outline "#000000"
7134 ]
7135 LabelGraphics
7136 [
7137 text ""packageName""
7138 outline "#000000"
7139 fill "#FFFFFF"
7140 fontSize 16
7141 fontName "Monospace"
7142 autoSizePolicy "node_width"
7143 anchor "t"
7144 borderDistance 0.0
7145 ]
7146 LabelGraphics
7147 [
7148 text "
7149 "
7150 fontSize 14
7151 fontName "Consolas"
7152 alignment "left"
7153 anchor "tl"
7154 borderDistance 6
7155 ]
7156 ]
7157
7158 node
7159 [
7160 id 11
7161 graphics
7162 [
7163 w 269.5
7164 h 124
7165 type "rectangle"
7166 fill "#FFFFFF"
7167 fill2 "#FFFFFF"
7168 outline "#000000"
7169 ]
7170 LabelGraphics
7171 [
7172 text "null"
7173 outline "#000000"
7174 fill "#FFFFFF"
7175 fontSize 16
7176 fontName "Monospace"
7177 autoSizePolicy "node_width"
7178 anchor "t"
7179 borderDistance 0.0
7180 ]
7181 LabelGraphics
7182 [
7183 text "
7184 EClassifier class
7185 EDataType class
7186 EEnum class
7187 EModelElement class
7188 ENamedElement class
7189 EModelElement class UndefinedPart
7190 ENamedElement class UndefinedPart
7191 "
7192 fontSize 14
7193 fontName "Consolas"
7194 alignment "left"
7195 anchor "tl"
7196 borderDistance 6
7197 ]
7198 ]
7199
7200 node
7201 [
7202 id 12
7203 graphics
7204 [
7205 w 269.5
7206 h 124
7207 type "rectangle"
7208 fill "#FFFFFF"
7209 fill2 "#FFFFFF"
7210 outline "#000000"
7211 ]
7212 LabelGraphics
7213 [
7214 text "null"
7215 outline "#000000"
7216 fill "#FFFFFF"
7217 fontSize 16
7218 fontName "Monospace"
7219 autoSizePolicy "node_width"
7220 anchor "t"
7221 borderDistance 0.0
7222 ]
7223 LabelGraphics
7224 [
7225 text "
7226 EClassifier class
7227 EDataType class
7228 EEnum class
7229 EModelElement class
7230 ENamedElement class
7231 EModelElement class UndefinedPart
7232 ENamedElement class UndefinedPart
7233 "
7234 fontSize 14
7235 fontName "Consolas"
7236 alignment "left"
7237 anchor "tl"
7238 borderDistance 6
7239 ]
7240 ]
7241
7242 node
7243 [
7244 id 13
7245 graphics
7246 [
7247 w 269.5
7248 h 96
7249 type "rectangle"
7250 fill "#FFFFFF"
7251 fill2 "#FFFFFF"
7252 outline "#000000"
7253 ]
7254 LabelGraphics
7255 [
7256 text "null"
7257 outline "#000000"
7258 fill "#FFFFFF"
7259 fontSize 16
7260 fontName "Monospace"
7261 autoSizePolicy "node_width"
7262 anchor "t"
7263 borderDistance 0.0
7264 ]
7265 LabelGraphics
7266 [
7267 text "
7268 EEnumLiteral class
7269 EModelElement class
7270 ENamedElement class
7271 EModelElement class UndefinedPart
7272 ENamedElement class UndefinedPart
7273 "
7274 fontSize 14
7275 fontName "Consolas"
7276 alignment "left"
7277 anchor "tl"
7278 borderDistance 6
7279 ]
7280 ]
7281
7282 node
7283 [
7284 id 14
7285 graphics
7286 [
7287 w 269.5
7288 h 68
7289 type "rectangle"
7290 fill "#FFFFFF"
7291 fill2 "#FFFFFF"
7292 outline "#000000"
7293 ]
7294 LabelGraphics
7295 [
7296 text "null"
7297 outline "#000000"
7298 fill "#FFFFFF"
7299 fontSize 16
7300 fontName "Monospace"
7301 autoSizePolicy "node_width"
7302 anchor "t"
7303 borderDistance 0.0
7304 ]
7305 LabelGraphics
7306 [
7307 text "
7308 EAnnotation class
7309 EModelElement class
7310 EModelElement class UndefinedPart
7311 "
7312 fontSize 14
7313 fontName "Consolas"
7314 alignment "left"
7315 anchor "tl"
7316 borderDistance 6
7317 ]
7318 ]
7319
7320 node
7321 [
7322 id 15
7323 graphics
7324 [
7325 w 269.5
7326 h 96
7327 type "rectangle"
7328 fill "#FFFFFF"
7329 fill2 "#FFFFFF"
7330 outline "#000000"
7331 ]
7332 LabelGraphics
7333 [
7334 text "null"
7335 outline "#000000"
7336 fill "#FFFFFF"
7337 fontSize 16
7338 fontName "Monospace"
7339 autoSizePolicy "node_width"
7340 anchor "t"
7341 borderDistance 0.0
7342 ]
7343 LabelGraphics
7344 [
7345 text "
7346 EModelElement class
7347 ENamedElement class
7348 ETypeParameter class
7349 EModelElement class UndefinedPart
7350 ENamedElement class UndefinedPart
7351 "
7352 fontSize 14
7353 fontName "Consolas"
7354 alignment "left"
7355 anchor "tl"
7356 borderDistance 6
7357 ]
7358 ]
7359
7360 node
7361 [
7362 id 16
7363 graphics
7364 [
7365 w 112.2
7366 h 26
7367 type "rectangle"
7368 fill "#FFFFFF"
7369 fill2 "#FFFFFF"
7370 outline "#000000"
7371 ]
7372 LabelGraphics
7373 [
7374 text "New Integers"
7375 outline "#000000"
7376 fill "#FFFFFF"
7377 fontSize 16
7378 fontName "Monospace"
7379 autoSizePolicy "node_width"
7380 anchor "t"
7381 borderDistance 0.0
7382 ]
7383 LabelGraphics
7384 [
7385 text "
7386 "
7387 fontSize 14
7388 fontName "Consolas"
7389 alignment "left"
7390 anchor "tl"
7391 borderDistance 6
7392 ]
7393 ]
7394
7395 node
7396 [
7397 id 17
7398 graphics
7399 [
7400 w 85.80000000000001
7401 h 26
7402 type "rectangle"
7403 fill "#FFFFFF"
7404 fill2 "#FFFFFF"
7405 outline "#000000"
7406 ]
7407 LabelGraphics
7408 [
7409 text "New Reals"
7410 outline "#000000"
7411 fill "#FFFFFF"
7412 fontSize 16
7413 fontName "Monospace"
7414 autoSizePolicy "node_width"
7415 anchor "t"
7416 borderDistance 0.0
7417 ]
7418 LabelGraphics
7419 [
7420 text "
7421 "
7422 fontSize 14
7423 fontName "Consolas"
7424 alignment "left"
7425 anchor "tl"
7426 borderDistance 6
7427 ]
7428 ]
7429
7430 node
7431 [
7432 id 18
7433 graphics
7434 [
7435 w 103.4
7436 h 26
7437 type "rectangle"
7438 fill "#FFFFFF"
7439 fill2 "#FFFFFF"
7440 outline "#000000"
7441 ]
7442 LabelGraphics
7443 [
7444 text "New Strings"
7445 outline "#000000"
7446 fill "#FFFFFF"
7447 fontSize 16
7448 fontName "Monospace"
7449 autoSizePolicy "node_width"
7450 anchor "t"
7451 borderDistance 0.0
7452 ]
7453 LabelGraphics
7454 [
7455 text "
7456 "
7457 fontSize 14
7458 fontName "Consolas"
7459 alignment "left"
7460 anchor "tl"
7461 borderDistance 6
7462 ]
7463 ]
7464
7465 node
7466 [
7467 id 19
7468 graphics
7469 [
7470 w 103.4
7471 h 26
7472 type "rectangle"
7473 fill "#FFFFFF"
7474 fill2 "#FFFFFF"
7475 outline "#000000"
7476 ]
7477 LabelGraphics
7478 [
7479 text "New Objects"
7480 outline "#000000"
7481 fill "#FFFFFF"
7482 fontSize 16
7483 fontName "Monospace"
7484 autoSizePolicy "node_width"
7485 anchor "t"
7486 borderDistance 0.0
7487 ]
7488 LabelGraphics
7489 [
7490 text "
7491 "
7492 fontSize 14
7493 fontName "Consolas"
7494 alignment "left"
7495 anchor "tl"
7496 borderDistance 6
7497 ]
7498 ]
7499 edge
7500 [
7501 source 14
7502 target 0
7503 graphics
7504 [
7505 fill "#000000"
7506 targetArrow "standard"
7507 ]
7508 LabelGraphics
7509 [
7510 text "eModelElement reference EAnnotation"
7511 fontSize 14
7512 fontName "Consolas"
7513 configuration "AutoFlippingLabel"
7514 model "six_pos"
7515 position "thead"
7516 ]
7517 ]
7518 edge
7519 [
7520 source 11
7521 target 0
7522 graphics
7523 [
7524 fill "#000000"
7525 targetArrow "standard"
7526 ]
7527 LabelGraphics
7528 [
7529 text "ePackage reference EClassifier"
7530 fontSize 14
7531 fontName "Consolas"
7532 configuration "AutoFlippingLabel"
7533 model "six_pos"
7534 position "thead"
7535 ]
7536 ]
7537 edge
7538 [
7539 source 12
7540 target 0
7541 graphics
7542 [
7543 fill "#000000"
7544 targetArrow "standard"
7545 ]
7546 LabelGraphics
7547 [
7548 text "ePackage reference EClassifier"
7549 fontSize 14
7550 fontName "Consolas"
7551 configuration "AutoFlippingLabel"
7552 model "six_pos"
7553 position "thead"
7554 ]
7555 ]
7556 edge
7557 [
7558 source 12
7559 target 15
7560 graphics
7561 [
7562 fill "#000000"
7563 width 3
7564 targetArrow "standard"
7565 ]
7566 LabelGraphics
7567 [
7568 text "eTypeParameters reference EClassifier"
7569 fontSize 14
7570 fontName "Consolas"
7571 configuration "AutoFlippingLabel"
7572 model "six_pos"
7573 position "thead"
7574 ]
7575 ]
7576 edge
7577 [
7578 source 11
7579 target 13
7580 graphics
7581 [
7582 fill "#000000"
7583 width 3
7584 targetArrow "standard"
7585 ]
7586 LabelGraphics
7587 [
7588 text "eLiterals reference EEnum"
7589 fontSize 14
7590 fontName "Consolas"
7591 configuration "AutoFlippingLabel"
7592 model "six_pos"
7593 position "thead"
7594 ]
7595 ]
7596 edge
7597 [
7598 source 13
7599 target 11
7600 graphics
7601 [
7602 fill "#000000"
7603 targetArrow "standard"
7604 ]
7605 LabelGraphics
7606 [
7607 text "eEnum reference EEnumLiteral"
7608 fontSize 14
7609 fontName "Consolas"
7610 configuration "AutoFlippingLabel"
7611 model "six_pos"
7612 position "thead"
7613 ]
7614 ]
7615 edge
7616 [
7617 source 0
7618 target 14
7619 graphics
7620 [
7621 fill "#000000"
7622 width 3
7623 targetArrow "standard"
7624 ]
7625 LabelGraphics
7626 [
7627 text "eAnnotations reference EModelElement"
7628 fontSize 14
7629 fontName "Consolas"
7630 configuration "AutoFlippingLabel"
7631 model "six_pos"
7632 position "thead"
7633 ]
7634 ]
7635 edge
7636 [
7637 source 0
7638 target 11
7639 graphics
7640 [
7641 fill "#000000"
7642 width 3
7643 targetArrow "standard"
7644 ]
7645 LabelGraphics
7646 [
7647 text "eClassifiers reference EPackage"
7648 fontSize 14
7649 fontName "Consolas"
7650 configuration "AutoFlippingLabel"
7651 model "six_pos"
7652 position "thead"
7653 ]
7654 ]
7655 edge
7656 [
7657 source 0
7658 target 12
7659 graphics
7660 [
7661 fill "#000000"
7662 width 3
7663 targetArrow "standard"
7664 ]
7665 LabelGraphics
7666 [
7667 text "eClassifiers reference EPackage"
7668 fontSize 14
7669 fontName "Consolas"
7670 configuration "AutoFlippingLabel"
7671 model "six_pos"
7672 position "thead"
7673 ]
7674 ]
7675 edge
7676 [
7677 source 14
7678 target 10
7679 graphics
7680 [
7681 fill "#000000"
7682 targetArrow "standard"
7683 ]
7684 LabelGraphics
7685 [
7686 text "source attribute EAnnotation"
7687 fontSize 14
7688 fontName "Consolas"
7689 configuration "AutoFlippingLabel"
7690 model "six_pos"
7691 position "thead"
7692 ]
7693 ]
7694 edge
7695 [
7696 source 11
7697 target 8
7698 graphics
7699 [
7700 fill "#000000"
7701 targetArrow "standard"
7702 ]
7703 LabelGraphics
7704 [
7705 text "instanceClassName attribute EClassifier"
7706 fontSize 14
7707 fontName "Consolas"
7708 configuration "AutoFlippingLabel"
7709 model "six_pos"
7710 position "thead"
7711 ]
7712 ]
7713 edge
7714 [
7715 source 11
7716 target 9
7717 graphics
7718 [
7719 fill "#000000"
7720 targetArrow "standard"
7721 ]
7722 LabelGraphics
7723 [
7724 text "instanceTypeName attribute EClassifier"
7725 fontSize 14
7726 fontName "Consolas"
7727 configuration "AutoFlippingLabel"
7728 model "six_pos"
7729 position "thead"
7730 ]
7731 ]
7732 edge
7733 [
7734 source 12
7735 target 9
7736 graphics
7737 [
7738 fill "#000000"
7739 targetArrow "standard"
7740 ]
7741 LabelGraphics
7742 [
7743 text "instanceTypeName attribute EClassifier"
7744 fontSize 14
7745 fontName "Consolas"
7746 configuration "AutoFlippingLabel"
7747 model "six_pos"
7748 position "thead"
7749 ]
7750 ]
7751 edge
7752 [
7753 source 11
7754 target 2
7755 graphics
7756 [
7757 fill "#000000"
7758 targetArrow "standard"
7759 ]
7760 LabelGraphics
7761 [
7762 text "serializable attribute EDataType"
7763 fontSize 14
7764 fontName "Consolas"
7765 configuration "AutoFlippingLabel"
7766 model "six_pos"
7767 position "thead"
7768 ]
7769 ]
7770 edge
7771 [
7772 source 12
7773 target 2
7774 graphics
7775 [
7776 fill "#000000"
7777 targetArrow "standard"
7778 ]
7779 LabelGraphics
7780 [
7781 text "serializable attribute EDataType"
7782 fontSize 14
7783 fontName "Consolas"
7784 configuration "AutoFlippingLabel"
7785 model "six_pos"
7786 position "thead"
7787 ]
7788 ]
7789 edge
7790 [
7791 source 13
7792 target 9
7793 graphics
7794 [
7795 fill "#000000"
7796 targetArrow "standard"
7797 ]
7798 LabelGraphics
7799 [
7800 text "literal attribute EEnumLiteral"
7801 fontSize 14
7802 fontName "Consolas"
7803 configuration "AutoFlippingLabel"
7804 model "six_pos"
7805 position "thead"
7806 ]
7807 ]
7808 edge
7809 [
7810 source 0
7811 target 10
7812 graphics
7813 [
7814 fill "#000000"
7815 targetArrow "standard"
7816 ]
7817 LabelGraphics
7818 [
7819 text "name attribute ENamedElement"
7820 fontSize 14
7821 fontName "Consolas"
7822 configuration "AutoFlippingLabel"
7823 model "six_pos"
7824 position "thead"
7825 ]
7826 ]
7827 edge
7828 [
7829 source 12
7830 target 10
7831 graphics
7832 [
7833 fill "#000000"
7834 targetArrow "standard"
7835 ]
7836 LabelGraphics
7837 [
7838 text "name attribute ENamedElement"
7839 fontSize 14
7840 fontName "Consolas"
7841 configuration "AutoFlippingLabel"
7842 model "six_pos"
7843 position "thead"
7844 ]
7845 ]
7846 edge
7847 [
7848 source 0
7849 target 9
7850 graphics
7851 [
7852 fill "#000000"
7853 targetArrow "standard"
7854 ]
7855 LabelGraphics
7856 [
7857 text "nsURI attribute EPackage"
7858 fontSize 14
7859 fontName "Consolas"
7860 configuration "AutoFlippingLabel"
7861 model "six_pos"
7862 position "thead"
7863 ]
7864 ]
7865 edge
7866 [
7867 source 0
7868 target 8
7869 graphics
7870 [
7871 fill "#000000"
7872 targetArrow "standard"
7873 ]
7874 LabelGraphics
7875 [
7876 text "nsPrefix attribute EPackage"
7877 fontSize 14
7878 fontName "Consolas"
7879 configuration "AutoFlippingLabel"
7880 model "six_pos"
7881 position "thead"
7882 ]
7883 ]
7884]
7885graph
7886[
7887 node
7888 [
7889 id 0
7890 graphics
7891 [
7892 w 254.10000000000002
7893 h 110
7894 type "rectangle"
7895 fill "#FFFFFF"
7896 fill2 "#FFFFFF"
7897 outline "#000000"
7898 ]
7899 LabelGraphics
7900 [
7901 text "o 1"
7902 outline "#000000"
7903 fill "#FFFFFF"
7904 fontSize 16
7905 fontName "Monospace"
7906 autoSizePolicy "node_width"
7907 anchor "t"
7908 borderDistance 0.0
7909 ]
7910 LabelGraphics
7911 [
7912 text "
7913 EModelElement class DefinedPart
7914 ENamedElement class DefinedPart
7915 EPackage class DefinedPart
7916 EModelElement class
7917 ENamedElement class
7918 EPackage class
7919 "
7920 fontSize 14
7921 fontName "Consolas"
7922 alignment "left"
7923 anchor "tl"
7924 borderDistance 6
7925 ]
7926 ]
7927
7928 node
7929 [
7930 id 1
7931 graphics
7932 [
7933 w 41.800000000000004
7934 h 26
7935 type "rectangle"
7936 fill "#FFFFFF"
7937 fill2 "#FFFFFF"
7938 outline "#000000"
7939 ]
7940 LabelGraphics
7941 [
7942 text "true"
7943 outline "#000000"
7944 fill "#FFFFFF"
7945 fontSize 16
7946 fontName "Monospace"
7947 autoSizePolicy "node_width"
7948 anchor "t"
7949 borderDistance 0.0
7950 ]
7951 LabelGraphics
7952 [
7953 text "
7954 "
7955 fontSize 14
7956 fontName "Consolas"
7957 alignment "left"
7958 anchor "tl"
7959 borderDistance 6
7960 ]
7961 ]
7962
7963 node
7964 [
7965 id 2
7966 graphics
7967 [
7968 w 50.6
7969 h 26
7970 type "rectangle"
7971 fill "#FFFFFF"
7972 fill2 "#FFFFFF"
7973 outline "#000000"
7974 ]
7975 LabelGraphics
7976 [
7977 text "false"
7978 outline "#000000"
7979 fill "#FFFFFF"
7980 fontSize 16
7981 fontName "Monospace"
7982 autoSizePolicy "node_width"
7983 anchor "t"
7984 borderDistance 0.0
7985 ]
7986 LabelGraphics
7987 [
7988 text "
7989 "
7990 fontSize 14
7991 fontName "Consolas"
7992 alignment "left"
7993 anchor "tl"
7994 borderDistance 6
7995 ]
7996 ]
7997
7998 node
7999 [
8000 id 3
8001 graphics
8002 [
8003 w 24.200000000000003
8004 h 26
8005 type "rectangle"
8006 fill "#FFFFFF"
8007 fill2 "#FFFFFF"
8008 outline "#000000"
8009 ]
8010 LabelGraphics
8011 [
8012 text "-1"
8013 outline "#000000"
8014 fill "#FFFFFF"
8015 fontSize 16
8016 fontName "Monospace"
8017 autoSizePolicy "node_width"
8018 anchor "t"
8019 borderDistance 0.0
8020 ]
8021 LabelGraphics
8022 [
8023 text "
8024 "
8025 fontSize 14
8026 fontName "Consolas"
8027 alignment "left"
8028 anchor "tl"
8029 borderDistance 6
8030 ]
8031 ]
8032
8033 node
8034 [
8035 id 4
8036 graphics
8037 [
8038 w 15.400000000000002
8039 h 26
8040 type "rectangle"
8041 fill "#FFFFFF"
8042 fill2 "#FFFFFF"
8043 outline "#000000"
8044 ]
8045 LabelGraphics
8046 [
8047 text "0"
8048 outline "#000000"
8049 fill "#FFFFFF"
8050 fontSize 16
8051 fontName "Monospace"
8052 autoSizePolicy "node_width"
8053 anchor "t"
8054 borderDistance 0.0
8055 ]
8056 LabelGraphics
8057 [
8058 text "
8059 "
8060 fontSize 14
8061 fontName "Consolas"
8062 alignment "left"
8063 anchor "tl"
8064 borderDistance 6
8065 ]
8066 ]
8067
8068 node
8069 [
8070 id 5
8071 graphics
8072 [
8073 w 15.400000000000002
8074 h 26
8075 type "rectangle"
8076 fill "#FFFFFF"
8077 fill2 "#FFFFFF"
8078 outline "#000000"
8079 ]
8080 LabelGraphics
8081 [
8082 text "1"
8083 outline "#000000"
8084 fill "#FFFFFF"
8085 fontSize 16
8086 fontName "Monospace"
8087 autoSizePolicy "node_width"
8088 anchor "t"
8089 borderDistance 0.0
8090 ]
8091 LabelGraphics
8092 [
8093 text "
8094 "
8095 fontSize 14
8096 fontName "Consolas"
8097 alignment "left"
8098 anchor "tl"
8099 borderDistance 6
8100 ]
8101 ]
8102
8103 node
8104 [
8105 id 6
8106 graphics
8107 [
8108 w 33.0
8109 h 26
8110 type "rectangle"
8111 fill "#FFFFFF"
8112 fill2 "#FFFFFF"
8113 outline "#000000"
8114 ]
8115 LabelGraphics
8116 [
8117 text ""A""
8118 outline "#000000"
8119 fill "#FFFFFF"
8120 fontSize 16
8121 fontName "Monospace"
8122 autoSizePolicy "node_width"
8123 anchor "t"
8124 borderDistance 0.0
8125 ]
8126 LabelGraphics
8127 [
8128 text "
8129 "
8130 fontSize 14
8131 fontName "Consolas"
8132 alignment "left"
8133 anchor "tl"
8134 borderDistance 6
8135 ]
8136 ]
8137
8138 node
8139 [
8140 id 7
8141 graphics
8142 [
8143 w 33.0
8144 h 26
8145 type "rectangle"
8146 fill "#FFFFFF"
8147 fill2 "#FFFFFF"
8148 outline "#000000"
8149 ]
8150 LabelGraphics
8151 [
8152 text ""B""
8153 outline "#000000"
8154 fill "#FFFFFF"
8155 fontSize 16
8156 fontName "Monospace"
8157 autoSizePolicy "node_width"
8158 anchor "t"
8159 borderDistance 0.0
8160 ]
8161 LabelGraphics
8162 [
8163 text "
8164 "
8165 fontSize 14
8166 fontName "Consolas"
8167 alignment "left"
8168 anchor "tl"
8169 borderDistance 6
8170 ]
8171 ]
8172
8173 node
8174 [
8175 id 8
8176 graphics
8177 [
8178 w 94.60000000000001
8179 h 26
8180 type "rectangle"
8181 fill "#FFFFFF"
8182 fill2 "#FFFFFF"
8183 outline "#000000"
8184 ]
8185 LabelGraphics
8186 [
8187 text ""nsPrefix""
8188 outline "#000000"
8189 fill "#FFFFFF"
8190 fontSize 16
8191 fontName "Monospace"
8192 autoSizePolicy "node_width"
8193 anchor "t"
8194 borderDistance 0.0
8195 ]
8196 LabelGraphics
8197 [
8198 text "
8199 "
8200 fontSize 14
8201 fontName "Consolas"
8202 alignment "left"
8203 anchor "tl"
8204 borderDistance 6
8205 ]
8206 ]
8207
8208 node
8209 [
8210 id 9
8211 graphics
8212 [
8213 w 68.2
8214 h 26
8215 type "rectangle"
8216 fill "#FFFFFF"
8217 fill2 "#FFFFFF"
8218 outline "#000000"
8219 ]
8220 LabelGraphics
8221 [
8222 text ""nsUri""
8223 outline "#000000"
8224 fill "#FFFFFF"
8225 fontSize 16
8226 fontName "Monospace"
8227 autoSizePolicy "node_width"
8228 anchor "t"
8229 borderDistance 0.0
8230 ]
8231 LabelGraphics
8232 [
8233 text "
8234 "
8235 fontSize 14
8236 fontName "Consolas"
8237 alignment "left"
8238 anchor "tl"
8239 borderDistance 6
8240 ]
8241 ]
8242
8243 node
8244 [
8245 id 10
8246 graphics
8247 [
8248 w 121.00000000000001
8249 h 26
8250 type "rectangle"
8251 fill "#FFFFFF"
8252 fill2 "#FFFFFF"
8253 outline "#000000"
8254 ]
8255 LabelGraphics
8256 [
8257 text ""packageName""
8258 outline "#000000"
8259 fill "#FFFFFF"
8260 fontSize 16
8261 fontName "Monospace"
8262 autoSizePolicy "node_width"
8263 anchor "t"
8264 borderDistance 0.0
8265 ]
8266 LabelGraphics
8267 [
8268 text "
8269 "
8270 fontSize 14
8271 fontName "Consolas"
8272 alignment "left"
8273 anchor "tl"
8274 borderDistance 6
8275 ]
8276 ]
8277
8278 node
8279 [
8280 id 11
8281 graphics
8282 [
8283 w 269.5
8284 h 110
8285 type "rectangle"
8286 fill "#FFFFFF"
8287 fill2 "#FFFFFF"
8288 outline "#000000"
8289 ]
8290 LabelGraphics
8291 [
8292 text "null"
8293 outline "#000000"
8294 fill "#FFFFFF"
8295 fontSize 16
8296 fontName "Monospace"
8297 autoSizePolicy "node_width"
8298 anchor "t"
8299 borderDistance 0.0
8300 ]
8301 LabelGraphics
8302 [
8303 text "
8304 EClassifier class
8305 EDataType class
8306 EModelElement class
8307 ENamedElement class
8308 EModelElement class UndefinedPart
8309 ENamedElement class UndefinedPart
8310 "
8311 fontSize 14
8312 fontName "Consolas"
8313 alignment "left"
8314 anchor "tl"
8315 borderDistance 6
8316 ]
8317 ]
8318
8319 node
8320 [
8321 id 12
8322 graphics
8323 [
8324 w 269.5
8325 h 110
8326 type "rectangle"
8327 fill "#FFFFFF"
8328 fill2 "#FFFFFF"
8329 outline "#000000"
8330 ]
8331 LabelGraphics
8332 [
8333 text "null"
8334 outline "#000000"
8335 fill "#FFFFFF"
8336 fontSize 16
8337 fontName "Monospace"
8338 autoSizePolicy "node_width"
8339 anchor "t"
8340 borderDistance 0.0
8341 ]
8342 LabelGraphics
8343 [
8344 text "
8345 EModelElement class
8346 ENamedElement class
8347 EPackage class
8348 EModelElement class UndefinedPart
8349 ENamedElement class UndefinedPart
8350 EPackage class UndefinedPart
8351 "
8352 fontSize 14
8353 fontName "Consolas"
8354 alignment "left"
8355 anchor "tl"
8356 borderDistance 6
8357 ]
8358 ]
8359
8360 node
8361 [
8362 id 13
8363 graphics
8364 [
8365 w 269.5
8366 h 124
8367 type "rectangle"
8368 fill "#FFFFFF"
8369 fill2 "#FFFFFF"
8370 outline "#000000"
8371 ]
8372 LabelGraphics
8373 [
8374 text "null"
8375 outline "#000000"
8376 fill "#FFFFFF"
8377 fontSize 16
8378 fontName "Monospace"
8379 autoSizePolicy "node_width"
8380 anchor "t"
8381 borderDistance 0.0
8382 ]
8383 LabelGraphics
8384 [
8385 text "
8386 EClassifier class
8387 EDataType class
8388 EEnum class
8389 EModelElement class
8390 ENamedElement class
8391 EModelElement class UndefinedPart
8392 ENamedElement class UndefinedPart
8393 "
8394 fontSize 14
8395 fontName "Consolas"
8396 alignment "left"
8397 anchor "tl"
8398 borderDistance 6
8399 ]
8400 ]
8401
8402 node
8403 [
8404 id 14
8405 graphics
8406 [
8407 w 269.5
8408 h 96
8409 type "rectangle"
8410 fill "#FFFFFF"
8411 fill2 "#FFFFFF"
8412 outline "#000000"
8413 ]
8414 LabelGraphics
8415 [
8416 text "null"
8417 outline "#000000"
8418 fill "#FFFFFF"
8419 fontSize 16
8420 fontName "Monospace"
8421 autoSizePolicy "node_width"
8422 anchor "t"
8423 borderDistance 0.0
8424 ]
8425 LabelGraphics
8426 [
8427 text "
8428 EModelElement class
8429 ENamedElement class
8430 ETypeParameter class
8431 EModelElement class UndefinedPart
8432 ENamedElement class UndefinedPart
8433 "
8434 fontSize 14
8435 fontName "Consolas"
8436 alignment "left"
8437 anchor "tl"
8438 borderDistance 6
8439 ]
8440 ]
8441
8442 node
8443 [
8444 id 15
8445 graphics
8446 [
8447 w 269.5
8448 h 68
8449 type "rectangle"
8450 fill "#FFFFFF"
8451 fill2 "#FFFFFF"
8452 outline "#000000"
8453 ]
8454 LabelGraphics
8455 [
8456 text "null"
8457 outline "#000000"
8458 fill "#FFFFFF"
8459 fontSize 16
8460 fontName "Monospace"
8461 autoSizePolicy "node_width"
8462 anchor "t"
8463 borderDistance 0.0
8464 ]
8465 LabelGraphics
8466 [
8467 text "
8468 EAnnotation class
8469 EModelElement class
8470 EModelElement class UndefinedPart
8471 "
8472 fontSize 14
8473 fontName "Consolas"
8474 alignment "left"
8475 anchor "tl"
8476 borderDistance 6
8477 ]
8478 ]
8479
8480 node
8481 [
8482 id 16
8483 graphics
8484 [
8485 w 112.2
8486 h 26
8487 type "rectangle"
8488 fill "#FFFFFF"
8489 fill2 "#FFFFFF"
8490 outline "#000000"
8491 ]
8492 LabelGraphics
8493 [
8494 text "New Integers"
8495 outline "#000000"
8496 fill "#FFFFFF"
8497 fontSize 16
8498 fontName "Monospace"
8499 autoSizePolicy "node_width"
8500 anchor "t"
8501 borderDistance 0.0
8502 ]
8503 LabelGraphics
8504 [
8505 text "
8506 "
8507 fontSize 14
8508 fontName "Consolas"
8509 alignment "left"
8510 anchor "tl"
8511 borderDistance 6
8512 ]
8513 ]
8514
8515 node
8516 [
8517 id 17
8518 graphics
8519 [
8520 w 85.80000000000001
8521 h 26
8522 type "rectangle"
8523 fill "#FFFFFF"
8524 fill2 "#FFFFFF"
8525 outline "#000000"
8526 ]
8527 LabelGraphics
8528 [
8529 text "New Reals"
8530 outline "#000000"
8531 fill "#FFFFFF"
8532 fontSize 16
8533 fontName "Monospace"
8534 autoSizePolicy "node_width"
8535 anchor "t"
8536 borderDistance 0.0
8537 ]
8538 LabelGraphics
8539 [
8540 text "
8541 "
8542 fontSize 14
8543 fontName "Consolas"
8544 alignment "left"
8545 anchor "tl"
8546 borderDistance 6
8547 ]
8548 ]
8549
8550 node
8551 [
8552 id 18
8553 graphics
8554 [
8555 w 103.4
8556 h 26
8557 type "rectangle"
8558 fill "#FFFFFF"
8559 fill2 "#FFFFFF"
8560 outline "#000000"
8561 ]
8562 LabelGraphics
8563 [
8564 text "New Strings"
8565 outline "#000000"
8566 fill "#FFFFFF"
8567 fontSize 16
8568 fontName "Monospace"
8569 autoSizePolicy "node_width"
8570 anchor "t"
8571 borderDistance 0.0
8572 ]
8573 LabelGraphics
8574 [
8575 text "
8576 "
8577 fontSize 14
8578 fontName "Consolas"
8579 alignment "left"
8580 anchor "tl"
8581 borderDistance 6
8582 ]
8583 ]
8584
8585 node
8586 [
8587 id 19
8588 graphics
8589 [
8590 w 103.4
8591 h 26
8592 type "rectangle"
8593 fill "#FFFFFF"
8594 fill2 "#FFFFFF"
8595 outline "#000000"
8596 ]
8597 LabelGraphics
8598 [
8599 text "New Objects"
8600 outline "#000000"
8601 fill "#FFFFFF"
8602 fontSize 16
8603 fontName "Monospace"
8604 autoSizePolicy "node_width"
8605 anchor "t"
8606 borderDistance 0.0
8607 ]
8608 LabelGraphics
8609 [
8610 text "
8611 "
8612 fontSize 14
8613 fontName "Consolas"
8614 alignment "left"
8615 anchor "tl"
8616 borderDistance 6
8617 ]
8618 ]
8619 edge
8620 [
8621 source 15
8622 target 0
8623 graphics
8624 [
8625 fill "#000000"
8626 targetArrow "standard"
8627 ]
8628 LabelGraphics
8629 [
8630 text "eModelElement reference EAnnotation"
8631 fontSize 14
8632 fontName "Consolas"
8633 configuration "AutoFlippingLabel"
8634 model "six_pos"
8635 position "thead"
8636 ]
8637 ]
8638 edge
8639 [
8640 source 11
8641 target 0
8642 graphics
8643 [
8644 fill "#000000"
8645 targetArrow "standard"
8646 ]
8647 LabelGraphics
8648 [
8649 text "ePackage reference EClassifier"
8650 fontSize 14
8651 fontName "Consolas"
8652 configuration "AutoFlippingLabel"
8653 model "six_pos"
8654 position "thead"
8655 ]
8656 ]
8657 edge
8658 [
8659 source 13
8660 target 0
8661 graphics
8662 [
8663 fill "#000000"
8664 targetArrow "standard"
8665 ]
8666 LabelGraphics
8667 [
8668 text "ePackage reference EClassifier"
8669 fontSize 14
8670 fontName "Consolas"
8671 configuration "AutoFlippingLabel"
8672 model "six_pos"
8673 position "thead"
8674 ]
8675 ]
8676 edge
8677 [
8678 source 13
8679 target 14
8680 graphics
8681 [
8682 fill "#000000"
8683 width 3
8684 targetArrow "standard"
8685 ]
8686 LabelGraphics
8687 [
8688 text "eTypeParameters reference EClassifier"
8689 fontSize 14
8690 fontName "Consolas"
8691 configuration "AutoFlippingLabel"
8692 model "six_pos"
8693 position "thead"
8694 ]
8695 ]
8696 edge
8697 [
8698 source 0
8699 target 15
8700 graphics
8701 [
8702 fill "#000000"
8703 width 3
8704 targetArrow "standard"
8705 ]
8706 LabelGraphics
8707 [
8708 text "eAnnotations reference EModelElement"
8709 fontSize 14
8710 fontName "Consolas"
8711 configuration "AutoFlippingLabel"
8712 model "six_pos"
8713 position "thead"
8714 ]
8715 ]
8716 edge
8717 [
8718 source 0
8719 target 11
8720 graphics
8721 [
8722 fill "#000000"
8723 width 3
8724 targetArrow "standard"
8725 ]
8726 LabelGraphics
8727 [
8728 text "eClassifiers reference EPackage"
8729 fontSize 14
8730 fontName "Consolas"
8731 configuration "AutoFlippingLabel"
8732 model "six_pos"
8733 position "thead"
8734 ]
8735 ]
8736 edge
8737 [
8738 source 0
8739 target 13
8740 graphics
8741 [
8742 fill "#000000"
8743 width 3
8744 targetArrow "standard"
8745 ]
8746 LabelGraphics
8747 [
8748 text "eClassifiers reference EPackage"
8749 fontSize 14
8750 fontName "Consolas"
8751 configuration "AutoFlippingLabel"
8752 model "six_pos"
8753 position "thead"
8754 ]
8755 ]
8756 edge
8757 [
8758 source 0
8759 target 12
8760 graphics
8761 [
8762 fill "#000000"
8763 width 3
8764 targetArrow "standard"
8765 ]
8766 LabelGraphics
8767 [
8768 text "eSubpackages reference EPackage"
8769 fontSize 14
8770 fontName "Consolas"
8771 configuration "AutoFlippingLabel"
8772 model "six_pos"
8773 position "thead"
8774 ]
8775 ]
8776 edge
8777 [
8778 source 12
8779 target 0
8780 graphics
8781 [
8782 fill "#000000"
8783 targetArrow "standard"
8784 ]
8785 LabelGraphics
8786 [
8787 text "eSuperPackage reference EPackage"
8788 fontSize 14
8789 fontName "Consolas"
8790 configuration "AutoFlippingLabel"
8791 model "six_pos"
8792 position "thead"
8793 ]
8794 ]
8795 edge
8796 [
8797 source 11
8798 target 6
8799 graphics
8800 [
8801 fill "#000000"
8802 targetArrow "standard"
8803 ]
8804 LabelGraphics
8805 [
8806 text "instanceClassName attribute EClassifier"
8807 fontSize 14
8808 fontName "Consolas"
8809 configuration "AutoFlippingLabel"
8810 model "six_pos"
8811 position "thead"
8812 ]
8813 ]
8814 edge
8815 [
8816 source 13
8817 target 7
8818 graphics
8819 [
8820 fill "#000000"
8821 targetArrow "standard"
8822 ]
8823 LabelGraphics
8824 [
8825 text "instanceClassName attribute EClassifier"
8826 fontSize 14
8827 fontName "Consolas"
8828 configuration "AutoFlippingLabel"
8829 model "six_pos"
8830 position "thead"
8831 ]
8832 ]
8833 edge
8834 [
8835 source 11
8836 target 1
8837 graphics
8838 [
8839 fill "#000000"
8840 targetArrow "standard"
8841 ]
8842 LabelGraphics
8843 [
8844 text "serializable attribute EDataType"
8845 fontSize 14
8846 fontName "Consolas"
8847 configuration "AutoFlippingLabel"
8848 model "six_pos"
8849 position "thead"
8850 ]
8851 ]
8852 edge
8853 [
8854 source 0
8855 target 10
8856 graphics
8857 [
8858 fill "#000000"
8859 targetArrow "standard"
8860 ]
8861 LabelGraphics
8862 [
8863 text "name attribute ENamedElement"
8864 fontSize 14
8865 fontName "Consolas"
8866 configuration "AutoFlippingLabel"
8867 model "six_pos"
8868 position "thead"
8869 ]
8870 ]
8871 edge
8872 [
8873 source 12
8874 target 6
8875 graphics
8876 [
8877 fill "#000000"
8878 targetArrow "standard"
8879 ]
8880 LabelGraphics
8881 [
8882 text "name attribute ENamedElement"
8883 fontSize 14
8884 fontName "Consolas"
8885 configuration "AutoFlippingLabel"
8886 model "six_pos"
8887 position "thead"
8888 ]
8889 ]
8890 edge
8891 [
8892 source 0
8893 target 9
8894 graphics
8895 [
8896 fill "#000000"
8897 targetArrow "standard"
8898 ]
8899 LabelGraphics
8900 [
8901 text "nsURI attribute EPackage"
8902 fontSize 14
8903 fontName "Consolas"
8904 configuration "AutoFlippingLabel"
8905 model "six_pos"
8906 position "thead"
8907 ]
8908 ]
8909 edge
8910 [
8911 source 12
8912 target 10
8913 graphics
8914 [
8915 fill "#000000"
8916 targetArrow "standard"
8917 ]
8918 LabelGraphics
8919 [
8920 text "nsURI attribute EPackage"
8921 fontSize 14
8922 fontName "Consolas"
8923 configuration "AutoFlippingLabel"
8924 model "six_pos"
8925 position "thead"
8926 ]
8927 ]
8928 edge
8929 [
8930 source 0
8931 target 8
8932 graphics
8933 [
8934 fill "#000000"
8935 targetArrow "standard"
8936 ]
8937 LabelGraphics
8938 [
8939 text "nsPrefix attribute EPackage"
8940 fontSize 14
8941 fontName "Consolas"
8942 configuration "AutoFlippingLabel"
8943 model "six_pos"
8944 position "thead"
8945 ]
8946 ]
8947 edge
8948 [
8949 source 12
8950 target 8
8951 graphics
8952 [
8953 fill "#000000"
8954 targetArrow "standard"
8955 ]
8956 LabelGraphics
8957 [
8958 text "nsPrefix attribute EPackage"
8959 fontSize 14
8960 fontName "Consolas"
8961 configuration "AutoFlippingLabel"
8962 model "six_pos"
8963 position "thead"
8964 ]
8965 ]
8966]
8967graph
8968[
8969 node
8970 [
8971 id 0
8972 graphics
8973 [
8974 w 254.10000000000002
8975 h 110
8976 type "rectangle"
8977 fill "#FFFFFF"
8978 fill2 "#FFFFFF"
8979 outline "#000000"
8980 ]
8981 LabelGraphics
8982 [
8983 text "o 1"
8984 outline "#000000"
8985 fill "#FFFFFF"
8986 fontSize 16
8987 fontName "Monospace"
8988 autoSizePolicy "node_width"
8989 anchor "t"
8990 borderDistance 0.0
8991 ]
8992 LabelGraphics
8993 [
8994 text "
8995 EModelElement class DefinedPart
8996 ENamedElement class DefinedPart
8997 EPackage class DefinedPart
8998 EModelElement class
8999 ENamedElement class
9000 EPackage class
9001 "
9002 fontSize 14
9003 fontName "Consolas"
9004 alignment "left"
9005 anchor "tl"
9006 borderDistance 6
9007 ]
9008 ]
9009
9010 node
9011 [
9012 id 1
9013 graphics
9014 [
9015 w 41.800000000000004
9016 h 26
9017 type "rectangle"
9018 fill "#FFFFFF"
9019 fill2 "#FFFFFF"
9020 outline "#000000"
9021 ]
9022 LabelGraphics
9023 [
9024 text "true"
9025 outline "#000000"
9026 fill "#FFFFFF"
9027 fontSize 16
9028 fontName "Monospace"
9029 autoSizePolicy "node_width"
9030 anchor "t"
9031 borderDistance 0.0
9032 ]
9033 LabelGraphics
9034 [
9035 text "
9036 "
9037 fontSize 14
9038 fontName "Consolas"
9039 alignment "left"
9040 anchor "tl"
9041 borderDistance 6
9042 ]
9043 ]
9044
9045 node
9046 [
9047 id 2
9048 graphics
9049 [
9050 w 50.6
9051 h 26
9052 type "rectangle"
9053 fill "#FFFFFF"
9054 fill2 "#FFFFFF"
9055 outline "#000000"
9056 ]
9057 LabelGraphics
9058 [
9059 text "false"
9060 outline "#000000"
9061 fill "#FFFFFF"
9062 fontSize 16
9063 fontName "Monospace"
9064 autoSizePolicy "node_width"
9065 anchor "t"
9066 borderDistance 0.0
9067 ]
9068 LabelGraphics
9069 [
9070 text "
9071 "
9072 fontSize 14
9073 fontName "Consolas"
9074 alignment "left"
9075 anchor "tl"
9076 borderDistance 6
9077 ]
9078 ]
9079
9080 node
9081 [
9082 id 3
9083 graphics
9084 [
9085 w 24.200000000000003
9086 h 26
9087 type "rectangle"
9088 fill "#FFFFFF"
9089 fill2 "#FFFFFF"
9090 outline "#000000"
9091 ]
9092 LabelGraphics
9093 [
9094 text "-1"
9095 outline "#000000"
9096 fill "#FFFFFF"
9097 fontSize 16
9098 fontName "Monospace"
9099 autoSizePolicy "node_width"
9100 anchor "t"
9101 borderDistance 0.0
9102 ]
9103 LabelGraphics
9104 [
9105 text "
9106 "
9107 fontSize 14
9108 fontName "Consolas"
9109 alignment "left"
9110 anchor "tl"
9111 borderDistance 6
9112 ]
9113 ]
9114
9115 node
9116 [
9117 id 4
9118 graphics
9119 [
9120 w 15.400000000000002
9121 h 26
9122 type "rectangle"
9123 fill "#FFFFFF"
9124 fill2 "#FFFFFF"
9125 outline "#000000"
9126 ]
9127 LabelGraphics
9128 [
9129 text "0"
9130 outline "#000000"
9131 fill "#FFFFFF"
9132 fontSize 16
9133 fontName "Monospace"
9134 autoSizePolicy "node_width"
9135 anchor "t"
9136 borderDistance 0.0
9137 ]
9138 LabelGraphics
9139 [
9140 text "
9141 "
9142 fontSize 14
9143 fontName "Consolas"
9144 alignment "left"
9145 anchor "tl"
9146 borderDistance 6
9147 ]
9148 ]
9149
9150 node
9151 [
9152 id 5
9153 graphics
9154 [
9155 w 15.400000000000002
9156 h 26
9157 type "rectangle"
9158 fill "#FFFFFF"
9159 fill2 "#FFFFFF"
9160 outline "#000000"
9161 ]
9162 LabelGraphics
9163 [
9164 text "1"
9165 outline "#000000"
9166 fill "#FFFFFF"
9167 fontSize 16
9168 fontName "Monospace"
9169 autoSizePolicy "node_width"
9170 anchor "t"
9171 borderDistance 0.0
9172 ]
9173 LabelGraphics
9174 [
9175 text "
9176 "
9177 fontSize 14
9178 fontName "Consolas"
9179 alignment "left"
9180 anchor "tl"
9181 borderDistance 6
9182 ]
9183 ]
9184
9185 node
9186 [
9187 id 6
9188 graphics
9189 [
9190 w 33.0
9191 h 26
9192 type "rectangle"
9193 fill "#FFFFFF"
9194 fill2 "#FFFFFF"
9195 outline "#000000"
9196 ]
9197 LabelGraphics
9198 [
9199 text ""A""
9200 outline "#000000"
9201 fill "#FFFFFF"
9202 fontSize 16
9203 fontName "Monospace"
9204 autoSizePolicy "node_width"
9205 anchor "t"
9206 borderDistance 0.0
9207 ]
9208 LabelGraphics
9209 [
9210 text "
9211 "
9212 fontSize 14
9213 fontName "Consolas"
9214 alignment "left"
9215 anchor "tl"
9216 borderDistance 6
9217 ]
9218 ]
9219
9220 node
9221 [
9222 id 7
9223 graphics
9224 [
9225 w 33.0
9226 h 26
9227 type "rectangle"
9228 fill "#FFFFFF"
9229 fill2 "#FFFFFF"
9230 outline "#000000"
9231 ]
9232 LabelGraphics
9233 [
9234 text ""B""
9235 outline "#000000"
9236 fill "#FFFFFF"
9237 fontSize 16
9238 fontName "Monospace"
9239 autoSizePolicy "node_width"
9240 anchor "t"
9241 borderDistance 0.0
9242 ]
9243 LabelGraphics
9244 [
9245 text "
9246 "
9247 fontSize 14
9248 fontName "Consolas"
9249 alignment "left"
9250 anchor "tl"
9251 borderDistance 6
9252 ]
9253 ]
9254
9255 node
9256 [
9257 id 8
9258 graphics
9259 [
9260 w 94.60000000000001
9261 h 26
9262 type "rectangle"
9263 fill "#FFFFFF"
9264 fill2 "#FFFFFF"
9265 outline "#000000"
9266 ]
9267 LabelGraphics
9268 [
9269 text ""nsPrefix""
9270 outline "#000000"
9271 fill "#FFFFFF"
9272 fontSize 16
9273 fontName "Monospace"
9274 autoSizePolicy "node_width"
9275 anchor "t"
9276 borderDistance 0.0
9277 ]
9278 LabelGraphics
9279 [
9280 text "
9281 "
9282 fontSize 14
9283 fontName "Consolas"
9284 alignment "left"
9285 anchor "tl"
9286 borderDistance 6
9287 ]
9288 ]
9289
9290 node
9291 [
9292 id 9
9293 graphics
9294 [
9295 w 68.2
9296 h 26
9297 type "rectangle"
9298 fill "#FFFFFF"
9299 fill2 "#FFFFFF"
9300 outline "#000000"
9301 ]
9302 LabelGraphics
9303 [
9304 text ""nsUri""
9305 outline "#000000"
9306 fill "#FFFFFF"
9307 fontSize 16
9308 fontName "Monospace"
9309 autoSizePolicy "node_width"
9310 anchor "t"
9311 borderDistance 0.0
9312 ]
9313 LabelGraphics
9314 [
9315 text "
9316 "
9317 fontSize 14
9318 fontName "Consolas"
9319 alignment "left"
9320 anchor "tl"
9321 borderDistance 6
9322 ]
9323 ]
9324
9325 node
9326 [
9327 id 10
9328 graphics
9329 [
9330 w 121.00000000000001
9331 h 26
9332 type "rectangle"
9333 fill "#FFFFFF"
9334 fill2 "#FFFFFF"
9335 outline "#000000"
9336 ]
9337 LabelGraphics
9338 [
9339 text ""packageName""
9340 outline "#000000"
9341 fill "#FFFFFF"
9342 fontSize 16
9343 fontName "Monospace"
9344 autoSizePolicy "node_width"
9345 anchor "t"
9346 borderDistance 0.0
9347 ]
9348 LabelGraphics
9349 [
9350 text "
9351 "
9352 fontSize 14
9353 fontName "Consolas"
9354 alignment "left"
9355 anchor "tl"
9356 borderDistance 6
9357 ]
9358 ]
9359
9360 node
9361 [
9362 id 11
9363 graphics
9364 [
9365 w 269.5
9366 h 110
9367 type "rectangle"
9368 fill "#FFFFFF"
9369 fill2 "#FFFFFF"
9370 outline "#000000"
9371 ]
9372 LabelGraphics
9373 [
9374 text "null"
9375 outline "#000000"
9376 fill "#FFFFFF"
9377 fontSize 16
9378 fontName "Monospace"
9379 autoSizePolicy "node_width"
9380 anchor "t"
9381 borderDistance 0.0
9382 ]
9383 LabelGraphics
9384 [
9385 text "
9386 EClass class
9387 EClassifier class
9388 EModelElement class
9389 ENamedElement class
9390 EModelElement class UndefinedPart
9391 ENamedElement class UndefinedPart
9392 "
9393 fontSize 14
9394 fontName "Consolas"
9395 alignment "left"
9396 anchor "tl"
9397 borderDistance 6
9398 ]
9399 ]
9400
9401 node
9402 [
9403 id 12
9404 graphics
9405 [
9406 w 269.5
9407 h 110
9408 type "rectangle"
9409 fill "#FFFFFF"
9410 fill2 "#FFFFFF"
9411 outline "#000000"
9412 ]
9413 LabelGraphics
9414 [
9415 text "null"
9416 outline "#000000"
9417 fill "#FFFFFF"
9418 fontSize 16
9419 fontName "Monospace"
9420 autoSizePolicy "node_width"
9421 anchor "t"
9422 borderDistance 0.0
9423 ]
9424 LabelGraphics
9425 [
9426 text "
9427 EModelElement class
9428 ENamedElement class
9429 EPackage class
9430 EModelElement class UndefinedPart
9431 ENamedElement class UndefinedPart
9432 EPackage class UndefinedPart
9433 "
9434 fontSize 14
9435 fontName "Consolas"
9436 alignment "left"
9437 anchor "tl"
9438 borderDistance 6
9439 ]
9440 ]
9441
9442 node
9443 [
9444 id 13
9445 graphics
9446 [
9447 w 269.5
9448 h 110
9449 type "rectangle"
9450 fill "#FFFFFF"
9451 fill2 "#FFFFFF"
9452 outline "#000000"
9453 ]
9454 LabelGraphics
9455 [
9456 text "null"
9457 outline "#000000"
9458 fill "#FFFFFF"
9459 fontSize 16
9460 fontName "Monospace"
9461 autoSizePolicy "node_width"
9462 anchor "t"
9463 borderDistance 0.0
9464 ]
9465 LabelGraphics
9466 [
9467 text "
9468 EModelElement class
9469 ENamedElement class
9470 EPackage class
9471 EModelElement class UndefinedPart
9472 ENamedElement class UndefinedPart
9473 EPackage class UndefinedPart
9474 "
9475 fontSize 14
9476 fontName "Consolas"
9477 alignment "left"
9478 anchor "tl"
9479 borderDistance 6
9480 ]
9481 ]
9482
9483 node
9484 [
9485 id 14
9486 graphics
9487 [
9488 w 269.5
9489 h 96
9490 type "rectangle"
9491 fill "#FFFFFF"
9492 fill2 "#FFFFFF"
9493 outline "#000000"
9494 ]
9495 LabelGraphics
9496 [
9497 text "null"
9498 outline "#000000"
9499 fill "#FFFFFF"
9500 fontSize 16
9501 fontName "Monospace"
9502 autoSizePolicy "node_width"
9503 anchor "t"
9504 borderDistance 0.0
9505 ]
9506 LabelGraphics
9507 [
9508 text "
9509 EModelElement class
9510 ENamedElement class
9511 ETypeParameter class
9512 EModelElement class UndefinedPart
9513 ENamedElement class UndefinedPart
9514 "
9515 fontSize 14
9516 fontName "Consolas"
9517 alignment "left"
9518 anchor "tl"
9519 borderDistance 6
9520 ]
9521 ]
9522
9523 node
9524 [
9525 id 15
9526 graphics
9527 [
9528 w 269.5
9529 h 110
9530 type "rectangle"
9531 fill "#FFFFFF"
9532 fill2 "#FFFFFF"
9533 outline "#000000"
9534 ]
9535 LabelGraphics
9536 [
9537 text "null"
9538 outline "#000000"
9539 fill "#FFFFFF"
9540 fontSize 16
9541 fontName "Monospace"
9542 autoSizePolicy "node_width"
9543 anchor "t"
9544 borderDistance 0.0
9545 ]
9546 LabelGraphics
9547 [
9548 text "
9549 EClass class
9550 EClassifier class
9551 EModelElement class
9552 ENamedElement class
9553 EModelElement class UndefinedPart
9554 ENamedElement class UndefinedPart
9555 "
9556 fontSize 14
9557 fontName "Consolas"
9558 alignment "left"
9559 anchor "tl"
9560 borderDistance 6
9561 ]
9562 ]
9563
9564 node
9565 [
9566 id 16
9567 graphics
9568 [
9569 w 112.2
9570 h 26
9571 type "rectangle"
9572 fill "#FFFFFF"
9573 fill2 "#FFFFFF"
9574 outline "#000000"
9575 ]
9576 LabelGraphics
9577 [
9578 text "New Integers"
9579 outline "#000000"
9580 fill "#FFFFFF"
9581 fontSize 16
9582 fontName "Monospace"
9583 autoSizePolicy "node_width"
9584 anchor "t"
9585 borderDistance 0.0
9586 ]
9587 LabelGraphics
9588 [
9589 text "
9590 "
9591 fontSize 14
9592 fontName "Consolas"
9593 alignment "left"
9594 anchor "tl"
9595 borderDistance 6
9596 ]
9597 ]
9598
9599 node
9600 [
9601 id 17
9602 graphics
9603 [
9604 w 85.80000000000001
9605 h 26
9606 type "rectangle"
9607 fill "#FFFFFF"
9608 fill2 "#FFFFFF"
9609 outline "#000000"
9610 ]
9611 LabelGraphics
9612 [
9613 text "New Reals"
9614 outline "#000000"
9615 fill "#FFFFFF"
9616 fontSize 16
9617 fontName "Monospace"
9618 autoSizePolicy "node_width"
9619 anchor "t"
9620 borderDistance 0.0
9621 ]
9622 LabelGraphics
9623 [
9624 text "
9625 "
9626 fontSize 14
9627 fontName "Consolas"
9628 alignment "left"
9629 anchor "tl"
9630 borderDistance 6
9631 ]
9632 ]
9633
9634 node
9635 [
9636 id 18
9637 graphics
9638 [
9639 w 103.4
9640 h 26
9641 type "rectangle"
9642 fill "#FFFFFF"
9643 fill2 "#FFFFFF"
9644 outline "#000000"
9645 ]
9646 LabelGraphics
9647 [
9648 text "New Strings"
9649 outline "#000000"
9650 fill "#FFFFFF"
9651 fontSize 16
9652 fontName "Monospace"
9653 autoSizePolicy "node_width"
9654 anchor "t"
9655 borderDistance 0.0
9656 ]
9657 LabelGraphics
9658 [
9659 text "
9660 "
9661 fontSize 14
9662 fontName "Consolas"
9663 alignment "left"
9664 anchor "tl"
9665 borderDistance 6
9666 ]
9667 ]
9668
9669 node
9670 [
9671 id 19
9672 graphics
9673 [
9674 w 103.4
9675 h 26
9676 type "rectangle"
9677 fill "#FFFFFF"
9678 fill2 "#FFFFFF"
9679 outline "#000000"
9680 ]
9681 LabelGraphics
9682 [
9683 text "New Objects"
9684 outline "#000000"
9685 fill "#FFFFFF"
9686 fontSize 16
9687 fontName "Monospace"
9688 autoSizePolicy "node_width"
9689 anchor "t"
9690 borderDistance 0.0
9691 ]
9692 LabelGraphics
9693 [
9694 text "
9695 "
9696 fontSize 14
9697 fontName "Consolas"
9698 alignment "left"
9699 anchor "tl"
9700 borderDistance 6
9701 ]
9702 ]
9703 edge
9704 [
9705 source 11
9706 target 0
9707 graphics
9708 [
9709 fill "#000000"
9710 targetArrow "standard"
9711 ]
9712 LabelGraphics
9713 [
9714 text "ePackage reference EClassifier"
9715 fontSize 14
9716 fontName "Consolas"
9717 configuration "AutoFlippingLabel"
9718 model "six_pos"
9719 position "thead"
9720 ]
9721 ]
9722 edge
9723 [
9724 source 15
9725 target 13
9726 graphics
9727 [
9728 fill "#000000"
9729 targetArrow "standard"
9730 ]
9731 LabelGraphics
9732 [
9733 text "ePackage reference EClassifier"
9734 fontSize 14
9735 fontName "Consolas"
9736 configuration "AutoFlippingLabel"
9737 model "six_pos"
9738 position "thead"
9739 ]
9740 ]
9741 edge
9742 [
9743 source 11
9744 target 14
9745 graphics
9746 [
9747 fill "#000000"
9748 width 3
9749 targetArrow "standard"
9750 ]
9751 LabelGraphics
9752 [
9753 text "eTypeParameters reference EClassifier"
9754 fontSize 14
9755 fontName "Consolas"
9756 configuration "AutoFlippingLabel"
9757 model "six_pos"
9758 position "thead"
9759 ]
9760 ]
9761 edge
9762 [
9763 source 0
9764 target 11
9765 graphics
9766 [
9767 fill "#000000"
9768 width 3
9769 targetArrow "standard"
9770 ]
9771 LabelGraphics
9772 [
9773 text "eClassifiers reference EPackage"
9774 fontSize 14
9775 fontName "Consolas"
9776 configuration "AutoFlippingLabel"
9777 model "six_pos"
9778 position "thead"
9779 ]
9780 ]
9781 edge
9782 [
9783 source 13
9784 target 15
9785 graphics
9786 [
9787 fill "#000000"
9788 width 3
9789 targetArrow "standard"
9790 ]
9791 LabelGraphics
9792 [
9793 text "eClassifiers reference EPackage"
9794 fontSize 14
9795 fontName "Consolas"
9796 configuration "AutoFlippingLabel"
9797 model "six_pos"
9798 position "thead"
9799 ]
9800 ]
9801 edge
9802 [
9803 source 0
9804 target 12
9805 graphics
9806 [
9807 fill "#000000"
9808 width 3
9809 targetArrow "standard"
9810 ]
9811 LabelGraphics
9812 [
9813 text "eSubpackages reference EPackage"
9814 fontSize 14
9815 fontName "Consolas"
9816 configuration "AutoFlippingLabel"
9817 model "six_pos"
9818 position "thead"
9819 ]
9820 ]
9821 edge
9822 [
9823 source 12
9824 target 13
9825 graphics
9826 [
9827 fill "#000000"
9828 width 3
9829 targetArrow "standard"
9830 ]
9831 LabelGraphics
9832 [
9833 text "eSubpackages reference EPackage"
9834 fontSize 14
9835 fontName "Consolas"
9836 configuration "AutoFlippingLabel"
9837 model "six_pos"
9838 position "thead"
9839 ]
9840 ]
9841 edge
9842 [
9843 source 12
9844 target 0
9845 graphics
9846 [
9847 fill "#000000"
9848 targetArrow "standard"
9849 ]
9850 LabelGraphics
9851 [
9852 text "eSuperPackage reference EPackage"
9853 fontSize 14
9854 fontName "Consolas"
9855 configuration "AutoFlippingLabel"
9856 model "six_pos"
9857 position "thead"
9858 ]
9859 ]
9860 edge
9861 [
9862 source 13
9863 target 12
9864 graphics
9865 [
9866 fill "#000000"
9867 targetArrow "standard"
9868 ]
9869 LabelGraphics
9870 [
9871 text "eSuperPackage reference EPackage"
9872 fontSize 14
9873 fontName "Consolas"
9874 configuration "AutoFlippingLabel"
9875 model "six_pos"
9876 position "thead"
9877 ]
9878 ]
9879 edge
9880 [
9881 source 11
9882 target 1
9883 graphics
9884 [
9885 fill "#000000"
9886 targetArrow "standard"
9887 ]
9888 LabelGraphics
9889 [
9890 text "abstract attribute EClass"
9891 fontSize 14
9892 fontName "Consolas"
9893 configuration "AutoFlippingLabel"
9894 model "six_pos"
9895 position "thead"
9896 ]
9897 ]
9898 edge
9899 [
9900 source 11
9901 target 2
9902 graphics
9903 [
9904 fill "#000000"
9905 targetArrow "standard"
9906 ]
9907 LabelGraphics
9908 [
9909 text "interface attribute EClass"
9910 fontSize 14
9911 fontName "Consolas"
9912 configuration "AutoFlippingLabel"
9913 model "six_pos"
9914 position "thead"
9915 ]
9916 ]
9917 edge
9918 [
9919 source 11
9920 target 8
9921 graphics
9922 [
9923 fill "#000000"
9924 targetArrow "standard"
9925 ]
9926 LabelGraphics
9927 [
9928 text "instanceTypeName attribute EClassifier"
9929 fontSize 14
9930 fontName "Consolas"
9931 configuration "AutoFlippingLabel"
9932 model "six_pos"
9933 position "thead"
9934 ]
9935 ]
9936 edge
9937 [
9938 source 15
9939 target 6
9940 graphics
9941 [
9942 fill "#000000"
9943 targetArrow "standard"
9944 ]
9945 LabelGraphics
9946 [
9947 text "instanceTypeName attribute EClassifier"
9948 fontSize 14
9949 fontName "Consolas"
9950 configuration "AutoFlippingLabel"
9951 model "six_pos"
9952 position "thead"
9953 ]
9954 ]
9955 edge
9956 [
9957 source 0
9958 target 10
9959 graphics
9960 [
9961 fill "#000000"
9962 targetArrow "standard"
9963 ]
9964 LabelGraphics
9965 [
9966 text "name attribute ENamedElement"
9967 fontSize 14
9968 fontName "Consolas"
9969 configuration "AutoFlippingLabel"
9970 model "six_pos"
9971 position "thead"
9972 ]
9973 ]
9974 edge
9975 [
9976 source 13
9977 target 8
9978 graphics
9979 [
9980 fill "#000000"
9981 targetArrow "standard"
9982 ]
9983 LabelGraphics
9984 [
9985 text "name attribute ENamedElement"
9986 fontSize 14
9987 fontName "Consolas"
9988 configuration "AutoFlippingLabel"
9989 model "six_pos"
9990 position "thead"
9991 ]
9992 ]
9993 edge
9994 [
9995 source 0
9996 target 9
9997 graphics
9998 [
9999 fill "#000000"
10000 targetArrow "standard"
10001 ]
10002 LabelGraphics
10003 [
10004 text "nsURI attribute EPackage"
10005 fontSize 14
10006 fontName "Consolas"
10007 configuration "AutoFlippingLabel"
10008 model "six_pos"
10009 position "thead"
10010 ]
10011 ]
10012 edge
10013 [
10014 source 13
10015 target 7
10016 graphics
10017 [
10018 fill "#000000"
10019 targetArrow "standard"
10020 ]
10021 LabelGraphics
10022 [
10023 text "nsURI attribute EPackage"
10024 fontSize 14
10025 fontName "Consolas"
10026 configuration "AutoFlippingLabel"
10027 model "six_pos"
10028 position "thead"
10029 ]
10030 ]
10031 edge
10032 [
10033 source 12
10034 target 7
10035 graphics
10036 [
10037 fill "#000000"
10038 targetArrow "standard"
10039 ]
10040 LabelGraphics
10041 [
10042 text "nsURI attribute EPackage"
10043 fontSize 14
10044 fontName "Consolas"
10045 configuration "AutoFlippingLabel"
10046 model "six_pos"
10047 position "thead"
10048 ]
10049 ]
10050 edge
10051 [
10052 source 0
10053 target 8
10054 graphics
10055 [
10056 fill "#000000"
10057 targetArrow "standard"
10058 ]
10059 LabelGraphics
10060 [
10061 text "nsPrefix attribute EPackage"
10062 fontSize 14
10063 fontName "Consolas"
10064 configuration "AutoFlippingLabel"
10065 model "six_pos"
10066 position "thead"
10067 ]
10068 ]
10069]
10070graph
10071[
10072 node
10073 [
10074 id 0
10075 graphics
10076 [
10077 w 226.60000000000002
10078 h 40
10079 type "rectangle"
10080 fill "#FFFFFF"
10081 fill2 "#FFFFFF"
10082 outline "#000000"
10083 ]
10084 LabelGraphics
10085 [
10086 text "Root literal FunctionType"
10087 outline "#000000"
10088 fill "#FFFFFF"
10089 fontSize 16
10090 fontName "Monospace"
10091 autoSizePolicy "node_width"
10092 anchor "t"
10093 borderDistance 0.0
10094 ]
10095 LabelGraphics
10096 [
10097 text "
10098 FunctionType enum
10099 "
10100 fontSize 14
10101 fontName "Consolas"
10102 alignment "left"
10103 anchor "tl"
10104 borderDistance 6
10105 ]
10106 ]
10107
10108 node
10109 [
10110 id 1
10111 graphics
10112 [
10113 w 297.0
10114 h 40
10115 type "rectangle"
10116 fill "#FFFFFF"
10117 fill2 "#FFFFFF"
10118 outline "#000000"
10119 ]
10120 LabelGraphics
10121 [
10122 text "Intermediate literal FunctionType"
10123 outline "#000000"
10124 fill "#FFFFFF"
10125 fontSize 16
10126 fontName "Monospace"
10127 autoSizePolicy "node_width"
10128 anchor "t"
10129 borderDistance 0.0
10130 ]
10131 LabelGraphics
10132 [
10133 text "
10134 FunctionType enum
10135 "
10136 fontSize 14
10137 fontName "Consolas"
10138 alignment "left"
10139 anchor "tl"
10140 borderDistance 6
10141 ]
10142 ]
10143
10144 node
10145 [
10146 id 2
10147 graphics
10148 [
10149 w 226.60000000000002
10150 h 40
10151 type "rectangle"
10152 fill "#FFFFFF"
10153 fill2 "#FFFFFF"
10154 outline "#000000"
10155 ]
10156 LabelGraphics
10157 [
10158 text "Leaf literal FunctionType"
10159 outline "#000000"
10160 fill "#FFFFFF"
10161 fontSize 16
10162 fontName "Monospace"
10163 autoSizePolicy "node_width"
10164 anchor "t"
10165 borderDistance 0.0
10166 ]
10167 LabelGraphics
10168 [
10169 text "
10170 FunctionType enum
10171 "
10172 fontSize 14
10173 fontName "Consolas"
10174 alignment "left"
10175 anchor "tl"
10176 borderDistance 6
10177 ]
10178 ]
10179
10180 node
10181 [
10182 id 3
10183 graphics
10184 [
10185 w 361.90000000000003
10186 h 54
10187 type "rectangle"
10188 fill "#FFFFFF"
10189 fill2 "#FFFFFF"
10190 outline "#000000"
10191 ]
10192 LabelGraphics
10193 [
10194 text "o 1"
10195 outline "#000000"
10196 fill "#FFFFFF"
10197 fontSize 16
10198 fontName "Monospace"
10199 autoSizePolicy "node_width"
10200 anchor "t"
10201 borderDistance 0.0
10202 ]
10203 LabelGraphics
10204 [
10205 text "
10206 FunctionalArchitectureModel class DefinedPart
10207 FunctionalArchitectureModel class
10208 "
10209 fontSize 14
10210 fontName "Consolas"
10211 alignment "left"
10212 anchor "tl"
10213 borderDistance 6
10214 ]
10215 ]
10216
10217 node
10218 [
10219 id 4
10220 graphics
10221 [
10222 w 41.800000000000004
10223 h 26
10224 type "rectangle"
10225 fill "#FFFFFF"
10226 fill2 "#FFFFFF"
10227 outline "#000000"
10228 ]
10229 LabelGraphics
10230 [
10231 text "true"
10232 outline "#000000"
10233 fill "#FFFFFF"
10234 fontSize 16
10235 fontName "Monospace"
10236 autoSizePolicy "node_width"
10237 anchor "t"
10238 borderDistance 0.0
10239 ]
10240 LabelGraphics
10241 [
10242 text "
10243 "
10244 fontSize 14
10245 fontName "Consolas"
10246 alignment "left"
10247 anchor "tl"
10248 borderDistance 6
10249 ]
10250 ]
10251
10252 node
10253 [
10254 id 5
10255 graphics
10256 [
10257 w 50.6
10258 h 26
10259 type "rectangle"
10260 fill "#FFFFFF"
10261 fill2 "#FFFFFF"
10262 outline "#000000"
10263 ]
10264 LabelGraphics
10265 [
10266 text "false"
10267 outline "#000000"
10268 fill "#FFFFFF"
10269 fontSize 16
10270 fontName "Monospace"
10271 autoSizePolicy "node_width"
10272 anchor "t"
10273 borderDistance 0.0
10274 ]
10275 LabelGraphics
10276 [
10277 text "
10278 "
10279 fontSize 14
10280 fontName "Consolas"
10281 alignment "left"
10282 anchor "tl"
10283 borderDistance 6
10284 ]
10285 ]
10286
10287 node
10288 [
10289 id 6
10290 graphics
10291 [
10292 w 192.50000000000003
10293 h 54
10294 type "rectangle"
10295 fill "#FFFFFF"
10296 fill2 "#FFFFFF"
10297 outline "#000000"
10298 ]
10299 LabelGraphics
10300 [
10301 text "null"
10302 outline "#000000"
10303 fill "#FFFFFF"
10304 fontSize 16
10305 fontName "Monospace"
10306 autoSizePolicy "node_width"
10307 anchor "t"
10308 borderDistance 0.0
10309 ]
10310 LabelGraphics
10311 [
10312 text "
10313 FunctionalElement class
10314 Function class
10315 "
10316 fontSize 14
10317 fontName "Consolas"
10318 alignment "left"
10319 anchor "tl"
10320 borderDistance 6
10321 ]
10322 ]
10323
10324 node
10325 [
10326 id 7
10327 graphics
10328 [
10329 w 112.2
10330 h 26
10331 type "rectangle"
10332 fill "#FFFFFF"
10333 fill2 "#FFFFFF"
10334 outline "#000000"
10335 ]
10336 LabelGraphics
10337 [
10338 text "New Integers"
10339 outline "#000000"
10340 fill "#FFFFFF"
10341 fontSize 16
10342 fontName "Monospace"
10343 autoSizePolicy "node_width"
10344 anchor "t"
10345 borderDistance 0.0
10346 ]
10347 LabelGraphics
10348 [
10349 text "
10350 "
10351 fontSize 14
10352 fontName "Consolas"
10353 alignment "left"
10354 anchor "tl"
10355 borderDistance 6
10356 ]
10357 ]
10358
10359 node
10360 [
10361 id 8
10362 graphics
10363 [
10364 w 85.80000000000001
10365 h 26
10366 type "rectangle"
10367 fill "#FFFFFF"
10368 fill2 "#FFFFFF"
10369 outline "#000000"
10370 ]
10371 LabelGraphics
10372 [
10373 text "New Reals"
10374 outline "#000000"
10375 fill "#FFFFFF"
10376 fontSize 16
10377 fontName "Monospace"
10378 autoSizePolicy "node_width"
10379 anchor "t"
10380 borderDistance 0.0
10381 ]
10382 LabelGraphics
10383 [
10384 text "
10385 "
10386 fontSize 14
10387 fontName "Consolas"
10388 alignment "left"
10389 anchor "tl"
10390 borderDistance 6
10391 ]
10392 ]
10393
10394 node
10395 [
10396 id 9
10397 graphics
10398 [
10399 w 103.4
10400 h 26
10401 type "rectangle"
10402 fill "#FFFFFF"
10403 fill2 "#FFFFFF"
10404 outline "#000000"
10405 ]
10406 LabelGraphics
10407 [
10408 text "New Strings"
10409 outline "#000000"
10410 fill "#FFFFFF"
10411 fontSize 16
10412 fontName "Monospace"
10413 autoSizePolicy "node_width"
10414 anchor "t"
10415 borderDistance 0.0
10416 ]
10417 LabelGraphics
10418 [
10419 text "
10420 "
10421 fontSize 14
10422 fontName "Consolas"
10423 alignment "left"
10424 anchor "tl"
10425 borderDistance 6
10426 ]
10427 ]
10428
10429 node
10430 [
10431 id 10
10432 graphics
10433 [
10434 w 103.4
10435 h 26
10436 type "rectangle"
10437 fill "#FFFFFF"
10438 fill2 "#FFFFFF"
10439 outline "#000000"
10440 ]
10441 LabelGraphics
10442 [
10443 text "New Objects"
10444 outline "#000000"
10445 fill "#FFFFFF"
10446 fontSize 16
10447 fontName "Monospace"
10448 autoSizePolicy "node_width"
10449 anchor "t"
10450 borderDistance 0.0
10451 ]
10452 LabelGraphics
10453 [
10454 text "
10455 "
10456 fontSize 14
10457 fontName "Consolas"
10458 alignment "left"
10459 anchor "tl"
10460 borderDistance 6
10461 ]
10462 ]
10463 edge
10464 [
10465 source 6
10466 target 3
10467 graphics
10468 [
10469 fill "#000000"
10470 targetArrow "standard"
10471 ]
10472 LabelGraphics
10473 [
10474 text "model reference FunctionalElement"
10475 fontSize 14
10476 fontName "Consolas"
10477 configuration "AutoFlippingLabel"
10478 model "six_pos"
10479 position "thead"
10480 ]
10481 ]
10482 edge
10483 [
10484 source 3
10485 target 6
10486 graphics
10487 [
10488 fill "#000000"
10489 width 3
10490 targetArrow "standard"
10491 ]
10492 LabelGraphics
10493 [
10494 text "rootElements reference FunctionalArchitectureModel"
10495 fontSize 14
10496 fontName "Consolas"
10497 configuration "AutoFlippingLabel"
10498 model "six_pos"
10499 position "thead"
10500 ]
10501 ]
10502 edge
10503 [
10504 source 6
10505 target 1
10506 graphics
10507 [
10508 fill "#000000"
10509 targetArrow "standard"
10510 ]
10511 LabelGraphics
10512 [
10513 text "type attribute Function"
10514 fontSize 14
10515 fontName "Consolas"
10516 configuration "AutoFlippingLabel"
10517 model "six_pos"
10518 position "thead"
10519 ]
10520 ]
10521]
10522graph
10523[
10524 node
10525 [
10526 id 0
10527 graphics
10528 [
10529 w 254.10000000000002
10530 h 110
10531 type "rectangle"
10532 fill "#FFFFFF"
10533 fill2 "#FFFFFF"
10534 outline "#000000"
10535 ]
10536 LabelGraphics
10537 [
10538 text "o 1"
10539 outline "#000000"
10540 fill "#FFFFFF"
10541 fontSize 16
10542 fontName "Monospace"
10543 autoSizePolicy "node_width"
10544 anchor "t"
10545 borderDistance 0.0
10546 ]
10547 LabelGraphics
10548 [
10549 text "
10550 EModelElement class DefinedPart
10551 ENamedElement class DefinedPart
10552 EPackage class DefinedPart
10553 EModelElement class
10554 ENamedElement class
10555 EPackage class
10556 "
10557 fontSize 14
10558 fontName "Consolas"
10559 alignment "left"
10560 anchor "tl"
10561 borderDistance 6
10562 ]
10563 ]
10564
10565 node
10566 [
10567 id 1
10568 graphics
10569 [
10570 w 41.800000000000004
10571 h 26
10572 type "rectangle"
10573 fill "#FFFFFF"
10574 fill2 "#FFFFFF"
10575 outline "#000000"
10576 ]
10577 LabelGraphics
10578 [
10579 text "true"
10580 outline "#000000"
10581 fill "#FFFFFF"
10582 fontSize 16
10583 fontName "Monospace"
10584 autoSizePolicy "node_width"
10585 anchor "t"
10586 borderDistance 0.0
10587 ]
10588 LabelGraphics
10589 [
10590 text "
10591 "
10592 fontSize 14
10593 fontName "Consolas"
10594 alignment "left"
10595 anchor "tl"
10596 borderDistance 6
10597 ]
10598 ]
10599
10600 node
10601 [
10602 id 2
10603 graphics
10604 [
10605 w 50.6
10606 h 26
10607 type "rectangle"
10608 fill "#FFFFFF"
10609 fill2 "#FFFFFF"
10610 outline "#000000"
10611 ]
10612 LabelGraphics
10613 [
10614 text "false"
10615 outline "#000000"
10616 fill "#FFFFFF"
10617 fontSize 16
10618 fontName "Monospace"
10619 autoSizePolicy "node_width"
10620 anchor "t"
10621 borderDistance 0.0
10622 ]
10623 LabelGraphics
10624 [
10625 text "
10626 "
10627 fontSize 14
10628 fontName "Consolas"
10629 alignment "left"
10630 anchor "tl"
10631 borderDistance 6
10632 ]
10633 ]
10634
10635 node
10636 [
10637 id 3
10638 graphics
10639 [
10640 w 24.200000000000003
10641 h 26
10642 type "rectangle"
10643 fill "#FFFFFF"
10644 fill2 "#FFFFFF"
10645 outline "#000000"
10646 ]
10647 LabelGraphics
10648 [
10649 text "-1"
10650 outline "#000000"
10651 fill "#FFFFFF"
10652 fontSize 16
10653 fontName "Monospace"
10654 autoSizePolicy "node_width"
10655 anchor "t"
10656 borderDistance 0.0
10657 ]
10658 LabelGraphics
10659 [
10660 text "
10661 "
10662 fontSize 14
10663 fontName "Consolas"
10664 alignment "left"
10665 anchor "tl"
10666 borderDistance 6
10667 ]
10668 ]
10669
10670 node
10671 [
10672 id 4
10673 graphics
10674 [
10675 w 15.400000000000002
10676 h 26
10677 type "rectangle"
10678 fill "#FFFFFF"
10679 fill2 "#FFFFFF"
10680 outline "#000000"
10681 ]
10682 LabelGraphics
10683 [
10684 text "0"
10685 outline "#000000"
10686 fill "#FFFFFF"
10687 fontSize 16
10688 fontName "Monospace"
10689 autoSizePolicy "node_width"
10690 anchor "t"
10691 borderDistance 0.0
10692 ]
10693 LabelGraphics
10694 [
10695 text "
10696 "
10697 fontSize 14
10698 fontName "Consolas"
10699 alignment "left"
10700 anchor "tl"
10701 borderDistance 6
10702 ]
10703 ]
10704
10705 node
10706 [
10707 id 5
10708 graphics
10709 [
10710 w 15.400000000000002
10711 h 26
10712 type "rectangle"
10713 fill "#FFFFFF"
10714 fill2 "#FFFFFF"
10715 outline "#000000"
10716 ]
10717 LabelGraphics
10718 [
10719 text "1"
10720 outline "#000000"
10721 fill "#FFFFFF"
10722 fontSize 16
10723 fontName "Monospace"
10724 autoSizePolicy "node_width"
10725 anchor "t"
10726 borderDistance 0.0
10727 ]
10728 LabelGraphics
10729 [
10730 text "
10731 "
10732 fontSize 14
10733 fontName "Consolas"
10734 alignment "left"
10735 anchor "tl"
10736 borderDistance 6
10737 ]
10738 ]
10739
10740 node
10741 [
10742 id 6
10743 graphics
10744 [
10745 w 33.0
10746 h 26
10747 type "rectangle"
10748 fill "#FFFFFF"
10749 fill2 "#FFFFFF"
10750 outline "#000000"
10751 ]
10752 LabelGraphics
10753 [
10754 text ""A""
10755 outline "#000000"
10756 fill "#FFFFFF"
10757 fontSize 16
10758 fontName "Monospace"
10759 autoSizePolicy "node_width"
10760 anchor "t"
10761 borderDistance 0.0
10762 ]
10763 LabelGraphics
10764 [
10765 text "
10766 "
10767 fontSize 14
10768 fontName "Consolas"
10769 alignment "left"
10770 anchor "tl"
10771 borderDistance 6
10772 ]
10773 ]
10774
10775 node
10776 [
10777 id 7
10778 graphics
10779 [
10780 w 33.0
10781 h 26
10782 type "rectangle"
10783 fill "#FFFFFF"
10784 fill2 "#FFFFFF"
10785 outline "#000000"
10786 ]
10787 LabelGraphics
10788 [
10789 text ""B""
10790 outline "#000000"
10791 fill "#FFFFFF"
10792 fontSize 16
10793 fontName "Monospace"
10794 autoSizePolicy "node_width"
10795 anchor "t"
10796 borderDistance 0.0
10797 ]
10798 LabelGraphics
10799 [
10800 text "
10801 "
10802 fontSize 14
10803 fontName "Consolas"
10804 alignment "left"
10805 anchor "tl"
10806 borderDistance 6
10807 ]
10808 ]
10809
10810 node
10811 [
10812 id 8
10813 graphics
10814 [
10815 w 94.60000000000001
10816 h 26
10817 type "rectangle"
10818 fill "#FFFFFF"
10819 fill2 "#FFFFFF"
10820 outline "#000000"
10821 ]
10822 LabelGraphics
10823 [
10824 text ""nsPrefix""
10825 outline "#000000"
10826 fill "#FFFFFF"
10827 fontSize 16
10828 fontName "Monospace"
10829 autoSizePolicy "node_width"
10830 anchor "t"
10831 borderDistance 0.0
10832 ]
10833 LabelGraphics
10834 [
10835 text "
10836 "
10837 fontSize 14
10838 fontName "Consolas"
10839 alignment "left"
10840 anchor "tl"
10841 borderDistance 6
10842 ]
10843 ]
10844
10845 node
10846 [
10847 id 9
10848 graphics
10849 [
10850 w 68.2
10851 h 26
10852 type "rectangle"
10853 fill "#FFFFFF"
10854 fill2 "#FFFFFF"
10855 outline "#000000"
10856 ]
10857 LabelGraphics
10858 [
10859 text ""nsUri""
10860 outline "#000000"
10861 fill "#FFFFFF"
10862 fontSize 16
10863 fontName "Monospace"
10864 autoSizePolicy "node_width"
10865 anchor "t"
10866 borderDistance 0.0
10867 ]
10868 LabelGraphics
10869 [
10870 text "
10871 "
10872 fontSize 14
10873 fontName "Consolas"
10874 alignment "left"
10875 anchor "tl"
10876 borderDistance 6
10877 ]
10878 ]
10879
10880 node
10881 [
10882 id 10
10883 graphics
10884 [
10885 w 121.00000000000001
10886 h 26
10887 type "rectangle"
10888 fill "#FFFFFF"
10889 fill2 "#FFFFFF"
10890 outline "#000000"
10891 ]
10892 LabelGraphics
10893 [
10894 text ""packageName""
10895 outline "#000000"
10896 fill "#FFFFFF"
10897 fontSize 16
10898 fontName "Monospace"
10899 autoSizePolicy "node_width"
10900 anchor "t"
10901 borderDistance 0.0
10902 ]
10903 LabelGraphics
10904 [
10905 text "
10906 "
10907 fontSize 14
10908 fontName "Consolas"
10909 alignment "left"
10910 anchor "tl"
10911 borderDistance 6
10912 ]
10913 ]
10914
10915 node
10916 [
10917 id 11
10918 graphics
10919 [
10920 w 269.5
10921 h 110
10922 type "rectangle"
10923 fill "#FFFFFF"
10924 fill2 "#FFFFFF"
10925 outline "#000000"
10926 ]
10927 LabelGraphics
10928 [
10929 text "null"
10930 outline "#000000"
10931 fill "#FFFFFF"
10932 fontSize 16
10933 fontName "Monospace"
10934 autoSizePolicy "node_width"
10935 anchor "t"
10936 borderDistance 0.0
10937 ]
10938 LabelGraphics
10939 [
10940 text "
10941 EClass class
10942 EClassifier class
10943 EModelElement class
10944 ENamedElement class
10945 EModelElement class UndefinedPart
10946 ENamedElement class UndefinedPart
10947 "
10948 fontSize 14
10949 fontName "Consolas"
10950 alignment "left"
10951 anchor "tl"
10952 borderDistance 6
10953 ]
10954 ]
10955
10956 node
10957 [
10958 id 12
10959 graphics
10960 [
10961 w 269.5
10962 h 110
10963 type "rectangle"
10964 fill "#FFFFFF"
10965 fill2 "#FFFFFF"
10966 outline "#000000"
10967 ]
10968 LabelGraphics
10969 [
10970 text "null"
10971 outline "#000000"
10972 fill "#FFFFFF"
10973 fontSize 16
10974 fontName "Monospace"
10975 autoSizePolicy "node_width"
10976 anchor "t"
10977 borderDistance 0.0
10978 ]
10979 LabelGraphics
10980 [
10981 text "
10982 EModelElement class
10983 ENamedElement class
10984 EPackage class
10985 EModelElement class UndefinedPart
10986 ENamedElement class UndefinedPart
10987 EPackage class UndefinedPart
10988 "
10989 fontSize 14
10990 fontName "Consolas"
10991 alignment "left"
10992 anchor "tl"
10993 borderDistance 6
10994 ]
10995 ]
10996
10997 node
10998 [
10999 id 13
11000 graphics
11001 [
11002 w 269.5
11003 h 110
11004 type "rectangle"
11005 fill "#FFFFFF"
11006 fill2 "#FFFFFF"
11007 outline "#000000"
11008 ]
11009 LabelGraphics
11010 [
11011 text "null"
11012 outline "#000000"
11013 fill "#FFFFFF"
11014 fontSize 16
11015 fontName "Monospace"
11016 autoSizePolicy "node_width"
11017 anchor "t"
11018 borderDistance 0.0
11019 ]
11020 LabelGraphics
11021 [
11022 text "
11023 EModelElement class
11024 ENamedElement class
11025 EOperation class
11026 ETypedElement class
11027 EModelElement class UndefinedPart
11028 ENamedElement class UndefinedPart
11029 "
11030 fontSize 14
11031 fontName "Consolas"
11032 alignment "left"
11033 anchor "tl"
11034 borderDistance 6
11035 ]
11036 ]
11037
11038 node
11039 [
11040 id 14
11041 graphics
11042 [
11043 w 269.5
11044 h 68
11045 type "rectangle"
11046 fill "#FFFFFF"
11047 fill2 "#FFFFFF"
11048 outline "#000000"
11049 ]
11050 LabelGraphics
11051 [
11052 text "null"
11053 outline "#000000"
11054 fill "#FFFFFF"
11055 fontSize 16
11056 fontName "Monospace"
11057 autoSizePolicy "node_width"
11058 anchor "t"
11059 borderDistance 0.0
11060 ]
11061 LabelGraphics
11062 [
11063 text "
11064 EAnnotation class
11065 EModelElement class
11066 EModelElement class UndefinedPart
11067 "
11068 fontSize 14
11069 fontName "Consolas"
11070 alignment "left"
11071 anchor "tl"
11072 borderDistance 6
11073 ]
11074 ]
11075
11076 node
11077 [
11078 id 15
11079 graphics
11080 [
11081 w 238.70000000000002
11082 h 40
11083 type "rectangle"
11084 fill "#FFFFFF"
11085 fill2 "#FFFFFF"
11086 outline "#000000"
11087 ]
11088 LabelGraphics
11089 [
11090 text "null"
11091 outline "#000000"
11092 fill "#FFFFFF"
11093 fontSize 16
11094 fontName "Monospace"
11095 autoSizePolicy "node_width"
11096 anchor "t"
11097 borderDistance 0.0
11098 ]
11099 LabelGraphics
11100 [
11101 text "
11102 EStringToStringMapEntry class
11103 "
11104 fontSize 14
11105 fontName "Consolas"
11106 alignment "left"
11107 anchor "tl"
11108 borderDistance 6
11109 ]
11110 ]
11111
11112 node
11113 [
11114 id 16
11115 graphics
11116 [
11117 w 112.2
11118 h 26
11119 type "rectangle"
11120 fill "#FFFFFF"
11121 fill2 "#FFFFFF"
11122 outline "#000000"
11123 ]
11124 LabelGraphics
11125 [
11126 text "New Integers"
11127 outline "#000000"
11128 fill "#FFFFFF"
11129 fontSize 16
11130 fontName "Monospace"
11131 autoSizePolicy "node_width"
11132 anchor "t"
11133 borderDistance 0.0
11134 ]
11135 LabelGraphics
11136 [
11137 text "
11138 "
11139 fontSize 14
11140 fontName "Consolas"
11141 alignment "left"
11142 anchor "tl"
11143 borderDistance 6
11144 ]
11145 ]
11146
11147 node
11148 [
11149 id 17
11150 graphics
11151 [
11152 w 85.80000000000001
11153 h 26
11154 type "rectangle"
11155 fill "#FFFFFF"
11156 fill2 "#FFFFFF"
11157 outline "#000000"
11158 ]
11159 LabelGraphics
11160 [
11161 text "New Reals"
11162 outline "#000000"
11163 fill "#FFFFFF"
11164 fontSize 16
11165 fontName "Monospace"
11166 autoSizePolicy "node_width"
11167 anchor "t"
11168 borderDistance 0.0
11169 ]
11170 LabelGraphics
11171 [
11172 text "
11173 "
11174 fontSize 14
11175 fontName "Consolas"
11176 alignment "left"
11177 anchor "tl"
11178 borderDistance 6
11179 ]
11180 ]
11181
11182 node
11183 [
11184 id 18
11185 graphics
11186 [
11187 w 103.4
11188 h 26
11189 type "rectangle"
11190 fill "#FFFFFF"
11191 fill2 "#FFFFFF"
11192 outline "#000000"
11193 ]
11194 LabelGraphics
11195 [
11196 text "New Strings"
11197 outline "#000000"
11198 fill "#FFFFFF"
11199 fontSize 16
11200 fontName "Monospace"
11201 autoSizePolicy "node_width"
11202 anchor "t"
11203 borderDistance 0.0
11204 ]
11205 LabelGraphics
11206 [
11207 text "
11208 "
11209 fontSize 14
11210 fontName "Consolas"
11211 alignment "left"
11212 anchor "tl"
11213 borderDistance 6
11214 ]
11215 ]
11216
11217 node
11218 [
11219 id 19
11220 graphics
11221 [
11222 w 103.4
11223 h 26
11224 type "rectangle"
11225 fill "#FFFFFF"
11226 fill2 "#FFFFFF"
11227 outline "#000000"
11228 ]
11229 LabelGraphics
11230 [
11231 text "New Objects"
11232 outline "#000000"
11233 fill "#FFFFFF"
11234 fontSize 16
11235 fontName "Monospace"
11236 autoSizePolicy "node_width"
11237 anchor "t"
11238 borderDistance 0.0
11239 ]
11240 LabelGraphics
11241 [
11242 text "
11243 "
11244 fontSize 14
11245 fontName "Consolas"
11246 alignment "left"
11247 anchor "tl"
11248 borderDistance 6
11249 ]
11250 ]
11251 edge
11252 [
11253 source 14
11254 target 15
11255 graphics
11256 [
11257 fill "#000000"
11258 width 3
11259 targetArrow "standard"
11260 ]
11261 LabelGraphics
11262 [
11263 text "details reference EAnnotation"
11264 fontSize 14
11265 fontName "Consolas"
11266 configuration "AutoFlippingLabel"
11267 model "six_pos"
11268 position "thead"
11269 ]
11270 ]
11271 edge
11272 [
11273 source 14
11274 target 0
11275 graphics
11276 [
11277 fill "#000000"
11278 targetArrow "standard"
11279 ]
11280 LabelGraphics
11281 [
11282 text "eModelElement reference EAnnotation"
11283 fontSize 14
11284 fontName "Consolas"
11285 configuration "AutoFlippingLabel"
11286 model "six_pos"
11287 position "thead"
11288 ]
11289 ]
11290 edge
11291 [
11292 source 11
11293 target 11
11294 graphics
11295 [
11296 fill "#000000"
11297 targetArrow "standard"
11298 ]
11299 LabelGraphics
11300 [
11301 text "eSuperTypes reference EClass"
11302 fontSize 14
11303 fontName "Consolas"
11304 configuration "AutoFlippingLabel"
11305 model "six_pos"
11306 position "thead"
11307 ]
11308 ]
11309 edge
11310 [
11311 source 11
11312 target 13
11313 graphics
11314 [
11315 fill "#000000"
11316 width 3
11317 targetArrow "standard"
11318 ]
11319 LabelGraphics
11320 [
11321 text "eOperations reference EClass"
11322 fontSize 14
11323 fontName "Consolas"
11324 configuration "AutoFlippingLabel"
11325 model "six_pos"
11326 position "thead"
11327 ]
11328 ]
11329 edge
11330 [
11331 source 11
11332 target 11
11333 graphics
11334 [
11335 fill "#000000"
11336 targetArrow "standard"
11337 ]
11338 LabelGraphics
11339 [
11340 text "eAllSuperTypes reference EClass"
11341 fontSize 14
11342 fontName "Consolas"
11343 configuration "AutoFlippingLabel"
11344 model "six_pos"
11345 position "thead"
11346 ]
11347 ]
11348 edge
11349 [
11350 source 11
11351 target 0
11352 graphics
11353 [
11354 fill "#000000"
11355 targetArrow "standard"
11356 ]
11357 LabelGraphics
11358 [
11359 text "ePackage reference EClassifier"
11360 fontSize 14
11361 fontName "Consolas"
11362 configuration "AutoFlippingLabel"
11363 model "six_pos"
11364 position "thead"
11365 ]
11366 ]
11367 edge
11368 [
11369 source 0
11370 target 14
11371 graphics
11372 [
11373 fill "#000000"
11374 width 3
11375 targetArrow "standard"
11376 ]
11377 LabelGraphics
11378 [
11379 text "eAnnotations reference EModelElement"
11380 fontSize 14
11381 fontName "Consolas"
11382 configuration "AutoFlippingLabel"
11383 model "six_pos"
11384 position "thead"
11385 ]
11386 ]
11387 edge
11388 [
11389 source 13
11390 target 11
11391 graphics
11392 [
11393 fill "#000000"
11394 targetArrow "standard"
11395 ]
11396 LabelGraphics
11397 [
11398 text "eContainingClass reference EOperation"
11399 fontSize 14
11400 fontName "Consolas"
11401 configuration "AutoFlippingLabel"
11402 model "six_pos"
11403 position "thead"
11404 ]
11405 ]
11406 edge
11407 [
11408 source 0
11409 target 11
11410 graphics
11411 [
11412 fill "#000000"
11413 width 3
11414 targetArrow "standard"
11415 ]
11416 LabelGraphics
11417 [
11418 text "eClassifiers reference EPackage"
11419 fontSize 14
11420 fontName "Consolas"
11421 configuration "AutoFlippingLabel"
11422 model "six_pos"
11423 position "thead"
11424 ]
11425 ]
11426 edge
11427 [
11428 source 0
11429 target 12
11430 graphics
11431 [
11432 fill "#000000"
11433 width 3
11434 targetArrow "standard"
11435 ]
11436 LabelGraphics
11437 [
11438 text "eSubpackages reference EPackage"
11439 fontSize 14
11440 fontName "Consolas"
11441 configuration "AutoFlippingLabel"
11442 model "six_pos"
11443 position "thead"
11444 ]
11445 ]
11446 edge
11447 [
11448 source 12
11449 target 0
11450 graphics
11451 [
11452 fill "#000000"
11453 targetArrow "standard"
11454 ]
11455 LabelGraphics
11456 [
11457 text "eSuperPackage reference EPackage"
11458 fontSize 14
11459 fontName "Consolas"
11460 configuration "AutoFlippingLabel"
11461 model "six_pos"
11462 position "thead"
11463 ]
11464 ]
11465 edge
11466 [
11467 source 11
11468 target 8
11469 graphics
11470 [
11471 fill "#000000"
11472 targetArrow "standard"
11473 ]
11474 LabelGraphics
11475 [
11476 text "instanceClassName attribute EClassifier"
11477 fontSize 14
11478 fontName "Consolas"
11479 configuration "AutoFlippingLabel"
11480 model "six_pos"
11481 position "thead"
11482 ]
11483 ]
11484 edge
11485 [
11486 source 11
11487 target 9
11488 graphics
11489 [
11490 fill "#000000"
11491 targetArrow "standard"
11492 ]
11493 LabelGraphics
11494 [
11495 text "instanceTypeName attribute EClassifier"
11496 fontSize 14
11497 fontName "Consolas"
11498 configuration "AutoFlippingLabel"
11499 model "six_pos"
11500 position "thead"
11501 ]
11502 ]
11503 edge
11504 [
11505 source 0
11506 target 10
11507 graphics
11508 [
11509 fill "#000000"
11510 targetArrow "standard"
11511 ]
11512 LabelGraphics
11513 [
11514 text "name attribute ENamedElement"
11515 fontSize 14
11516 fontName "Consolas"
11517 configuration "AutoFlippingLabel"
11518 model "six_pos"
11519 position "thead"
11520 ]
11521 ]
11522 edge
11523 [
11524 source 12
11525 target 7
11526 graphics
11527 [
11528 fill "#000000"
11529 targetArrow "standard"
11530 ]
11531 LabelGraphics
11532 [
11533 text "name attribute ENamedElement"
11534 fontSize 14
11535 fontName "Consolas"
11536 configuration "AutoFlippingLabel"
11537 model "six_pos"
11538 position "thead"
11539 ]
11540 ]
11541 edge
11542 [
11543 source 0
11544 target 9
11545 graphics
11546 [
11547 fill "#000000"
11548 targetArrow "standard"
11549 ]
11550 LabelGraphics
11551 [
11552 text "nsURI attribute EPackage"
11553 fontSize 14
11554 fontName "Consolas"
11555 configuration "AutoFlippingLabel"
11556 model "six_pos"
11557 position "thead"
11558 ]
11559 ]
11560 edge
11561 [
11562 source 12
11563 target 8
11564 graphics
11565 [
11566 fill "#000000"
11567 targetArrow "standard"
11568 ]
11569 LabelGraphics
11570 [
11571 text "nsURI attribute EPackage"
11572 fontSize 14
11573 fontName "Consolas"
11574 configuration "AutoFlippingLabel"
11575 model "six_pos"
11576 position "thead"
11577 ]
11578 ]
11579 edge
11580 [
11581 source 0
11582 target 8
11583 graphics
11584 [
11585 fill "#000000"
11586 targetArrow "standard"
11587 ]
11588 LabelGraphics
11589 [
11590 text "nsPrefix attribute EPackage"
11591 fontSize 14
11592 fontName "Consolas"
11593 configuration "AutoFlippingLabel"
11594 model "six_pos"
11595 position "thead"
11596 ]
11597 ]
11598 edge
11599 [
11600 source 13
11601 target 1
11602 graphics
11603 [
11604 fill "#000000"
11605 targetArrow "standard"
11606 ]
11607 LabelGraphics
11608 [
11609 text "unique attribute ETypedElement"
11610 fontSize 14
11611 fontName "Consolas"
11612 configuration "AutoFlippingLabel"
11613 model "six_pos"
11614 position "thead"
11615 ]
11616 ]
11617 edge
11618 [
11619 source 13
11620 target 4
11621 graphics
11622 [
11623 fill "#000000"
11624 targetArrow "standard"
11625 ]
11626 LabelGraphics
11627 [
11628 text "upperBound attribute ETypedElement"
11629 fontSize 14
11630 fontName "Consolas"
11631 configuration "AutoFlippingLabel"
11632 model "six_pos"
11633 position "thead"
11634 ]
11635 ]
11636]
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/2.png b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/2.png
index e01ca46b..b5fea093 100644
--- a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/2.png
+++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/2.png
Binary files differ
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/2.xmi b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/2.xmi
index c6287127..4a9086fe 100644
--- a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/2.xmi
+++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/2.xmi
@@ -1,9 +1,10 @@
1<?xml version="1.0" encoding="ASCII"?> 1<?xml version="1.0" encoding="ASCII"?>
2<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="packageName" nsURI="nsUri" nsPrefix="nsPrefix"> 2<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="packageName" nsURI="nsUri" nsPrefix="nsPrefix">
3 <eClassifiers xsi:type="ecore:EEnum" name="packageName" instanceClassName="A"/> 3 <eAnnotations>
4 <eClassifiers xsi:type="ecore:EEnum"/> 4 <details/>
5 <eClassifiers xsi:type="ecore:EEnum" name="packageName" instanceClassName="nsPrefix"/> 5 </eAnnotations>
6 <eSubpackages name="A" nsURI="nsPrefix"> 6 <eClassifiers xsi:type="ecore:EClass" instanceTypeName="nsUri" eSuperTypes="//%">
7 <eClassifiers xsi:type="ecore:EEnum"/> 7 <eOperations upperBound="0"/>
8 </eSubpackages> 8 </eClassifiers>
9 <eSubpackages name="B" nsURI="nsPrefix"/>
9</ecore:EPackage> 10</ecore:EPackage>
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/3.gml b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/3.gml
index 05f41ccb..55dc70ba 100644
--- a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/3.gml
+++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/3.gml
@@ -2067,3 +2067,5616 @@ graph
2067 ] 2067 ]
2068 ] 2068 ]
2069] 2069]
2070graph
2071[
2072 node
2073 [
2074 id 0
2075 graphics
2076 [
2077 w 254.10000000000002
2078 h 110
2079 type "rectangle"
2080 fill "#FFFFFF"
2081 fill2 "#FFFFFF"
2082 outline "#000000"
2083 ]
2084 LabelGraphics
2085 [
2086 text "o 1"
2087 outline "#000000"
2088 fill "#FFFFFF"
2089 fontSize 16
2090 fontName "Monospace"
2091 autoSizePolicy "node_width"
2092 anchor "t"
2093 borderDistance 0.0
2094 ]
2095 LabelGraphics
2096 [
2097 text "
2098 EModelElement class DefinedPart
2099 ENamedElement class DefinedPart
2100 EPackage class DefinedPart
2101 EModelElement class
2102 ENamedElement class
2103 EPackage class
2104 "
2105 fontSize 14
2106 fontName "Consolas"
2107 alignment "left"
2108 anchor "tl"
2109 borderDistance 6
2110 ]
2111 ]
2112
2113 node
2114 [
2115 id 1
2116 graphics
2117 [
2118 w 41.800000000000004
2119 h 26
2120 type "rectangle"
2121 fill "#FFFFFF"
2122 fill2 "#FFFFFF"
2123 outline "#000000"
2124 ]
2125 LabelGraphics
2126 [
2127 text "true"
2128 outline "#000000"
2129 fill "#FFFFFF"
2130 fontSize 16
2131 fontName "Monospace"
2132 autoSizePolicy "node_width"
2133 anchor "t"
2134 borderDistance 0.0
2135 ]
2136 LabelGraphics
2137 [
2138 text "
2139 "
2140 fontSize 14
2141 fontName "Consolas"
2142 alignment "left"
2143 anchor "tl"
2144 borderDistance 6
2145 ]
2146 ]
2147
2148 node
2149 [
2150 id 2
2151 graphics
2152 [
2153 w 50.6
2154 h 26
2155 type "rectangle"
2156 fill "#FFFFFF"
2157 fill2 "#FFFFFF"
2158 outline "#000000"
2159 ]
2160 LabelGraphics
2161 [
2162 text "false"
2163 outline "#000000"
2164 fill "#FFFFFF"
2165 fontSize 16
2166 fontName "Monospace"
2167 autoSizePolicy "node_width"
2168 anchor "t"
2169 borderDistance 0.0
2170 ]
2171 LabelGraphics
2172 [
2173 text "
2174 "
2175 fontSize 14
2176 fontName "Consolas"
2177 alignment "left"
2178 anchor "tl"
2179 borderDistance 6
2180 ]
2181 ]
2182
2183 node
2184 [
2185 id 3
2186 graphics
2187 [
2188 w 24.200000000000003
2189 h 26
2190 type "rectangle"
2191 fill "#FFFFFF"
2192 fill2 "#FFFFFF"
2193 outline "#000000"
2194 ]
2195 LabelGraphics
2196 [
2197 text "-1"
2198 outline "#000000"
2199 fill "#FFFFFF"
2200 fontSize 16
2201 fontName "Monospace"
2202 autoSizePolicy "node_width"
2203 anchor "t"
2204 borderDistance 0.0
2205 ]
2206 LabelGraphics
2207 [
2208 text "
2209 "
2210 fontSize 14
2211 fontName "Consolas"
2212 alignment "left"
2213 anchor "tl"
2214 borderDistance 6
2215 ]
2216 ]
2217
2218 node
2219 [
2220 id 4
2221 graphics
2222 [
2223 w 15.400000000000002
2224 h 26
2225 type "rectangle"
2226 fill "#FFFFFF"
2227 fill2 "#FFFFFF"
2228 outline "#000000"
2229 ]
2230 LabelGraphics
2231 [
2232 text "0"
2233 outline "#000000"
2234 fill "#FFFFFF"
2235 fontSize 16
2236 fontName "Monospace"
2237 autoSizePolicy "node_width"
2238 anchor "t"
2239 borderDistance 0.0
2240 ]
2241 LabelGraphics
2242 [
2243 text "
2244 "
2245 fontSize 14
2246 fontName "Consolas"
2247 alignment "left"
2248 anchor "tl"
2249 borderDistance 6
2250 ]
2251 ]
2252
2253 node
2254 [
2255 id 5
2256 graphics
2257 [
2258 w 15.400000000000002
2259 h 26
2260 type "rectangle"
2261 fill "#FFFFFF"
2262 fill2 "#FFFFFF"
2263 outline "#000000"
2264 ]
2265 LabelGraphics
2266 [
2267 text "1"
2268 outline "#000000"
2269 fill "#FFFFFF"
2270 fontSize 16
2271 fontName "Monospace"
2272 autoSizePolicy "node_width"
2273 anchor "t"
2274 borderDistance 0.0
2275 ]
2276 LabelGraphics
2277 [
2278 text "
2279 "
2280 fontSize 14
2281 fontName "Consolas"
2282 alignment "left"
2283 anchor "tl"
2284 borderDistance 6
2285 ]
2286 ]
2287
2288 node
2289 [
2290 id 6
2291 graphics
2292 [
2293 w 33.0
2294 h 26
2295 type "rectangle"
2296 fill "#FFFFFF"
2297 fill2 "#FFFFFF"
2298 outline "#000000"
2299 ]
2300 LabelGraphics
2301 [
2302 text ""A""
2303 outline "#000000"
2304 fill "#FFFFFF"
2305 fontSize 16
2306 fontName "Monospace"
2307 autoSizePolicy "node_width"
2308 anchor "t"
2309 borderDistance 0.0
2310 ]
2311 LabelGraphics
2312 [
2313 text "
2314 "
2315 fontSize 14
2316 fontName "Consolas"
2317 alignment "left"
2318 anchor "tl"
2319 borderDistance 6
2320 ]
2321 ]
2322
2323 node
2324 [
2325 id 7
2326 graphics
2327 [
2328 w 33.0
2329 h 26
2330 type "rectangle"
2331 fill "#FFFFFF"
2332 fill2 "#FFFFFF"
2333 outline "#000000"
2334 ]
2335 LabelGraphics
2336 [
2337 text ""B""
2338 outline "#000000"
2339 fill "#FFFFFF"
2340 fontSize 16
2341 fontName "Monospace"
2342 autoSizePolicy "node_width"
2343 anchor "t"
2344 borderDistance 0.0
2345 ]
2346 LabelGraphics
2347 [
2348 text "
2349 "
2350 fontSize 14
2351 fontName "Consolas"
2352 alignment "left"
2353 anchor "tl"
2354 borderDistance 6
2355 ]
2356 ]
2357
2358 node
2359 [
2360 id 8
2361 graphics
2362 [
2363 w 94.60000000000001
2364 h 26
2365 type "rectangle"
2366 fill "#FFFFFF"
2367 fill2 "#FFFFFF"
2368 outline "#000000"
2369 ]
2370 LabelGraphics
2371 [
2372 text ""nsPrefix""
2373 outline "#000000"
2374 fill "#FFFFFF"
2375 fontSize 16
2376 fontName "Monospace"
2377 autoSizePolicy "node_width"
2378 anchor "t"
2379 borderDistance 0.0
2380 ]
2381 LabelGraphics
2382 [
2383 text "
2384 "
2385 fontSize 14
2386 fontName "Consolas"
2387 alignment "left"
2388 anchor "tl"
2389 borderDistance 6
2390 ]
2391 ]
2392
2393 node
2394 [
2395 id 9
2396 graphics
2397 [
2398 w 68.2
2399 h 26
2400 type "rectangle"
2401 fill "#FFFFFF"
2402 fill2 "#FFFFFF"
2403 outline "#000000"
2404 ]
2405 LabelGraphics
2406 [
2407 text ""nsUri""
2408 outline "#000000"
2409 fill "#FFFFFF"
2410 fontSize 16
2411 fontName "Monospace"
2412 autoSizePolicy "node_width"
2413 anchor "t"
2414 borderDistance 0.0
2415 ]
2416 LabelGraphics
2417 [
2418 text "
2419 "
2420 fontSize 14
2421 fontName "Consolas"
2422 alignment "left"
2423 anchor "tl"
2424 borderDistance 6
2425 ]
2426 ]
2427
2428 node
2429 [
2430 id 10
2431 graphics
2432 [
2433 w 121.00000000000001
2434 h 26
2435 type "rectangle"
2436 fill "#FFFFFF"
2437 fill2 "#FFFFFF"
2438 outline "#000000"
2439 ]
2440 LabelGraphics
2441 [
2442 text ""packageName""
2443 outline "#000000"
2444 fill "#FFFFFF"
2445 fontSize 16
2446 fontName "Monospace"
2447 autoSizePolicy "node_width"
2448 anchor "t"
2449 borderDistance 0.0
2450 ]
2451 LabelGraphics
2452 [
2453 text "
2454 "
2455 fontSize 14
2456 fontName "Consolas"
2457 alignment "left"
2458 anchor "tl"
2459 borderDistance 6
2460 ]
2461 ]
2462
2463 node
2464 [
2465 id 11
2466 graphics
2467 [
2468 w 269.5
2469 h 110
2470 type "rectangle"
2471 fill "#FFFFFF"
2472 fill2 "#FFFFFF"
2473 outline "#000000"
2474 ]
2475 LabelGraphics
2476 [
2477 text "null"
2478 outline "#000000"
2479 fill "#FFFFFF"
2480 fontSize 16
2481 fontName "Monospace"
2482 autoSizePolicy "node_width"
2483 anchor "t"
2484 borderDistance 0.0
2485 ]
2486 LabelGraphics
2487 [
2488 text "
2489 EClassifier class
2490 EDataType class
2491 EModelElement class
2492 ENamedElement class
2493 EModelElement class UndefinedPart
2494 ENamedElement class UndefinedPart
2495 "
2496 fontSize 14
2497 fontName "Consolas"
2498 alignment "left"
2499 anchor "tl"
2500 borderDistance 6
2501 ]
2502 ]
2503
2504 node
2505 [
2506 id 12
2507 graphics
2508 [
2509 w 269.5
2510 h 68
2511 type "rectangle"
2512 fill "#FFFFFF"
2513 fill2 "#FFFFFF"
2514 outline "#000000"
2515 ]
2516 LabelGraphics
2517 [
2518 text "null"
2519 outline "#000000"
2520 fill "#FFFFFF"
2521 fontSize 16
2522 fontName "Monospace"
2523 autoSizePolicy "node_width"
2524 anchor "t"
2525 borderDistance 0.0
2526 ]
2527 LabelGraphics
2528 [
2529 text "
2530 EAnnotation class
2531 EModelElement class
2532 EModelElement class UndefinedPart
2533 "
2534 fontSize 14
2535 fontName "Consolas"
2536 alignment "left"
2537 anchor "tl"
2538 borderDistance 6
2539 ]
2540 ]
2541
2542 node
2543 [
2544 id 13
2545 graphics
2546 [
2547 w 269.5
2548 h 110
2549 type "rectangle"
2550 fill "#FFFFFF"
2551 fill2 "#FFFFFF"
2552 outline "#000000"
2553 ]
2554 LabelGraphics
2555 [
2556 text "null"
2557 outline "#000000"
2558 fill "#FFFFFF"
2559 fontSize 16
2560 fontName "Monospace"
2561 autoSizePolicy "node_width"
2562 anchor "t"
2563 borderDistance 0.0
2564 ]
2565 LabelGraphics
2566 [
2567 text "
2568 EClass class
2569 EClassifier class
2570 EModelElement class
2571 ENamedElement class
2572 EModelElement class UndefinedPart
2573 ENamedElement class UndefinedPart
2574 "
2575 fontSize 14
2576 fontName "Consolas"
2577 alignment "left"
2578 anchor "tl"
2579 borderDistance 6
2580 ]
2581 ]
2582
2583 node
2584 [
2585 id 14
2586 graphics
2587 [
2588 w 269.5
2589 h 110
2590 type "rectangle"
2591 fill "#FFFFFF"
2592 fill2 "#FFFFFF"
2593 outline "#000000"
2594 ]
2595 LabelGraphics
2596 [
2597 text "null"
2598 outline "#000000"
2599 fill "#FFFFFF"
2600 fontSize 16
2601 fontName "Monospace"
2602 autoSizePolicy "node_width"
2603 anchor "t"
2604 borderDistance 0.0
2605 ]
2606 LabelGraphics
2607 [
2608 text "
2609 EClassifier class
2610 EDataType class
2611 EModelElement class
2612 ENamedElement class
2613 EModelElement class UndefinedPart
2614 ENamedElement class UndefinedPart
2615 "
2616 fontSize 14
2617 fontName "Consolas"
2618 alignment "left"
2619 anchor "tl"
2620 borderDistance 6
2621 ]
2622 ]
2623
2624 node
2625 [
2626 id 15
2627 graphics
2628 [
2629 w 269.5
2630 h 68
2631 type "rectangle"
2632 fill "#FFFFFF"
2633 fill2 "#FFFFFF"
2634 outline "#000000"
2635 ]
2636 LabelGraphics
2637 [
2638 text "null"
2639 outline "#000000"
2640 fill "#FFFFFF"
2641 fontSize 16
2642 fontName "Monospace"
2643 autoSizePolicy "node_width"
2644 anchor "t"
2645 borderDistance 0.0
2646 ]
2647 LabelGraphics
2648 [
2649 text "
2650 EAnnotation class
2651 EModelElement class
2652 EModelElement class UndefinedPart
2653 "
2654 fontSize 14
2655 fontName "Consolas"
2656 alignment "left"
2657 anchor "tl"
2658 borderDistance 6
2659 ]
2660 ]
2661
2662 node
2663 [
2664 id 16
2665 graphics
2666 [
2667 w 112.2
2668 h 26
2669 type "rectangle"
2670 fill "#FFFFFF"
2671 fill2 "#FFFFFF"
2672 outline "#000000"
2673 ]
2674 LabelGraphics
2675 [
2676 text "New Integers"
2677 outline "#000000"
2678 fill "#FFFFFF"
2679 fontSize 16
2680 fontName "Monospace"
2681 autoSizePolicy "node_width"
2682 anchor "t"
2683 borderDistance 0.0
2684 ]
2685 LabelGraphics
2686 [
2687 text "
2688 "
2689 fontSize 14
2690 fontName "Consolas"
2691 alignment "left"
2692 anchor "tl"
2693 borderDistance 6
2694 ]
2695 ]
2696
2697 node
2698 [
2699 id 17
2700 graphics
2701 [
2702 w 85.80000000000001
2703 h 26
2704 type "rectangle"
2705 fill "#FFFFFF"
2706 fill2 "#FFFFFF"
2707 outline "#000000"
2708 ]
2709 LabelGraphics
2710 [
2711 text "New Reals"
2712 outline "#000000"
2713 fill "#FFFFFF"
2714 fontSize 16
2715 fontName "Monospace"
2716 autoSizePolicy "node_width"
2717 anchor "t"
2718 borderDistance 0.0
2719 ]
2720 LabelGraphics
2721 [
2722 text "
2723 "
2724 fontSize 14
2725 fontName "Consolas"
2726 alignment "left"
2727 anchor "tl"
2728 borderDistance 6
2729 ]
2730 ]
2731
2732 node
2733 [
2734 id 18
2735 graphics
2736 [
2737 w 103.4
2738 h 26
2739 type "rectangle"
2740 fill "#FFFFFF"
2741 fill2 "#FFFFFF"
2742 outline "#000000"
2743 ]
2744 LabelGraphics
2745 [
2746 text "New Strings"
2747 outline "#000000"
2748 fill "#FFFFFF"
2749 fontSize 16
2750 fontName "Monospace"
2751 autoSizePolicy "node_width"
2752 anchor "t"
2753 borderDistance 0.0
2754 ]
2755 LabelGraphics
2756 [
2757 text "
2758 "
2759 fontSize 14
2760 fontName "Consolas"
2761 alignment "left"
2762 anchor "tl"
2763 borderDistance 6
2764 ]
2765 ]
2766
2767 node
2768 [
2769 id 19
2770 graphics
2771 [
2772 w 103.4
2773 h 26
2774 type "rectangle"
2775 fill "#FFFFFF"
2776 fill2 "#FFFFFF"
2777 outline "#000000"
2778 ]
2779 LabelGraphics
2780 [
2781 text "New Objects"
2782 outline "#000000"
2783 fill "#FFFFFF"
2784 fontSize 16
2785 fontName "Monospace"
2786 autoSizePolicy "node_width"
2787 anchor "t"
2788 borderDistance 0.0
2789 ]
2790 LabelGraphics
2791 [
2792 text "
2793 "
2794 fontSize 14
2795 fontName "Consolas"
2796 alignment "left"
2797 anchor "tl"
2798 borderDistance 6
2799 ]
2800 ]
2801 edge
2802 [
2803 source 12
2804 target 0
2805 graphics
2806 [
2807 fill "#000000"
2808 targetArrow "standard"
2809 ]
2810 LabelGraphics
2811 [
2812 text "eModelElement reference EAnnotation"
2813 fontSize 14
2814 fontName "Consolas"
2815 configuration "AutoFlippingLabel"
2816 model "six_pos"
2817 position "thead"
2818 ]
2819 ]
2820 edge
2821 [
2822 source 15
2823 target 0
2824 graphics
2825 [
2826 fill "#000000"
2827 targetArrow "standard"
2828 ]
2829 LabelGraphics
2830 [
2831 text "eModelElement reference EAnnotation"
2832 fontSize 14
2833 fontName "Consolas"
2834 configuration "AutoFlippingLabel"
2835 model "six_pos"
2836 position "thead"
2837 ]
2838 ]
2839 edge
2840 [
2841 source 11
2842 target 0
2843 graphics
2844 [
2845 fill "#000000"
2846 targetArrow "standard"
2847 ]
2848 LabelGraphics
2849 [
2850 text "ePackage reference EClassifier"
2851 fontSize 14
2852 fontName "Consolas"
2853 configuration "AutoFlippingLabel"
2854 model "six_pos"
2855 position "thead"
2856 ]
2857 ]
2858 edge
2859 [
2860 source 13
2861 target 0
2862 graphics
2863 [
2864 fill "#000000"
2865 targetArrow "standard"
2866 ]
2867 LabelGraphics
2868 [
2869 text "ePackage reference EClassifier"
2870 fontSize 14
2871 fontName "Consolas"
2872 configuration "AutoFlippingLabel"
2873 model "six_pos"
2874 position "thead"
2875 ]
2876 ]
2877 edge
2878 [
2879 source 14
2880 target 0
2881 graphics
2882 [
2883 fill "#000000"
2884 targetArrow "standard"
2885 ]
2886 LabelGraphics
2887 [
2888 text "ePackage reference EClassifier"
2889 fontSize 14
2890 fontName "Consolas"
2891 configuration "AutoFlippingLabel"
2892 model "six_pos"
2893 position "thead"
2894 ]
2895 ]
2896 edge
2897 [
2898 source 0
2899 target 12
2900 graphics
2901 [
2902 fill "#000000"
2903 width 3
2904 targetArrow "standard"
2905 ]
2906 LabelGraphics
2907 [
2908 text "eAnnotations reference EModelElement"
2909 fontSize 14
2910 fontName "Consolas"
2911 configuration "AutoFlippingLabel"
2912 model "six_pos"
2913 position "thead"
2914 ]
2915 ]
2916 edge
2917 [
2918 source 0
2919 target 15
2920 graphics
2921 [
2922 fill "#000000"
2923 width 3
2924 targetArrow "standard"
2925 ]
2926 LabelGraphics
2927 [
2928 text "eAnnotations reference EModelElement"
2929 fontSize 14
2930 fontName "Consolas"
2931 configuration "AutoFlippingLabel"
2932 model "six_pos"
2933 position "thead"
2934 ]
2935 ]
2936 edge
2937 [
2938 source 0
2939 target 11
2940 graphics
2941 [
2942 fill "#000000"
2943 width 3
2944 targetArrow "standard"
2945 ]
2946 LabelGraphics
2947 [
2948 text "eClassifiers reference EPackage"
2949 fontSize 14
2950 fontName "Consolas"
2951 configuration "AutoFlippingLabel"
2952 model "six_pos"
2953 position "thead"
2954 ]
2955 ]
2956 edge
2957 [
2958 source 0
2959 target 13
2960 graphics
2961 [
2962 fill "#000000"
2963 width 3
2964 targetArrow "standard"
2965 ]
2966 LabelGraphics
2967 [
2968 text "eClassifiers reference EPackage"
2969 fontSize 14
2970 fontName "Consolas"
2971 configuration "AutoFlippingLabel"
2972 model "six_pos"
2973 position "thead"
2974 ]
2975 ]
2976 edge
2977 [
2978 source 0
2979 target 14
2980 graphics
2981 [
2982 fill "#000000"
2983 width 3
2984 targetArrow "standard"
2985 ]
2986 LabelGraphics
2987 [
2988 text "eClassifiers reference EPackage"
2989 fontSize 14
2990 fontName "Consolas"
2991 configuration "AutoFlippingLabel"
2992 model "six_pos"
2993 position "thead"
2994 ]
2995 ]
2996 edge
2997 [
2998 source 12
2999 target 7
3000 graphics
3001 [
3002 fill "#000000"
3003 targetArrow "standard"
3004 ]
3005 LabelGraphics
3006 [
3007 text "source attribute EAnnotation"
3008 fontSize 14
3009 fontName "Consolas"
3010 configuration "AutoFlippingLabel"
3011 model "six_pos"
3012 position "thead"
3013 ]
3014 ]
3015 edge
3016 [
3017 source 11
3018 target 8
3019 graphics
3020 [
3021 fill "#000000"
3022 targetArrow "standard"
3023 ]
3024 LabelGraphics
3025 [
3026 text "instanceClassName attribute EClassifier"
3027 fontSize 14
3028 fontName "Consolas"
3029 configuration "AutoFlippingLabel"
3030 model "six_pos"
3031 position "thead"
3032 ]
3033 ]
3034 edge
3035 [
3036 source 14
3037 target 10
3038 graphics
3039 [
3040 fill "#000000"
3041 targetArrow "standard"
3042 ]
3043 LabelGraphics
3044 [
3045 text "instanceClassName attribute EClassifier"
3046 fontSize 14
3047 fontName "Consolas"
3048 configuration "AutoFlippingLabel"
3049 model "six_pos"
3050 position "thead"
3051 ]
3052 ]
3053 edge
3054 [
3055 source 11
3056 target 9
3057 graphics
3058 [
3059 fill "#000000"
3060 targetArrow "standard"
3061 ]
3062 LabelGraphics
3063 [
3064 text "instanceTypeName attribute EClassifier"
3065 fontSize 14
3066 fontName "Consolas"
3067 configuration "AutoFlippingLabel"
3068 model "six_pos"
3069 position "thead"
3070 ]
3071 ]
3072 edge
3073 [
3074 source 0
3075 target 10
3076 graphics
3077 [
3078 fill "#000000"
3079 targetArrow "standard"
3080 ]
3081 LabelGraphics
3082 [
3083 text "name attribute ENamedElement"
3084 fontSize 14
3085 fontName "Consolas"
3086 configuration "AutoFlippingLabel"
3087 model "six_pos"
3088 position "thead"
3089 ]
3090 ]
3091 edge
3092 [
3093 source 11
3094 target 8
3095 graphics
3096 [
3097 fill "#000000"
3098 targetArrow "standard"
3099 ]
3100 LabelGraphics
3101 [
3102 text "name attribute ENamedElement"
3103 fontSize 14
3104 fontName "Consolas"
3105 configuration "AutoFlippingLabel"
3106 model "six_pos"
3107 position "thead"
3108 ]
3109 ]
3110 edge
3111 [
3112 source 13
3113 target 9
3114 graphics
3115 [
3116 fill "#000000"
3117 targetArrow "standard"
3118 ]
3119 LabelGraphics
3120 [
3121 text "name attribute ENamedElement"
3122 fontSize 14
3123 fontName "Consolas"
3124 configuration "AutoFlippingLabel"
3125 model "six_pos"
3126 position "thead"
3127 ]
3128 ]
3129 edge
3130 [
3131 source 14
3132 target 8
3133 graphics
3134 [
3135 fill "#000000"
3136 targetArrow "standard"
3137 ]
3138 LabelGraphics
3139 [
3140 text "name attribute ENamedElement"
3141 fontSize 14
3142 fontName "Consolas"
3143 configuration "AutoFlippingLabel"
3144 model "six_pos"
3145 position "thead"
3146 ]
3147 ]
3148 edge
3149 [
3150 source 0
3151 target 9
3152 graphics
3153 [
3154 fill "#000000"
3155 targetArrow "standard"
3156 ]
3157 LabelGraphics
3158 [
3159 text "nsURI attribute EPackage"
3160 fontSize 14
3161 fontName "Consolas"
3162 configuration "AutoFlippingLabel"
3163 model "six_pos"
3164 position "thead"
3165 ]
3166 ]
3167 edge
3168 [
3169 source 0
3170 target 8
3171 graphics
3172 [
3173 fill "#000000"
3174 targetArrow "standard"
3175 ]
3176 LabelGraphics
3177 [
3178 text "nsPrefix attribute EPackage"
3179 fontSize 14
3180 fontName "Consolas"
3181 configuration "AutoFlippingLabel"
3182 model "six_pos"
3183 position "thead"
3184 ]
3185 ]
3186]
3187graph
3188[
3189 node
3190 [
3191 id 0
3192 graphics
3193 [
3194 w 254.10000000000002
3195 h 110
3196 type "rectangle"
3197 fill "#FFFFFF"
3198 fill2 "#FFFFFF"
3199 outline "#000000"
3200 ]
3201 LabelGraphics
3202 [
3203 text "o 1"
3204 outline "#000000"
3205 fill "#FFFFFF"
3206 fontSize 16
3207 fontName "Monospace"
3208 autoSizePolicy "node_width"
3209 anchor "t"
3210 borderDistance 0.0
3211 ]
3212 LabelGraphics
3213 [
3214 text "
3215 EModelElement class DefinedPart
3216 ENamedElement class DefinedPart
3217 EPackage class DefinedPart
3218 EModelElement class
3219 ENamedElement class
3220 EPackage class
3221 "
3222 fontSize 14
3223 fontName "Consolas"
3224 alignment "left"
3225 anchor "tl"
3226 borderDistance 6
3227 ]
3228 ]
3229
3230 node
3231 [
3232 id 1
3233 graphics
3234 [
3235 w 41.800000000000004
3236 h 26
3237 type "rectangle"
3238 fill "#FFFFFF"
3239 fill2 "#FFFFFF"
3240 outline "#000000"
3241 ]
3242 LabelGraphics
3243 [
3244 text "true"
3245 outline "#000000"
3246 fill "#FFFFFF"
3247 fontSize 16
3248 fontName "Monospace"
3249 autoSizePolicy "node_width"
3250 anchor "t"
3251 borderDistance 0.0
3252 ]
3253 LabelGraphics
3254 [
3255 text "
3256 "
3257 fontSize 14
3258 fontName "Consolas"
3259 alignment "left"
3260 anchor "tl"
3261 borderDistance 6
3262 ]
3263 ]
3264
3265 node
3266 [
3267 id 2
3268 graphics
3269 [
3270 w 50.6
3271 h 26
3272 type "rectangle"
3273 fill "#FFFFFF"
3274 fill2 "#FFFFFF"
3275 outline "#000000"
3276 ]
3277 LabelGraphics
3278 [
3279 text "false"
3280 outline "#000000"
3281 fill "#FFFFFF"
3282 fontSize 16
3283 fontName "Monospace"
3284 autoSizePolicy "node_width"
3285 anchor "t"
3286 borderDistance 0.0
3287 ]
3288 LabelGraphics
3289 [
3290 text "
3291 "
3292 fontSize 14
3293 fontName "Consolas"
3294 alignment "left"
3295 anchor "tl"
3296 borderDistance 6
3297 ]
3298 ]
3299
3300 node
3301 [
3302 id 3
3303 graphics
3304 [
3305 w 24.200000000000003
3306 h 26
3307 type "rectangle"
3308 fill "#FFFFFF"
3309 fill2 "#FFFFFF"
3310 outline "#000000"
3311 ]
3312 LabelGraphics
3313 [
3314 text "-1"
3315 outline "#000000"
3316 fill "#FFFFFF"
3317 fontSize 16
3318 fontName "Monospace"
3319 autoSizePolicy "node_width"
3320 anchor "t"
3321 borderDistance 0.0
3322 ]
3323 LabelGraphics
3324 [
3325 text "
3326 "
3327 fontSize 14
3328 fontName "Consolas"
3329 alignment "left"
3330 anchor "tl"
3331 borderDistance 6
3332 ]
3333 ]
3334
3335 node
3336 [
3337 id 4
3338 graphics
3339 [
3340 w 15.400000000000002
3341 h 26
3342 type "rectangle"
3343 fill "#FFFFFF"
3344 fill2 "#FFFFFF"
3345 outline "#000000"
3346 ]
3347 LabelGraphics
3348 [
3349 text "0"
3350 outline "#000000"
3351 fill "#FFFFFF"
3352 fontSize 16
3353 fontName "Monospace"
3354 autoSizePolicy "node_width"
3355 anchor "t"
3356 borderDistance 0.0
3357 ]
3358 LabelGraphics
3359 [
3360 text "
3361 "
3362 fontSize 14
3363 fontName "Consolas"
3364 alignment "left"
3365 anchor "tl"
3366 borderDistance 6
3367 ]
3368 ]
3369
3370 node
3371 [
3372 id 5
3373 graphics
3374 [
3375 w 15.400000000000002
3376 h 26
3377 type "rectangle"
3378 fill "#FFFFFF"
3379 fill2 "#FFFFFF"
3380 outline "#000000"
3381 ]
3382 LabelGraphics
3383 [
3384 text "1"
3385 outline "#000000"
3386 fill "#FFFFFF"
3387 fontSize 16
3388 fontName "Monospace"
3389 autoSizePolicy "node_width"
3390 anchor "t"
3391 borderDistance 0.0
3392 ]
3393 LabelGraphics
3394 [
3395 text "
3396 "
3397 fontSize 14
3398 fontName "Consolas"
3399 alignment "left"
3400 anchor "tl"
3401 borderDistance 6
3402 ]
3403 ]
3404
3405 node
3406 [
3407 id 6
3408 graphics
3409 [
3410 w 33.0
3411 h 26
3412 type "rectangle"
3413 fill "#FFFFFF"
3414 fill2 "#FFFFFF"
3415 outline "#000000"
3416 ]
3417 LabelGraphics
3418 [
3419 text ""A""
3420 outline "#000000"
3421 fill "#FFFFFF"
3422 fontSize 16
3423 fontName "Monospace"
3424 autoSizePolicy "node_width"
3425 anchor "t"
3426 borderDistance 0.0
3427 ]
3428 LabelGraphics
3429 [
3430 text "
3431 "
3432 fontSize 14
3433 fontName "Consolas"
3434 alignment "left"
3435 anchor "tl"
3436 borderDistance 6
3437 ]
3438 ]
3439
3440 node
3441 [
3442 id 7
3443 graphics
3444 [
3445 w 33.0
3446 h 26
3447 type "rectangle"
3448 fill "#FFFFFF"
3449 fill2 "#FFFFFF"
3450 outline "#000000"
3451 ]
3452 LabelGraphics
3453 [
3454 text ""B""
3455 outline "#000000"
3456 fill "#FFFFFF"
3457 fontSize 16
3458 fontName "Monospace"
3459 autoSizePolicy "node_width"
3460 anchor "t"
3461 borderDistance 0.0
3462 ]
3463 LabelGraphics
3464 [
3465 text "
3466 "
3467 fontSize 14
3468 fontName "Consolas"
3469 alignment "left"
3470 anchor "tl"
3471 borderDistance 6
3472 ]
3473 ]
3474
3475 node
3476 [
3477 id 8
3478 graphics
3479 [
3480 w 94.60000000000001
3481 h 26
3482 type "rectangle"
3483 fill "#FFFFFF"
3484 fill2 "#FFFFFF"
3485 outline "#000000"
3486 ]
3487 LabelGraphics
3488 [
3489 text ""nsPrefix""
3490 outline "#000000"
3491 fill "#FFFFFF"
3492 fontSize 16
3493 fontName "Monospace"
3494 autoSizePolicy "node_width"
3495 anchor "t"
3496 borderDistance 0.0
3497 ]
3498 LabelGraphics
3499 [
3500 text "
3501 "
3502 fontSize 14
3503 fontName "Consolas"
3504 alignment "left"
3505 anchor "tl"
3506 borderDistance 6
3507 ]
3508 ]
3509
3510 node
3511 [
3512 id 9
3513 graphics
3514 [
3515 w 68.2
3516 h 26
3517 type "rectangle"
3518 fill "#FFFFFF"
3519 fill2 "#FFFFFF"
3520 outline "#000000"
3521 ]
3522 LabelGraphics
3523 [
3524 text ""nsUri""
3525 outline "#000000"
3526 fill "#FFFFFF"
3527 fontSize 16
3528 fontName "Monospace"
3529 autoSizePolicy "node_width"
3530 anchor "t"
3531 borderDistance 0.0
3532 ]
3533 LabelGraphics
3534 [
3535 text "
3536 "
3537 fontSize 14
3538 fontName "Consolas"
3539 alignment "left"
3540 anchor "tl"
3541 borderDistance 6
3542 ]
3543 ]
3544
3545 node
3546 [
3547 id 10
3548 graphics
3549 [
3550 w 121.00000000000001
3551 h 26
3552 type "rectangle"
3553 fill "#FFFFFF"
3554 fill2 "#FFFFFF"
3555 outline "#000000"
3556 ]
3557 LabelGraphics
3558 [
3559 text ""packageName""
3560 outline "#000000"
3561 fill "#FFFFFF"
3562 fontSize 16
3563 fontName "Monospace"
3564 autoSizePolicy "node_width"
3565 anchor "t"
3566 borderDistance 0.0
3567 ]
3568 LabelGraphics
3569 [
3570 text "
3571 "
3572 fontSize 14
3573 fontName "Consolas"
3574 alignment "left"
3575 anchor "tl"
3576 borderDistance 6
3577 ]
3578 ]
3579
3580 node
3581 [
3582 id 11
3583 graphics
3584 [
3585 w 269.5
3586 h 124
3587 type "rectangle"
3588 fill "#FFFFFF"
3589 fill2 "#FFFFFF"
3590 outline "#000000"
3591 ]
3592 LabelGraphics
3593 [
3594 text "null"
3595 outline "#000000"
3596 fill "#FFFFFF"
3597 fontSize 16
3598 fontName "Monospace"
3599 autoSizePolicy "node_width"
3600 anchor "t"
3601 borderDistance 0.0
3602 ]
3603 LabelGraphics
3604 [
3605 text "
3606 EClassifier class
3607 EDataType class
3608 EEnum class
3609 EModelElement class
3610 ENamedElement class
3611 EModelElement class UndefinedPart
3612 ENamedElement class UndefinedPart
3613 "
3614 fontSize 14
3615 fontName "Consolas"
3616 alignment "left"
3617 anchor "tl"
3618 borderDistance 6
3619 ]
3620 ]
3621
3622 node
3623 [
3624 id 12
3625 graphics
3626 [
3627 w 269.5
3628 h 124
3629 type "rectangle"
3630 fill "#FFFFFF"
3631 fill2 "#FFFFFF"
3632 outline "#000000"
3633 ]
3634 LabelGraphics
3635 [
3636 text "null"
3637 outline "#000000"
3638 fill "#FFFFFF"
3639 fontSize 16
3640 fontName "Monospace"
3641 autoSizePolicy "node_width"
3642 anchor "t"
3643 borderDistance 0.0
3644 ]
3645 LabelGraphics
3646 [
3647 text "
3648 EClassifier class
3649 EDataType class
3650 EEnum class
3651 EModelElement class
3652 ENamedElement class
3653 EModelElement class UndefinedPart
3654 ENamedElement class UndefinedPart
3655 "
3656 fontSize 14
3657 fontName "Consolas"
3658 alignment "left"
3659 anchor "tl"
3660 borderDistance 6
3661 ]
3662 ]
3663
3664 node
3665 [
3666 id 13
3667 graphics
3668 [
3669 w 269.5
3670 h 96
3671 type "rectangle"
3672 fill "#FFFFFF"
3673 fill2 "#FFFFFF"
3674 outline "#000000"
3675 ]
3676 LabelGraphics
3677 [
3678 text "null"
3679 outline "#000000"
3680 fill "#FFFFFF"
3681 fontSize 16
3682 fontName "Monospace"
3683 autoSizePolicy "node_width"
3684 anchor "t"
3685 borderDistance 0.0
3686 ]
3687 LabelGraphics
3688 [
3689 text "
3690 EEnumLiteral class
3691 EModelElement class
3692 ENamedElement class
3693 EModelElement class UndefinedPart
3694 ENamedElement class UndefinedPart
3695 "
3696 fontSize 14
3697 fontName "Consolas"
3698 alignment "left"
3699 anchor "tl"
3700 borderDistance 6
3701 ]
3702 ]
3703
3704 node
3705 [
3706 id 14
3707 graphics
3708 [
3709 w 269.5
3710 h 68
3711 type "rectangle"
3712 fill "#FFFFFF"
3713 fill2 "#FFFFFF"
3714 outline "#000000"
3715 ]
3716 LabelGraphics
3717 [
3718 text "null"
3719 outline "#000000"
3720 fill "#FFFFFF"
3721 fontSize 16
3722 fontName "Monospace"
3723 autoSizePolicy "node_width"
3724 anchor "t"
3725 borderDistance 0.0
3726 ]
3727 LabelGraphics
3728 [
3729 text "
3730 EAnnotation class
3731 EModelElement class
3732 EModelElement class UndefinedPart
3733 "
3734 fontSize 14
3735 fontName "Consolas"
3736 alignment "left"
3737 anchor "tl"
3738 borderDistance 6
3739 ]
3740 ]
3741
3742 node
3743 [
3744 id 15
3745 graphics
3746 [
3747 w 269.5
3748 h 96
3749 type "rectangle"
3750 fill "#FFFFFF"
3751 fill2 "#FFFFFF"
3752 outline "#000000"
3753 ]
3754 LabelGraphics
3755 [
3756 text "null"
3757 outline "#000000"
3758 fill "#FFFFFF"
3759 fontSize 16
3760 fontName "Monospace"
3761 autoSizePolicy "node_width"
3762 anchor "t"
3763 borderDistance 0.0
3764 ]
3765 LabelGraphics
3766 [
3767 text "
3768 EModelElement class
3769 ENamedElement class
3770 ETypeParameter class
3771 EModelElement class UndefinedPart
3772 ENamedElement class UndefinedPart
3773 "
3774 fontSize 14
3775 fontName "Consolas"
3776 alignment "left"
3777 anchor "tl"
3778 borderDistance 6
3779 ]
3780 ]
3781
3782 node
3783 [
3784 id 16
3785 graphics
3786 [
3787 w 112.2
3788 h 26
3789 type "rectangle"
3790 fill "#FFFFFF"
3791 fill2 "#FFFFFF"
3792 outline "#000000"
3793 ]
3794 LabelGraphics
3795 [
3796 text "New Integers"
3797 outline "#000000"
3798 fill "#FFFFFF"
3799 fontSize 16
3800 fontName "Monospace"
3801 autoSizePolicy "node_width"
3802 anchor "t"
3803 borderDistance 0.0
3804 ]
3805 LabelGraphics
3806 [
3807 text "
3808 "
3809 fontSize 14
3810 fontName "Consolas"
3811 alignment "left"
3812 anchor "tl"
3813 borderDistance 6
3814 ]
3815 ]
3816
3817 node
3818 [
3819 id 17
3820 graphics
3821 [
3822 w 85.80000000000001
3823 h 26
3824 type "rectangle"
3825 fill "#FFFFFF"
3826 fill2 "#FFFFFF"
3827 outline "#000000"
3828 ]
3829 LabelGraphics
3830 [
3831 text "New Reals"
3832 outline "#000000"
3833 fill "#FFFFFF"
3834 fontSize 16
3835 fontName "Monospace"
3836 autoSizePolicy "node_width"
3837 anchor "t"
3838 borderDistance 0.0
3839 ]
3840 LabelGraphics
3841 [
3842 text "
3843 "
3844 fontSize 14
3845 fontName "Consolas"
3846 alignment "left"
3847 anchor "tl"
3848 borderDistance 6
3849 ]
3850 ]
3851
3852 node
3853 [
3854 id 18
3855 graphics
3856 [
3857 w 103.4
3858 h 26
3859 type "rectangle"
3860 fill "#FFFFFF"
3861 fill2 "#FFFFFF"
3862 outline "#000000"
3863 ]
3864 LabelGraphics
3865 [
3866 text "New Strings"
3867 outline "#000000"
3868 fill "#FFFFFF"
3869 fontSize 16
3870 fontName "Monospace"
3871 autoSizePolicy "node_width"
3872 anchor "t"
3873 borderDistance 0.0
3874 ]
3875 LabelGraphics
3876 [
3877 text "
3878 "
3879 fontSize 14
3880 fontName "Consolas"
3881 alignment "left"
3882 anchor "tl"
3883 borderDistance 6
3884 ]
3885 ]
3886
3887 node
3888 [
3889 id 19
3890 graphics
3891 [
3892 w 103.4
3893 h 26
3894 type "rectangle"
3895 fill "#FFFFFF"
3896 fill2 "#FFFFFF"
3897 outline "#000000"
3898 ]
3899 LabelGraphics
3900 [
3901 text "New Objects"
3902 outline "#000000"
3903 fill "#FFFFFF"
3904 fontSize 16
3905 fontName "Monospace"
3906 autoSizePolicy "node_width"
3907 anchor "t"
3908 borderDistance 0.0
3909 ]
3910 LabelGraphics
3911 [
3912 text "
3913 "
3914 fontSize 14
3915 fontName "Consolas"
3916 alignment "left"
3917 anchor "tl"
3918 borderDistance 6
3919 ]
3920 ]
3921 edge
3922 [
3923 source 14
3924 target 0
3925 graphics
3926 [
3927 fill "#000000"
3928 targetArrow "standard"
3929 ]
3930 LabelGraphics
3931 [
3932 text "eModelElement reference EAnnotation"
3933 fontSize 14
3934 fontName "Consolas"
3935 configuration "AutoFlippingLabel"
3936 model "six_pos"
3937 position "thead"
3938 ]
3939 ]
3940 edge
3941 [
3942 source 11
3943 target 0
3944 graphics
3945 [
3946 fill "#000000"
3947 targetArrow "standard"
3948 ]
3949 LabelGraphics
3950 [
3951 text "ePackage reference EClassifier"
3952 fontSize 14
3953 fontName "Consolas"
3954 configuration "AutoFlippingLabel"
3955 model "six_pos"
3956 position "thead"
3957 ]
3958 ]
3959 edge
3960 [
3961 source 12
3962 target 0
3963 graphics
3964 [
3965 fill "#000000"
3966 targetArrow "standard"
3967 ]
3968 LabelGraphics
3969 [
3970 text "ePackage reference EClassifier"
3971 fontSize 14
3972 fontName "Consolas"
3973 configuration "AutoFlippingLabel"
3974 model "six_pos"
3975 position "thead"
3976 ]
3977 ]
3978 edge
3979 [
3980 source 12
3981 target 15
3982 graphics
3983 [
3984 fill "#000000"
3985 width 3
3986 targetArrow "standard"
3987 ]
3988 LabelGraphics
3989 [
3990 text "eTypeParameters reference EClassifier"
3991 fontSize 14
3992 fontName "Consolas"
3993 configuration "AutoFlippingLabel"
3994 model "six_pos"
3995 position "thead"
3996 ]
3997 ]
3998 edge
3999 [
4000 source 11
4001 target 13
4002 graphics
4003 [
4004 fill "#000000"
4005 width 3
4006 targetArrow "standard"
4007 ]
4008 LabelGraphics
4009 [
4010 text "eLiterals reference EEnum"
4011 fontSize 14
4012 fontName "Consolas"
4013 configuration "AutoFlippingLabel"
4014 model "six_pos"
4015 position "thead"
4016 ]
4017 ]
4018 edge
4019 [
4020 source 13
4021 target 11
4022 graphics
4023 [
4024 fill "#000000"
4025 targetArrow "standard"
4026 ]
4027 LabelGraphics
4028 [
4029 text "eEnum reference EEnumLiteral"
4030 fontSize 14
4031 fontName "Consolas"
4032 configuration "AutoFlippingLabel"
4033 model "six_pos"
4034 position "thead"
4035 ]
4036 ]
4037 edge
4038 [
4039 source 0
4040 target 14
4041 graphics
4042 [
4043 fill "#000000"
4044 width 3
4045 targetArrow "standard"
4046 ]
4047 LabelGraphics
4048 [
4049 text "eAnnotations reference EModelElement"
4050 fontSize 14
4051 fontName "Consolas"
4052 configuration "AutoFlippingLabel"
4053 model "six_pos"
4054 position "thead"
4055 ]
4056 ]
4057 edge
4058 [
4059 source 0
4060 target 11
4061 graphics
4062 [
4063 fill "#000000"
4064 width 3
4065 targetArrow "standard"
4066 ]
4067 LabelGraphics
4068 [
4069 text "eClassifiers reference EPackage"
4070 fontSize 14
4071 fontName "Consolas"
4072 configuration "AutoFlippingLabel"
4073 model "six_pos"
4074 position "thead"
4075 ]
4076 ]
4077 edge
4078 [
4079 source 0
4080 target 12
4081 graphics
4082 [
4083 fill "#000000"
4084 width 3
4085 targetArrow "standard"
4086 ]
4087 LabelGraphics
4088 [
4089 text "eClassifiers reference EPackage"
4090 fontSize 14
4091 fontName "Consolas"
4092 configuration "AutoFlippingLabel"
4093 model "six_pos"
4094 position "thead"
4095 ]
4096 ]
4097 edge
4098 [
4099 source 14
4100 target 10
4101 graphics
4102 [
4103 fill "#000000"
4104 targetArrow "standard"
4105 ]
4106 LabelGraphics
4107 [
4108 text "source attribute EAnnotation"
4109 fontSize 14
4110 fontName "Consolas"
4111 configuration "AutoFlippingLabel"
4112 model "six_pos"
4113 position "thead"
4114 ]
4115 ]
4116 edge
4117 [
4118 source 11
4119 target 8
4120 graphics
4121 [
4122 fill "#000000"
4123 targetArrow "standard"
4124 ]
4125 LabelGraphics
4126 [
4127 text "instanceClassName attribute EClassifier"
4128 fontSize 14
4129 fontName "Consolas"
4130 configuration "AutoFlippingLabel"
4131 model "six_pos"
4132 position "thead"
4133 ]
4134 ]
4135 edge
4136 [
4137 source 12
4138 target 9
4139 graphics
4140 [
4141 fill "#000000"
4142 targetArrow "standard"
4143 ]
4144 LabelGraphics
4145 [
4146 text "instanceClassName attribute EClassifier"
4147 fontSize 14
4148 fontName "Consolas"
4149 configuration "AutoFlippingLabel"
4150 model "six_pos"
4151 position "thead"
4152 ]
4153 ]
4154 edge
4155 [
4156 source 11
4157 target 9
4158 graphics
4159 [
4160 fill "#000000"
4161 targetArrow "standard"
4162 ]
4163 LabelGraphics
4164 [
4165 text "instanceTypeName attribute EClassifier"
4166 fontSize 14
4167 fontName "Consolas"
4168 configuration "AutoFlippingLabel"
4169 model "six_pos"
4170 position "thead"
4171 ]
4172 ]
4173 edge
4174 [
4175 source 12
4176 target 9
4177 graphics
4178 [
4179 fill "#000000"
4180 targetArrow "standard"
4181 ]
4182 LabelGraphics
4183 [
4184 text "instanceTypeName attribute EClassifier"
4185 fontSize 14
4186 fontName "Consolas"
4187 configuration "AutoFlippingLabel"
4188 model "six_pos"
4189 position "thead"
4190 ]
4191 ]
4192 edge
4193 [
4194 source 11
4195 target 2
4196 graphics
4197 [
4198 fill "#000000"
4199 targetArrow "standard"
4200 ]
4201 LabelGraphics
4202 [
4203 text "serializable attribute EDataType"
4204 fontSize 14
4205 fontName "Consolas"
4206 configuration "AutoFlippingLabel"
4207 model "six_pos"
4208 position "thead"
4209 ]
4210 ]
4211 edge
4212 [
4213 source 12
4214 target 2
4215 graphics
4216 [
4217 fill "#000000"
4218 targetArrow "standard"
4219 ]
4220 LabelGraphics
4221 [
4222 text "serializable attribute EDataType"
4223 fontSize 14
4224 fontName "Consolas"
4225 configuration "AutoFlippingLabel"
4226 model "six_pos"
4227 position "thead"
4228 ]
4229 ]
4230 edge
4231 [
4232 source 13
4233 target 9
4234 graphics
4235 [
4236 fill "#000000"
4237 targetArrow "standard"
4238 ]
4239 LabelGraphics
4240 [
4241 text "literal attribute EEnumLiteral"
4242 fontSize 14
4243 fontName "Consolas"
4244 configuration "AutoFlippingLabel"
4245 model "six_pos"
4246 position "thead"
4247 ]
4248 ]
4249 edge
4250 [
4251 source 0
4252 target 10
4253 graphics
4254 [
4255 fill "#000000"
4256 targetArrow "standard"
4257 ]
4258 LabelGraphics
4259 [
4260 text "name attribute ENamedElement"
4261 fontSize 14
4262 fontName "Consolas"
4263 configuration "AutoFlippingLabel"
4264 model "six_pos"
4265 position "thead"
4266 ]
4267 ]
4268 edge
4269 [
4270 source 12
4271 target 10
4272 graphics
4273 [
4274 fill "#000000"
4275 targetArrow "standard"
4276 ]
4277 LabelGraphics
4278 [
4279 text "name attribute ENamedElement"
4280 fontSize 14
4281 fontName "Consolas"
4282 configuration "AutoFlippingLabel"
4283 model "six_pos"
4284 position "thead"
4285 ]
4286 ]
4287 edge
4288 [
4289 source 0
4290 target 9
4291 graphics
4292 [
4293 fill "#000000"
4294 targetArrow "standard"
4295 ]
4296 LabelGraphics
4297 [
4298 text "nsURI attribute EPackage"
4299 fontSize 14
4300 fontName "Consolas"
4301 configuration "AutoFlippingLabel"
4302 model "six_pos"
4303 position "thead"
4304 ]
4305 ]
4306 edge
4307 [
4308 source 0
4309 target 8
4310 graphics
4311 [
4312 fill "#000000"
4313 targetArrow "standard"
4314 ]
4315 LabelGraphics
4316 [
4317 text "nsPrefix attribute EPackage"
4318 fontSize 14
4319 fontName "Consolas"
4320 configuration "AutoFlippingLabel"
4321 model "six_pos"
4322 position "thead"
4323 ]
4324 ]
4325]
4326graph
4327[
4328 node
4329 [
4330 id 0
4331 graphics
4332 [
4333 w 254.10000000000002
4334 h 110
4335 type "rectangle"
4336 fill "#FFFFFF"
4337 fill2 "#FFFFFF"
4338 outline "#000000"
4339 ]
4340 LabelGraphics
4341 [
4342 text "o 1"
4343 outline "#000000"
4344 fill "#FFFFFF"
4345 fontSize 16
4346 fontName "Monospace"
4347 autoSizePolicy "node_width"
4348 anchor "t"
4349 borderDistance 0.0
4350 ]
4351 LabelGraphics
4352 [
4353 text "
4354 EModelElement class DefinedPart
4355 ENamedElement class DefinedPart
4356 EPackage class DefinedPart
4357 EModelElement class
4358 ENamedElement class
4359 EPackage class
4360 "
4361 fontSize 14
4362 fontName "Consolas"
4363 alignment "left"
4364 anchor "tl"
4365 borderDistance 6
4366 ]
4367 ]
4368
4369 node
4370 [
4371 id 1
4372 graphics
4373 [
4374 w 41.800000000000004
4375 h 26
4376 type "rectangle"
4377 fill "#FFFFFF"
4378 fill2 "#FFFFFF"
4379 outline "#000000"
4380 ]
4381 LabelGraphics
4382 [
4383 text "true"
4384 outline "#000000"
4385 fill "#FFFFFF"
4386 fontSize 16
4387 fontName "Monospace"
4388 autoSizePolicy "node_width"
4389 anchor "t"
4390 borderDistance 0.0
4391 ]
4392 LabelGraphics
4393 [
4394 text "
4395 "
4396 fontSize 14
4397 fontName "Consolas"
4398 alignment "left"
4399 anchor "tl"
4400 borderDistance 6
4401 ]
4402 ]
4403
4404 node
4405 [
4406 id 2
4407 graphics
4408 [
4409 w 50.6
4410 h 26
4411 type "rectangle"
4412 fill "#FFFFFF"
4413 fill2 "#FFFFFF"
4414 outline "#000000"
4415 ]
4416 LabelGraphics
4417 [
4418 text "false"
4419 outline "#000000"
4420 fill "#FFFFFF"
4421 fontSize 16
4422 fontName "Monospace"
4423 autoSizePolicy "node_width"
4424 anchor "t"
4425 borderDistance 0.0
4426 ]
4427 LabelGraphics
4428 [
4429 text "
4430 "
4431 fontSize 14
4432 fontName "Consolas"
4433 alignment "left"
4434 anchor "tl"
4435 borderDistance 6
4436 ]
4437 ]
4438
4439 node
4440 [
4441 id 3
4442 graphics
4443 [
4444 w 24.200000000000003
4445 h 26
4446 type "rectangle"
4447 fill "#FFFFFF"
4448 fill2 "#FFFFFF"
4449 outline "#000000"
4450 ]
4451 LabelGraphics
4452 [
4453 text "-1"
4454 outline "#000000"
4455 fill "#FFFFFF"
4456 fontSize 16
4457 fontName "Monospace"
4458 autoSizePolicy "node_width"
4459 anchor "t"
4460 borderDistance 0.0
4461 ]
4462 LabelGraphics
4463 [
4464 text "
4465 "
4466 fontSize 14
4467 fontName "Consolas"
4468 alignment "left"
4469 anchor "tl"
4470 borderDistance 6
4471 ]
4472 ]
4473
4474 node
4475 [
4476 id 4
4477 graphics
4478 [
4479 w 15.400000000000002
4480 h 26
4481 type "rectangle"
4482 fill "#FFFFFF"
4483 fill2 "#FFFFFF"
4484 outline "#000000"
4485 ]
4486 LabelGraphics
4487 [
4488 text "0"
4489 outline "#000000"
4490 fill "#FFFFFF"
4491 fontSize 16
4492 fontName "Monospace"
4493 autoSizePolicy "node_width"
4494 anchor "t"
4495 borderDistance 0.0
4496 ]
4497 LabelGraphics
4498 [
4499 text "
4500 "
4501 fontSize 14
4502 fontName "Consolas"
4503 alignment "left"
4504 anchor "tl"
4505 borderDistance 6
4506 ]
4507 ]
4508
4509 node
4510 [
4511 id 5
4512 graphics
4513 [
4514 w 15.400000000000002
4515 h 26
4516 type "rectangle"
4517 fill "#FFFFFF"
4518 fill2 "#FFFFFF"
4519 outline "#000000"
4520 ]
4521 LabelGraphics
4522 [
4523 text "1"
4524 outline "#000000"
4525 fill "#FFFFFF"
4526 fontSize 16
4527 fontName "Monospace"
4528 autoSizePolicy "node_width"
4529 anchor "t"
4530 borderDistance 0.0
4531 ]
4532 LabelGraphics
4533 [
4534 text "
4535 "
4536 fontSize 14
4537 fontName "Consolas"
4538 alignment "left"
4539 anchor "tl"
4540 borderDistance 6
4541 ]
4542 ]
4543
4544 node
4545 [
4546 id 6
4547 graphics
4548 [
4549 w 33.0
4550 h 26
4551 type "rectangle"
4552 fill "#FFFFFF"
4553 fill2 "#FFFFFF"
4554 outline "#000000"
4555 ]
4556 LabelGraphics
4557 [
4558 text ""A""
4559 outline "#000000"
4560 fill "#FFFFFF"
4561 fontSize 16
4562 fontName "Monospace"
4563 autoSizePolicy "node_width"
4564 anchor "t"
4565 borderDistance 0.0
4566 ]
4567 LabelGraphics
4568 [
4569 text "
4570 "
4571 fontSize 14
4572 fontName "Consolas"
4573 alignment "left"
4574 anchor "tl"
4575 borderDistance 6
4576 ]
4577 ]
4578
4579 node
4580 [
4581 id 7
4582 graphics
4583 [
4584 w 33.0
4585 h 26
4586 type "rectangle"
4587 fill "#FFFFFF"
4588 fill2 "#FFFFFF"
4589 outline "#000000"
4590 ]
4591 LabelGraphics
4592 [
4593 text ""B""
4594 outline "#000000"
4595 fill "#FFFFFF"
4596 fontSize 16
4597 fontName "Monospace"
4598 autoSizePolicy "node_width"
4599 anchor "t"
4600 borderDistance 0.0
4601 ]
4602 LabelGraphics
4603 [
4604 text "
4605 "
4606 fontSize 14
4607 fontName "Consolas"
4608 alignment "left"
4609 anchor "tl"
4610 borderDistance 6
4611 ]
4612 ]
4613
4614 node
4615 [
4616 id 8
4617 graphics
4618 [
4619 w 94.60000000000001
4620 h 26
4621 type "rectangle"
4622 fill "#FFFFFF"
4623 fill2 "#FFFFFF"
4624 outline "#000000"
4625 ]
4626 LabelGraphics
4627 [
4628 text ""nsPrefix""
4629 outline "#000000"
4630 fill "#FFFFFF"
4631 fontSize 16
4632 fontName "Monospace"
4633 autoSizePolicy "node_width"
4634 anchor "t"
4635 borderDistance 0.0
4636 ]
4637 LabelGraphics
4638 [
4639 text "
4640 "
4641 fontSize 14
4642 fontName "Consolas"
4643 alignment "left"
4644 anchor "tl"
4645 borderDistance 6
4646 ]
4647 ]
4648
4649 node
4650 [
4651 id 9
4652 graphics
4653 [
4654 w 68.2
4655 h 26
4656 type "rectangle"
4657 fill "#FFFFFF"
4658 fill2 "#FFFFFF"
4659 outline "#000000"
4660 ]
4661 LabelGraphics
4662 [
4663 text ""nsUri""
4664 outline "#000000"
4665 fill "#FFFFFF"
4666 fontSize 16
4667 fontName "Monospace"
4668 autoSizePolicy "node_width"
4669 anchor "t"
4670 borderDistance 0.0
4671 ]
4672 LabelGraphics
4673 [
4674 text "
4675 "
4676 fontSize 14
4677 fontName "Consolas"
4678 alignment "left"
4679 anchor "tl"
4680 borderDistance 6
4681 ]
4682 ]
4683
4684 node
4685 [
4686 id 10
4687 graphics
4688 [
4689 w 121.00000000000001
4690 h 26
4691 type "rectangle"
4692 fill "#FFFFFF"
4693 fill2 "#FFFFFF"
4694 outline "#000000"
4695 ]
4696 LabelGraphics
4697 [
4698 text ""packageName""
4699 outline "#000000"
4700 fill "#FFFFFF"
4701 fontSize 16
4702 fontName "Monospace"
4703 autoSizePolicy "node_width"
4704 anchor "t"
4705 borderDistance 0.0
4706 ]
4707 LabelGraphics
4708 [
4709 text "
4710 "
4711 fontSize 14
4712 fontName "Consolas"
4713 alignment "left"
4714 anchor "tl"
4715 borderDistance 6
4716 ]
4717 ]
4718
4719 node
4720 [
4721 id 11
4722 graphics
4723 [
4724 w 269.5
4725 h 110
4726 type "rectangle"
4727 fill "#FFFFFF"
4728 fill2 "#FFFFFF"
4729 outline "#000000"
4730 ]
4731 LabelGraphics
4732 [
4733 text "null"
4734 outline "#000000"
4735 fill "#FFFFFF"
4736 fontSize 16
4737 fontName "Monospace"
4738 autoSizePolicy "node_width"
4739 anchor "t"
4740 borderDistance 0.0
4741 ]
4742 LabelGraphics
4743 [
4744 text "
4745 EClassifier class
4746 EDataType class
4747 EModelElement class
4748 ENamedElement class
4749 EModelElement class UndefinedPart
4750 ENamedElement class UndefinedPart
4751 "
4752 fontSize 14
4753 fontName "Consolas"
4754 alignment "left"
4755 anchor "tl"
4756 borderDistance 6
4757 ]
4758 ]
4759
4760 node
4761 [
4762 id 12
4763 graphics
4764 [
4765 w 269.5
4766 h 110
4767 type "rectangle"
4768 fill "#FFFFFF"
4769 fill2 "#FFFFFF"
4770 outline "#000000"
4771 ]
4772 LabelGraphics
4773 [
4774 text "null"
4775 outline "#000000"
4776 fill "#FFFFFF"
4777 fontSize 16
4778 fontName "Monospace"
4779 autoSizePolicy "node_width"
4780 anchor "t"
4781 borderDistance 0.0
4782 ]
4783 LabelGraphics
4784 [
4785 text "
4786 EModelElement class
4787 ENamedElement class
4788 EPackage class
4789 EModelElement class UndefinedPart
4790 ENamedElement class UndefinedPart
4791 EPackage class UndefinedPart
4792 "
4793 fontSize 14
4794 fontName "Consolas"
4795 alignment "left"
4796 anchor "tl"
4797 borderDistance 6
4798 ]
4799 ]
4800
4801 node
4802 [
4803 id 13
4804 graphics
4805 [
4806 w 269.5
4807 h 124
4808 type "rectangle"
4809 fill "#FFFFFF"
4810 fill2 "#FFFFFF"
4811 outline "#000000"
4812 ]
4813 LabelGraphics
4814 [
4815 text "null"
4816 outline "#000000"
4817 fill "#FFFFFF"
4818 fontSize 16
4819 fontName "Monospace"
4820 autoSizePolicy "node_width"
4821 anchor "t"
4822 borderDistance 0.0
4823 ]
4824 LabelGraphics
4825 [
4826 text "
4827 EClassifier class
4828 EDataType class
4829 EEnum class
4830 EModelElement class
4831 ENamedElement class
4832 EModelElement class UndefinedPart
4833 ENamedElement class UndefinedPart
4834 "
4835 fontSize 14
4836 fontName "Consolas"
4837 alignment "left"
4838 anchor "tl"
4839 borderDistance 6
4840 ]
4841 ]
4842
4843 node
4844 [
4845 id 14
4846 graphics
4847 [
4848 w 269.5
4849 h 96
4850 type "rectangle"
4851 fill "#FFFFFF"
4852 fill2 "#FFFFFF"
4853 outline "#000000"
4854 ]
4855 LabelGraphics
4856 [
4857 text "null"
4858 outline "#000000"
4859 fill "#FFFFFF"
4860 fontSize 16
4861 fontName "Monospace"
4862 autoSizePolicy "node_width"
4863 anchor "t"
4864 borderDistance 0.0
4865 ]
4866 LabelGraphics
4867 [
4868 text "
4869 EModelElement class
4870 ENamedElement class
4871 ETypeParameter class
4872 EModelElement class UndefinedPart
4873 ENamedElement class UndefinedPart
4874 "
4875 fontSize 14
4876 fontName "Consolas"
4877 alignment "left"
4878 anchor "tl"
4879 borderDistance 6
4880 ]
4881 ]
4882
4883 node
4884 [
4885 id 15
4886 graphics
4887 [
4888 w 269.5
4889 h 68
4890 type "rectangle"
4891 fill "#FFFFFF"
4892 fill2 "#FFFFFF"
4893 outline "#000000"
4894 ]
4895 LabelGraphics
4896 [
4897 text "null"
4898 outline "#000000"
4899 fill "#FFFFFF"
4900 fontSize 16
4901 fontName "Monospace"
4902 autoSizePolicy "node_width"
4903 anchor "t"
4904 borderDistance 0.0
4905 ]
4906 LabelGraphics
4907 [
4908 text "
4909 EAnnotation class
4910 EModelElement class
4911 EModelElement class UndefinedPart
4912 "
4913 fontSize 14
4914 fontName "Consolas"
4915 alignment "left"
4916 anchor "tl"
4917 borderDistance 6
4918 ]
4919 ]
4920
4921 node
4922 [
4923 id 16
4924 graphics
4925 [
4926 w 112.2
4927 h 26
4928 type "rectangle"
4929 fill "#FFFFFF"
4930 fill2 "#FFFFFF"
4931 outline "#000000"
4932 ]
4933 LabelGraphics
4934 [
4935 text "New Integers"
4936 outline "#000000"
4937 fill "#FFFFFF"
4938 fontSize 16
4939 fontName "Monospace"
4940 autoSizePolicy "node_width"
4941 anchor "t"
4942 borderDistance 0.0
4943 ]
4944 LabelGraphics
4945 [
4946 text "
4947 "
4948 fontSize 14
4949 fontName "Consolas"
4950 alignment "left"
4951 anchor "tl"
4952 borderDistance 6
4953 ]
4954 ]
4955
4956 node
4957 [
4958 id 17
4959 graphics
4960 [
4961 w 85.80000000000001
4962 h 26
4963 type "rectangle"
4964 fill "#FFFFFF"
4965 fill2 "#FFFFFF"
4966 outline "#000000"
4967 ]
4968 LabelGraphics
4969 [
4970 text "New Reals"
4971 outline "#000000"
4972 fill "#FFFFFF"
4973 fontSize 16
4974 fontName "Monospace"
4975 autoSizePolicy "node_width"
4976 anchor "t"
4977 borderDistance 0.0
4978 ]
4979 LabelGraphics
4980 [
4981 text "
4982 "
4983 fontSize 14
4984 fontName "Consolas"
4985 alignment "left"
4986 anchor "tl"
4987 borderDistance 6
4988 ]
4989 ]
4990
4991 node
4992 [
4993 id 18
4994 graphics
4995 [
4996 w 103.4
4997 h 26
4998 type "rectangle"
4999 fill "#FFFFFF"
5000 fill2 "#FFFFFF"
5001 outline "#000000"
5002 ]
5003 LabelGraphics
5004 [
5005 text "New Strings"
5006 outline "#000000"
5007 fill "#FFFFFF"
5008 fontSize 16
5009 fontName "Monospace"
5010 autoSizePolicy "node_width"
5011 anchor "t"
5012 borderDistance 0.0
5013 ]
5014 LabelGraphics
5015 [
5016 text "
5017 "
5018 fontSize 14
5019 fontName "Consolas"
5020 alignment "left"
5021 anchor "tl"
5022 borderDistance 6
5023 ]
5024 ]
5025
5026 node
5027 [
5028 id 19
5029 graphics
5030 [
5031 w 103.4
5032 h 26
5033 type "rectangle"
5034 fill "#FFFFFF"
5035 fill2 "#FFFFFF"
5036 outline "#000000"
5037 ]
5038 LabelGraphics
5039 [
5040 text "New Objects"
5041 outline "#000000"
5042 fill "#FFFFFF"
5043 fontSize 16
5044 fontName "Monospace"
5045 autoSizePolicy "node_width"
5046 anchor "t"
5047 borderDistance 0.0
5048 ]
5049 LabelGraphics
5050 [
5051 text "
5052 "
5053 fontSize 14
5054 fontName "Consolas"
5055 alignment "left"
5056 anchor "tl"
5057 borderDistance 6
5058 ]
5059 ]
5060 edge
5061 [
5062 source 15
5063 target 0
5064 graphics
5065 [
5066 fill "#000000"
5067 targetArrow "standard"
5068 ]
5069 LabelGraphics
5070 [
5071 text "eModelElement reference EAnnotation"
5072 fontSize 14
5073 fontName "Consolas"
5074 configuration "AutoFlippingLabel"
5075 model "six_pos"
5076 position "thead"
5077 ]
5078 ]
5079 edge
5080 [
5081 source 11
5082 target 0
5083 graphics
5084 [
5085 fill "#000000"
5086 targetArrow "standard"
5087 ]
5088 LabelGraphics
5089 [
5090 text "ePackage reference EClassifier"
5091 fontSize 14
5092 fontName "Consolas"
5093 configuration "AutoFlippingLabel"
5094 model "six_pos"
5095 position "thead"
5096 ]
5097 ]
5098 edge
5099 [
5100 source 13
5101 target 0
5102 graphics
5103 [
5104 fill "#000000"
5105 targetArrow "standard"
5106 ]
5107 LabelGraphics
5108 [
5109 text "ePackage reference EClassifier"
5110 fontSize 14
5111 fontName "Consolas"
5112 configuration "AutoFlippingLabel"
5113 model "six_pos"
5114 position "thead"
5115 ]
5116 ]
5117 edge
5118 [
5119 source 13
5120 target 14
5121 graphics
5122 [
5123 fill "#000000"
5124 width 3
5125 targetArrow "standard"
5126 ]
5127 LabelGraphics
5128 [
5129 text "eTypeParameters reference EClassifier"
5130 fontSize 14
5131 fontName "Consolas"
5132 configuration "AutoFlippingLabel"
5133 model "six_pos"
5134 position "thead"
5135 ]
5136 ]
5137 edge
5138 [
5139 source 0
5140 target 15
5141 graphics
5142 [
5143 fill "#000000"
5144 width 3
5145 targetArrow "standard"
5146 ]
5147 LabelGraphics
5148 [
5149 text "eAnnotations reference EModelElement"
5150 fontSize 14
5151 fontName "Consolas"
5152 configuration "AutoFlippingLabel"
5153 model "six_pos"
5154 position "thead"
5155 ]
5156 ]
5157 edge
5158 [
5159 source 0
5160 target 11
5161 graphics
5162 [
5163 fill "#000000"
5164 width 3
5165 targetArrow "standard"
5166 ]
5167 LabelGraphics
5168 [
5169 text "eClassifiers reference EPackage"
5170 fontSize 14
5171 fontName "Consolas"
5172 configuration "AutoFlippingLabel"
5173 model "six_pos"
5174 position "thead"
5175 ]
5176 ]
5177 edge
5178 [
5179 source 0
5180 target 13
5181 graphics
5182 [
5183 fill "#000000"
5184 width 3
5185 targetArrow "standard"
5186 ]
5187 LabelGraphics
5188 [
5189 text "eClassifiers reference EPackage"
5190 fontSize 14
5191 fontName "Consolas"
5192 configuration "AutoFlippingLabel"
5193 model "six_pos"
5194 position "thead"
5195 ]
5196 ]
5197 edge
5198 [
5199 source 0
5200 target 12
5201 graphics
5202 [
5203 fill "#000000"
5204 width 3
5205 targetArrow "standard"
5206 ]
5207 LabelGraphics
5208 [
5209 text "eSubpackages reference EPackage"
5210 fontSize 14
5211 fontName "Consolas"
5212 configuration "AutoFlippingLabel"
5213 model "six_pos"
5214 position "thead"
5215 ]
5216 ]
5217 edge
5218 [
5219 source 12
5220 target 0
5221 graphics
5222 [
5223 fill "#000000"
5224 targetArrow "standard"
5225 ]
5226 LabelGraphics
5227 [
5228 text "eSuperPackage reference EPackage"
5229 fontSize 14
5230 fontName "Consolas"
5231 configuration "AutoFlippingLabel"
5232 model "six_pos"
5233 position "thead"
5234 ]
5235 ]
5236 edge
5237 [
5238 source 15
5239 target 6
5240 graphics
5241 [
5242 fill "#000000"
5243 targetArrow "standard"
5244 ]
5245 LabelGraphics
5246 [
5247 text "source attribute EAnnotation"
5248 fontSize 14
5249 fontName "Consolas"
5250 configuration "AutoFlippingLabel"
5251 model "six_pos"
5252 position "thead"
5253 ]
5254 ]
5255 edge
5256 [
5257 source 11
5258 target 6
5259 graphics
5260 [
5261 fill "#000000"
5262 targetArrow "standard"
5263 ]
5264 LabelGraphics
5265 [
5266 text "instanceClassName attribute EClassifier"
5267 fontSize 14
5268 fontName "Consolas"
5269 configuration "AutoFlippingLabel"
5270 model "six_pos"
5271 position "thead"
5272 ]
5273 ]
5274 edge
5275 [
5276 source 13
5277 target 7
5278 graphics
5279 [
5280 fill "#000000"
5281 targetArrow "standard"
5282 ]
5283 LabelGraphics
5284 [
5285 text "instanceClassName attribute EClassifier"
5286 fontSize 14
5287 fontName "Consolas"
5288 configuration "AutoFlippingLabel"
5289 model "six_pos"
5290 position "thead"
5291 ]
5292 ]
5293 edge
5294 [
5295 source 11
5296 target 1
5297 graphics
5298 [
5299 fill "#000000"
5300 targetArrow "standard"
5301 ]
5302 LabelGraphics
5303 [
5304 text "serializable attribute EDataType"
5305 fontSize 14
5306 fontName "Consolas"
5307 configuration "AutoFlippingLabel"
5308 model "six_pos"
5309 position "thead"
5310 ]
5311 ]
5312 edge
5313 [
5314 source 0
5315 target 10
5316 graphics
5317 [
5318 fill "#000000"
5319 targetArrow "standard"
5320 ]
5321 LabelGraphics
5322 [
5323 text "name attribute ENamedElement"
5324 fontSize 14
5325 fontName "Consolas"
5326 configuration "AutoFlippingLabel"
5327 model "six_pos"
5328 position "thead"
5329 ]
5330 ]
5331 edge
5332 [
5333 source 12
5334 target 6
5335 graphics
5336 [
5337 fill "#000000"
5338 targetArrow "standard"
5339 ]
5340 LabelGraphics
5341 [
5342 text "name attribute ENamedElement"
5343 fontSize 14
5344 fontName "Consolas"
5345 configuration "AutoFlippingLabel"
5346 model "six_pos"
5347 position "thead"
5348 ]
5349 ]
5350 edge
5351 [
5352 source 0
5353 target 9
5354 graphics
5355 [
5356 fill "#000000"
5357 targetArrow "standard"
5358 ]
5359 LabelGraphics
5360 [
5361 text "nsURI attribute EPackage"
5362 fontSize 14
5363 fontName "Consolas"
5364 configuration "AutoFlippingLabel"
5365 model "six_pos"
5366 position "thead"
5367 ]
5368 ]
5369 edge
5370 [
5371 source 12
5372 target 10
5373 graphics
5374 [
5375 fill "#000000"
5376 targetArrow "standard"
5377 ]
5378 LabelGraphics
5379 [
5380 text "nsURI attribute EPackage"
5381 fontSize 14
5382 fontName "Consolas"
5383 configuration "AutoFlippingLabel"
5384 model "six_pos"
5385 position "thead"
5386 ]
5387 ]
5388 edge
5389 [
5390 source 0
5391 target 8
5392 graphics
5393 [
5394 fill "#000000"
5395 targetArrow "standard"
5396 ]
5397 LabelGraphics
5398 [
5399 text "nsPrefix attribute EPackage"
5400 fontSize 14
5401 fontName "Consolas"
5402 configuration "AutoFlippingLabel"
5403 model "six_pos"
5404 position "thead"
5405 ]
5406 ]
5407 edge
5408 [
5409 source 12
5410 target 8
5411 graphics
5412 [
5413 fill "#000000"
5414 targetArrow "standard"
5415 ]
5416 LabelGraphics
5417 [
5418 text "nsPrefix attribute EPackage"
5419 fontSize 14
5420 fontName "Consolas"
5421 configuration "AutoFlippingLabel"
5422 model "six_pos"
5423 position "thead"
5424 ]
5425 ]
5426]
5427graph
5428[
5429 node
5430 [
5431 id 0
5432 graphics
5433 [
5434 w 254.10000000000002
5435 h 110
5436 type "rectangle"
5437 fill "#FFFFFF"
5438 fill2 "#FFFFFF"
5439 outline "#000000"
5440 ]
5441 LabelGraphics
5442 [
5443 text "o 1"
5444 outline "#000000"
5445 fill "#FFFFFF"
5446 fontSize 16
5447 fontName "Monospace"
5448 autoSizePolicy "node_width"
5449 anchor "t"
5450 borderDistance 0.0
5451 ]
5452 LabelGraphics
5453 [
5454 text "
5455 EModelElement class DefinedPart
5456 ENamedElement class DefinedPart
5457 EPackage class DefinedPart
5458 EModelElement class
5459 ENamedElement class
5460 EPackage class
5461 "
5462 fontSize 14
5463 fontName "Consolas"
5464 alignment "left"
5465 anchor "tl"
5466 borderDistance 6
5467 ]
5468 ]
5469
5470 node
5471 [
5472 id 1
5473 graphics
5474 [
5475 w 41.800000000000004
5476 h 26
5477 type "rectangle"
5478 fill "#FFFFFF"
5479 fill2 "#FFFFFF"
5480 outline "#000000"
5481 ]
5482 LabelGraphics
5483 [
5484 text "true"
5485 outline "#000000"
5486 fill "#FFFFFF"
5487 fontSize 16
5488 fontName "Monospace"
5489 autoSizePolicy "node_width"
5490 anchor "t"
5491 borderDistance 0.0
5492 ]
5493 LabelGraphics
5494 [
5495 text "
5496 "
5497 fontSize 14
5498 fontName "Consolas"
5499 alignment "left"
5500 anchor "tl"
5501 borderDistance 6
5502 ]
5503 ]
5504
5505 node
5506 [
5507 id 2
5508 graphics
5509 [
5510 w 50.6
5511 h 26
5512 type "rectangle"
5513 fill "#FFFFFF"
5514 fill2 "#FFFFFF"
5515 outline "#000000"
5516 ]
5517 LabelGraphics
5518 [
5519 text "false"
5520 outline "#000000"
5521 fill "#FFFFFF"
5522 fontSize 16
5523 fontName "Monospace"
5524 autoSizePolicy "node_width"
5525 anchor "t"
5526 borderDistance 0.0
5527 ]
5528 LabelGraphics
5529 [
5530 text "
5531 "
5532 fontSize 14
5533 fontName "Consolas"
5534 alignment "left"
5535 anchor "tl"
5536 borderDistance 6
5537 ]
5538 ]
5539
5540 node
5541 [
5542 id 3
5543 graphics
5544 [
5545 w 24.200000000000003
5546 h 26
5547 type "rectangle"
5548 fill "#FFFFFF"
5549 fill2 "#FFFFFF"
5550 outline "#000000"
5551 ]
5552 LabelGraphics
5553 [
5554 text "-1"
5555 outline "#000000"
5556 fill "#FFFFFF"
5557 fontSize 16
5558 fontName "Monospace"
5559 autoSizePolicy "node_width"
5560 anchor "t"
5561 borderDistance 0.0
5562 ]
5563 LabelGraphics
5564 [
5565 text "
5566 "
5567 fontSize 14
5568 fontName "Consolas"
5569 alignment "left"
5570 anchor "tl"
5571 borderDistance 6
5572 ]
5573 ]
5574
5575 node
5576 [
5577 id 4
5578 graphics
5579 [
5580 w 15.400000000000002
5581 h 26
5582 type "rectangle"
5583 fill "#FFFFFF"
5584 fill2 "#FFFFFF"
5585 outline "#000000"
5586 ]
5587 LabelGraphics
5588 [
5589 text "0"
5590 outline "#000000"
5591 fill "#FFFFFF"
5592 fontSize 16
5593 fontName "Monospace"
5594 autoSizePolicy "node_width"
5595 anchor "t"
5596 borderDistance 0.0
5597 ]
5598 LabelGraphics
5599 [
5600 text "
5601 "
5602 fontSize 14
5603 fontName "Consolas"
5604 alignment "left"
5605 anchor "tl"
5606 borderDistance 6
5607 ]
5608 ]
5609
5610 node
5611 [
5612 id 5
5613 graphics
5614 [
5615 w 15.400000000000002
5616 h 26
5617 type "rectangle"
5618 fill "#FFFFFF"
5619 fill2 "#FFFFFF"
5620 outline "#000000"
5621 ]
5622 LabelGraphics
5623 [
5624 text "1"
5625 outline "#000000"
5626 fill "#FFFFFF"
5627 fontSize 16
5628 fontName "Monospace"
5629 autoSizePolicy "node_width"
5630 anchor "t"
5631 borderDistance 0.0
5632 ]
5633 LabelGraphics
5634 [
5635 text "
5636 "
5637 fontSize 14
5638 fontName "Consolas"
5639 alignment "left"
5640 anchor "tl"
5641 borderDistance 6
5642 ]
5643 ]
5644
5645 node
5646 [
5647 id 6
5648 graphics
5649 [
5650 w 33.0
5651 h 26
5652 type "rectangle"
5653 fill "#FFFFFF"
5654 fill2 "#FFFFFF"
5655 outline "#000000"
5656 ]
5657 LabelGraphics
5658 [
5659 text ""A""
5660 outline "#000000"
5661 fill "#FFFFFF"
5662 fontSize 16
5663 fontName "Monospace"
5664 autoSizePolicy "node_width"
5665 anchor "t"
5666 borderDistance 0.0
5667 ]
5668 LabelGraphics
5669 [
5670 text "
5671 "
5672 fontSize 14
5673 fontName "Consolas"
5674 alignment "left"
5675 anchor "tl"
5676 borderDistance 6
5677 ]
5678 ]
5679
5680 node
5681 [
5682 id 7
5683 graphics
5684 [
5685 w 33.0
5686 h 26
5687 type "rectangle"
5688 fill "#FFFFFF"
5689 fill2 "#FFFFFF"
5690 outline "#000000"
5691 ]
5692 LabelGraphics
5693 [
5694 text ""B""
5695 outline "#000000"
5696 fill "#FFFFFF"
5697 fontSize 16
5698 fontName "Monospace"
5699 autoSizePolicy "node_width"
5700 anchor "t"
5701 borderDistance 0.0
5702 ]
5703 LabelGraphics
5704 [
5705 text "
5706 "
5707 fontSize 14
5708 fontName "Consolas"
5709 alignment "left"
5710 anchor "tl"
5711 borderDistance 6
5712 ]
5713 ]
5714
5715 node
5716 [
5717 id 8
5718 graphics
5719 [
5720 w 94.60000000000001
5721 h 26
5722 type "rectangle"
5723 fill "#FFFFFF"
5724 fill2 "#FFFFFF"
5725 outline "#000000"
5726 ]
5727 LabelGraphics
5728 [
5729 text ""nsPrefix""
5730 outline "#000000"
5731 fill "#FFFFFF"
5732 fontSize 16
5733 fontName "Monospace"
5734 autoSizePolicy "node_width"
5735 anchor "t"
5736 borderDistance 0.0
5737 ]
5738 LabelGraphics
5739 [
5740 text "
5741 "
5742 fontSize 14
5743 fontName "Consolas"
5744 alignment "left"
5745 anchor "tl"
5746 borderDistance 6
5747 ]
5748 ]
5749
5750 node
5751 [
5752 id 9
5753 graphics
5754 [
5755 w 68.2
5756 h 26
5757 type "rectangle"
5758 fill "#FFFFFF"
5759 fill2 "#FFFFFF"
5760 outline "#000000"
5761 ]
5762 LabelGraphics
5763 [
5764 text ""nsUri""
5765 outline "#000000"
5766 fill "#FFFFFF"
5767 fontSize 16
5768 fontName "Monospace"
5769 autoSizePolicy "node_width"
5770 anchor "t"
5771 borderDistance 0.0
5772 ]
5773 LabelGraphics
5774 [
5775 text "
5776 "
5777 fontSize 14
5778 fontName "Consolas"
5779 alignment "left"
5780 anchor "tl"
5781 borderDistance 6
5782 ]
5783 ]
5784
5785 node
5786 [
5787 id 10
5788 graphics
5789 [
5790 w 121.00000000000001
5791 h 26
5792 type "rectangle"
5793 fill "#FFFFFF"
5794 fill2 "#FFFFFF"
5795 outline "#000000"
5796 ]
5797 LabelGraphics
5798 [
5799 text ""packageName""
5800 outline "#000000"
5801 fill "#FFFFFF"
5802 fontSize 16
5803 fontName "Monospace"
5804 autoSizePolicy "node_width"
5805 anchor "t"
5806 borderDistance 0.0
5807 ]
5808 LabelGraphics
5809 [
5810 text "
5811 "
5812 fontSize 14
5813 fontName "Consolas"
5814 alignment "left"
5815 anchor "tl"
5816 borderDistance 6
5817 ]
5818 ]
5819
5820 node
5821 [
5822 id 11
5823 graphics
5824 [
5825 w 269.5
5826 h 110
5827 type "rectangle"
5828 fill "#FFFFFF"
5829 fill2 "#FFFFFF"
5830 outline "#000000"
5831 ]
5832 LabelGraphics
5833 [
5834 text "null"
5835 outline "#000000"
5836 fill "#FFFFFF"
5837 fontSize 16
5838 fontName "Monospace"
5839 autoSizePolicy "node_width"
5840 anchor "t"
5841 borderDistance 0.0
5842 ]
5843 LabelGraphics
5844 [
5845 text "
5846 EClass class
5847 EClassifier class
5848 EModelElement class
5849 ENamedElement class
5850 EModelElement class UndefinedPart
5851 ENamedElement class UndefinedPart
5852 "
5853 fontSize 14
5854 fontName "Consolas"
5855 alignment "left"
5856 anchor "tl"
5857 borderDistance 6
5858 ]
5859 ]
5860
5861 node
5862 [
5863 id 12
5864 graphics
5865 [
5866 w 269.5
5867 h 110
5868 type "rectangle"
5869 fill "#FFFFFF"
5870 fill2 "#FFFFFF"
5871 outline "#000000"
5872 ]
5873 LabelGraphics
5874 [
5875 text "null"
5876 outline "#000000"
5877 fill "#FFFFFF"
5878 fontSize 16
5879 fontName "Monospace"
5880 autoSizePolicy "node_width"
5881 anchor "t"
5882 borderDistance 0.0
5883 ]
5884 LabelGraphics
5885 [
5886 text "
5887 EModelElement class
5888 ENamedElement class
5889 EPackage class
5890 EModelElement class UndefinedPart
5891 ENamedElement class UndefinedPart
5892 EPackage class UndefinedPart
5893 "
5894 fontSize 14
5895 fontName "Consolas"
5896 alignment "left"
5897 anchor "tl"
5898 borderDistance 6
5899 ]
5900 ]
5901
5902 node
5903 [
5904 id 13
5905 graphics
5906 [
5907 w 269.5
5908 h 110
5909 type "rectangle"
5910 fill "#FFFFFF"
5911 fill2 "#FFFFFF"
5912 outline "#000000"
5913 ]
5914 LabelGraphics
5915 [
5916 text "null"
5917 outline "#000000"
5918 fill "#FFFFFF"
5919 fontSize 16
5920 fontName "Monospace"
5921 autoSizePolicy "node_width"
5922 anchor "t"
5923 borderDistance 0.0
5924 ]
5925 LabelGraphics
5926 [
5927 text "
5928 EModelElement class
5929 ENamedElement class
5930 EPackage class
5931 EModelElement class UndefinedPart
5932 ENamedElement class UndefinedPart
5933 EPackage class UndefinedPart
5934 "
5935 fontSize 14
5936 fontName "Consolas"
5937 alignment "left"
5938 anchor "tl"
5939 borderDistance 6
5940 ]
5941 ]
5942
5943 node
5944 [
5945 id 14
5946 graphics
5947 [
5948 w 269.5
5949 h 96
5950 type "rectangle"
5951 fill "#FFFFFF"
5952 fill2 "#FFFFFF"
5953 outline "#000000"
5954 ]
5955 LabelGraphics
5956 [
5957 text "null"
5958 outline "#000000"
5959 fill "#FFFFFF"
5960 fontSize 16
5961 fontName "Monospace"
5962 autoSizePolicy "node_width"
5963 anchor "t"
5964 borderDistance 0.0
5965 ]
5966 LabelGraphics
5967 [
5968 text "
5969 EModelElement class
5970 ENamedElement class
5971 ETypeParameter class
5972 EModelElement class UndefinedPart
5973 ENamedElement class UndefinedPart
5974 "
5975 fontSize 14
5976 fontName "Consolas"
5977 alignment "left"
5978 anchor "tl"
5979 borderDistance 6
5980 ]
5981 ]
5982
5983 node
5984 [
5985 id 15
5986 graphics
5987 [
5988 w 269.5
5989 h 110
5990 type "rectangle"
5991 fill "#FFFFFF"
5992 fill2 "#FFFFFF"
5993 outline "#000000"
5994 ]
5995 LabelGraphics
5996 [
5997 text "null"
5998 outline "#000000"
5999 fill "#FFFFFF"
6000 fontSize 16
6001 fontName "Monospace"
6002 autoSizePolicy "node_width"
6003 anchor "t"
6004 borderDistance 0.0
6005 ]
6006 LabelGraphics
6007 [
6008 text "
6009 EClass class
6010 EClassifier class
6011 EModelElement class
6012 ENamedElement class
6013 EModelElement class UndefinedPart
6014 ENamedElement class UndefinedPart
6015 "
6016 fontSize 14
6017 fontName "Consolas"
6018 alignment "left"
6019 anchor "tl"
6020 borderDistance 6
6021 ]
6022 ]
6023
6024 node
6025 [
6026 id 16
6027 graphics
6028 [
6029 w 112.2
6030 h 26
6031 type "rectangle"
6032 fill "#FFFFFF"
6033 fill2 "#FFFFFF"
6034 outline "#000000"
6035 ]
6036 LabelGraphics
6037 [
6038 text "New Integers"
6039 outline "#000000"
6040 fill "#FFFFFF"
6041 fontSize 16
6042 fontName "Monospace"
6043 autoSizePolicy "node_width"
6044 anchor "t"
6045 borderDistance 0.0
6046 ]
6047 LabelGraphics
6048 [
6049 text "
6050 "
6051 fontSize 14
6052 fontName "Consolas"
6053 alignment "left"
6054 anchor "tl"
6055 borderDistance 6
6056 ]
6057 ]
6058
6059 node
6060 [
6061 id 17
6062 graphics
6063 [
6064 w 85.80000000000001
6065 h 26
6066 type "rectangle"
6067 fill "#FFFFFF"
6068 fill2 "#FFFFFF"
6069 outline "#000000"
6070 ]
6071 LabelGraphics
6072 [
6073 text "New Reals"
6074 outline "#000000"
6075 fill "#FFFFFF"
6076 fontSize 16
6077 fontName "Monospace"
6078 autoSizePolicy "node_width"
6079 anchor "t"
6080 borderDistance 0.0
6081 ]
6082 LabelGraphics
6083 [
6084 text "
6085 "
6086 fontSize 14
6087 fontName "Consolas"
6088 alignment "left"
6089 anchor "tl"
6090 borderDistance 6
6091 ]
6092 ]
6093
6094 node
6095 [
6096 id 18
6097 graphics
6098 [
6099 w 103.4
6100 h 26
6101 type "rectangle"
6102 fill "#FFFFFF"
6103 fill2 "#FFFFFF"
6104 outline "#000000"
6105 ]
6106 LabelGraphics
6107 [
6108 text "New Strings"
6109 outline "#000000"
6110 fill "#FFFFFF"
6111 fontSize 16
6112 fontName "Monospace"
6113 autoSizePolicy "node_width"
6114 anchor "t"
6115 borderDistance 0.0
6116 ]
6117 LabelGraphics
6118 [
6119 text "
6120 "
6121 fontSize 14
6122 fontName "Consolas"
6123 alignment "left"
6124 anchor "tl"
6125 borderDistance 6
6126 ]
6127 ]
6128
6129 node
6130 [
6131 id 19
6132 graphics
6133 [
6134 w 103.4
6135 h 26
6136 type "rectangle"
6137 fill "#FFFFFF"
6138 fill2 "#FFFFFF"
6139 outline "#000000"
6140 ]
6141 LabelGraphics
6142 [
6143 text "New Objects"
6144 outline "#000000"
6145 fill "#FFFFFF"
6146 fontSize 16
6147 fontName "Monospace"
6148 autoSizePolicy "node_width"
6149 anchor "t"
6150 borderDistance 0.0
6151 ]
6152 LabelGraphics
6153 [
6154 text "
6155 "
6156 fontSize 14
6157 fontName "Consolas"
6158 alignment "left"
6159 anchor "tl"
6160 borderDistance 6
6161 ]
6162 ]
6163 edge
6164 [
6165 source 11
6166 target 0
6167 graphics
6168 [
6169 fill "#000000"
6170 targetArrow "standard"
6171 ]
6172 LabelGraphics
6173 [
6174 text "ePackage reference EClassifier"
6175 fontSize 14
6176 fontName "Consolas"
6177 configuration "AutoFlippingLabel"
6178 model "six_pos"
6179 position "thead"
6180 ]
6181 ]
6182 edge
6183 [
6184 source 15
6185 target 13
6186 graphics
6187 [
6188 fill "#000000"
6189 targetArrow "standard"
6190 ]
6191 LabelGraphics
6192 [
6193 text "ePackage reference EClassifier"
6194 fontSize 14
6195 fontName "Consolas"
6196 configuration "AutoFlippingLabel"
6197 model "six_pos"
6198 position "thead"
6199 ]
6200 ]
6201 edge
6202 [
6203 source 11
6204 target 14
6205 graphics
6206 [
6207 fill "#000000"
6208 width 3
6209 targetArrow "standard"
6210 ]
6211 LabelGraphics
6212 [
6213 text "eTypeParameters reference EClassifier"
6214 fontSize 14
6215 fontName "Consolas"
6216 configuration "AutoFlippingLabel"
6217 model "six_pos"
6218 position "thead"
6219 ]
6220 ]
6221 edge
6222 [
6223 source 0
6224 target 11
6225 graphics
6226 [
6227 fill "#000000"
6228 width 3
6229 targetArrow "standard"
6230 ]
6231 LabelGraphics
6232 [
6233 text "eClassifiers reference EPackage"
6234 fontSize 14
6235 fontName "Consolas"
6236 configuration "AutoFlippingLabel"
6237 model "six_pos"
6238 position "thead"
6239 ]
6240 ]
6241 edge
6242 [
6243 source 13
6244 target 15
6245 graphics
6246 [
6247 fill "#000000"
6248 width 3
6249 targetArrow "standard"
6250 ]
6251 LabelGraphics
6252 [
6253 text "eClassifiers reference EPackage"
6254 fontSize 14
6255 fontName "Consolas"
6256 configuration "AutoFlippingLabel"
6257 model "six_pos"
6258 position "thead"
6259 ]
6260 ]
6261 edge
6262 [
6263 source 0
6264 target 12
6265 graphics
6266 [
6267 fill "#000000"
6268 width 3
6269 targetArrow "standard"
6270 ]
6271 LabelGraphics
6272 [
6273 text "eSubpackages reference EPackage"
6274 fontSize 14
6275 fontName "Consolas"
6276 configuration "AutoFlippingLabel"
6277 model "six_pos"
6278 position "thead"
6279 ]
6280 ]
6281 edge
6282 [
6283 source 12
6284 target 13
6285 graphics
6286 [
6287 fill "#000000"
6288 width 3
6289 targetArrow "standard"
6290 ]
6291 LabelGraphics
6292 [
6293 text "eSubpackages reference EPackage"
6294 fontSize 14
6295 fontName "Consolas"
6296 configuration "AutoFlippingLabel"
6297 model "six_pos"
6298 position "thead"
6299 ]
6300 ]
6301 edge
6302 [
6303 source 12
6304 target 0
6305 graphics
6306 [
6307 fill "#000000"
6308 targetArrow "standard"
6309 ]
6310 LabelGraphics
6311 [
6312 text "eSuperPackage reference EPackage"
6313 fontSize 14
6314 fontName "Consolas"
6315 configuration "AutoFlippingLabel"
6316 model "six_pos"
6317 position "thead"
6318 ]
6319 ]
6320 edge
6321 [
6322 source 13
6323 target 12
6324 graphics
6325 [
6326 fill "#000000"
6327 targetArrow "standard"
6328 ]
6329 LabelGraphics
6330 [
6331 text "eSuperPackage reference EPackage"
6332 fontSize 14
6333 fontName "Consolas"
6334 configuration "AutoFlippingLabel"
6335 model "six_pos"
6336 position "thead"
6337 ]
6338 ]
6339 edge
6340 [
6341 source 11
6342 target 1
6343 graphics
6344 [
6345 fill "#000000"
6346 targetArrow "standard"
6347 ]
6348 LabelGraphics
6349 [
6350 text "abstract attribute EClass"
6351 fontSize 14
6352 fontName "Consolas"
6353 configuration "AutoFlippingLabel"
6354 model "six_pos"
6355 position "thead"
6356 ]
6357 ]
6358 edge
6359 [
6360 source 11
6361 target 2
6362 graphics
6363 [
6364 fill "#000000"
6365 targetArrow "standard"
6366 ]
6367 LabelGraphics
6368 [
6369 text "interface attribute EClass"
6370 fontSize 14
6371 fontName "Consolas"
6372 configuration "AutoFlippingLabel"
6373 model "six_pos"
6374 position "thead"
6375 ]
6376 ]
6377 edge
6378 [
6379 source 11
6380 target 8
6381 graphics
6382 [
6383 fill "#000000"
6384 targetArrow "standard"
6385 ]
6386 LabelGraphics
6387 [
6388 text "instanceTypeName attribute EClassifier"
6389 fontSize 14
6390 fontName "Consolas"
6391 configuration "AutoFlippingLabel"
6392 model "six_pos"
6393 position "thead"
6394 ]
6395 ]
6396 edge
6397 [
6398 source 15
6399 target 6
6400 graphics
6401 [
6402 fill "#000000"
6403 targetArrow "standard"
6404 ]
6405 LabelGraphics
6406 [
6407 text "instanceTypeName attribute EClassifier"
6408 fontSize 14
6409 fontName "Consolas"
6410 configuration "AutoFlippingLabel"
6411 model "six_pos"
6412 position "thead"
6413 ]
6414 ]
6415 edge
6416 [
6417 source 0
6418 target 10
6419 graphics
6420 [
6421 fill "#000000"
6422 targetArrow "standard"
6423 ]
6424 LabelGraphics
6425 [
6426 text "name attribute ENamedElement"
6427 fontSize 14
6428 fontName "Consolas"
6429 configuration "AutoFlippingLabel"
6430 model "six_pos"
6431 position "thead"
6432 ]
6433 ]
6434 edge
6435 [
6436 source 13
6437 target 8
6438 graphics
6439 [
6440 fill "#000000"
6441 targetArrow "standard"
6442 ]
6443 LabelGraphics
6444 [
6445 text "name attribute ENamedElement"
6446 fontSize 14
6447 fontName "Consolas"
6448 configuration "AutoFlippingLabel"
6449 model "six_pos"
6450 position "thead"
6451 ]
6452 ]
6453 edge
6454 [
6455 source 11
6456 target 6
6457 graphics
6458 [
6459 fill "#000000"
6460 targetArrow "standard"
6461 ]
6462 LabelGraphics
6463 [
6464 text "name attribute ENamedElement"
6465 fontSize 14
6466 fontName "Consolas"
6467 configuration "AutoFlippingLabel"
6468 model "six_pos"
6469 position "thead"
6470 ]
6471 ]
6472 edge
6473 [
6474 source 0
6475 target 9
6476 graphics
6477 [
6478 fill "#000000"
6479 targetArrow "standard"
6480 ]
6481 LabelGraphics
6482 [
6483 text "nsURI attribute EPackage"
6484 fontSize 14
6485 fontName "Consolas"
6486 configuration "AutoFlippingLabel"
6487 model "six_pos"
6488 position "thead"
6489 ]
6490 ]
6491 edge
6492 [
6493 source 13
6494 target 7
6495 graphics
6496 [
6497 fill "#000000"
6498 targetArrow "standard"
6499 ]
6500 LabelGraphics
6501 [
6502 text "nsURI attribute EPackage"
6503 fontSize 14
6504 fontName "Consolas"
6505 configuration "AutoFlippingLabel"
6506 model "six_pos"
6507 position "thead"
6508 ]
6509 ]
6510 edge
6511 [
6512 source 12
6513 target 7
6514 graphics
6515 [
6516 fill "#000000"
6517 targetArrow "standard"
6518 ]
6519 LabelGraphics
6520 [
6521 text "nsURI attribute EPackage"
6522 fontSize 14
6523 fontName "Consolas"
6524 configuration "AutoFlippingLabel"
6525 model "six_pos"
6526 position "thead"
6527 ]
6528 ]
6529 edge
6530 [
6531 source 0
6532 target 8
6533 graphics
6534 [
6535 fill "#000000"
6536 targetArrow "standard"
6537 ]
6538 LabelGraphics
6539 [
6540 text "nsPrefix attribute EPackage"
6541 fontSize 14
6542 fontName "Consolas"
6543 configuration "AutoFlippingLabel"
6544 model "six_pos"
6545 position "thead"
6546 ]
6547 ]
6548]
6549graph
6550[
6551 node
6552 [
6553 id 0
6554 graphics
6555 [
6556 w 254.10000000000002
6557 h 110
6558 type "rectangle"
6559 fill "#FFFFFF"
6560 fill2 "#FFFFFF"
6561 outline "#000000"
6562 ]
6563 LabelGraphics
6564 [
6565 text "o 1"
6566 outline "#000000"
6567 fill "#FFFFFF"
6568 fontSize 16
6569 fontName "Monospace"
6570 autoSizePolicy "node_width"
6571 anchor "t"
6572 borderDistance 0.0
6573 ]
6574 LabelGraphics
6575 [
6576 text "
6577 EModelElement class DefinedPart
6578 ENamedElement class DefinedPart
6579 EPackage class DefinedPart
6580 EModelElement class
6581 ENamedElement class
6582 EPackage class
6583 "
6584 fontSize 14
6585 fontName "Consolas"
6586 alignment "left"
6587 anchor "tl"
6588 borderDistance 6
6589 ]
6590 ]
6591
6592 node
6593 [
6594 id 1
6595 graphics
6596 [
6597 w 41.800000000000004
6598 h 26
6599 type "rectangle"
6600 fill "#FFFFFF"
6601 fill2 "#FFFFFF"
6602 outline "#000000"
6603 ]
6604 LabelGraphics
6605 [
6606 text "true"
6607 outline "#000000"
6608 fill "#FFFFFF"
6609 fontSize 16
6610 fontName "Monospace"
6611 autoSizePolicy "node_width"
6612 anchor "t"
6613 borderDistance 0.0
6614 ]
6615 LabelGraphics
6616 [
6617 text "
6618 "
6619 fontSize 14
6620 fontName "Consolas"
6621 alignment "left"
6622 anchor "tl"
6623 borderDistance 6
6624 ]
6625 ]
6626
6627 node
6628 [
6629 id 2
6630 graphics
6631 [
6632 w 50.6
6633 h 26
6634 type "rectangle"
6635 fill "#FFFFFF"
6636 fill2 "#FFFFFF"
6637 outline "#000000"
6638 ]
6639 LabelGraphics
6640 [
6641 text "false"
6642 outline "#000000"
6643 fill "#FFFFFF"
6644 fontSize 16
6645 fontName "Monospace"
6646 autoSizePolicy "node_width"
6647 anchor "t"
6648 borderDistance 0.0
6649 ]
6650 LabelGraphics
6651 [
6652 text "
6653 "
6654 fontSize 14
6655 fontName "Consolas"
6656 alignment "left"
6657 anchor "tl"
6658 borderDistance 6
6659 ]
6660 ]
6661
6662 node
6663 [
6664 id 3
6665 graphics
6666 [
6667 w 24.200000000000003
6668 h 26
6669 type "rectangle"
6670 fill "#FFFFFF"
6671 fill2 "#FFFFFF"
6672 outline "#000000"
6673 ]
6674 LabelGraphics
6675 [
6676 text "-1"
6677 outline "#000000"
6678 fill "#FFFFFF"
6679 fontSize 16
6680 fontName "Monospace"
6681 autoSizePolicy "node_width"
6682 anchor "t"
6683 borderDistance 0.0
6684 ]
6685 LabelGraphics
6686 [
6687 text "
6688 "
6689 fontSize 14
6690 fontName "Consolas"
6691 alignment "left"
6692 anchor "tl"
6693 borderDistance 6
6694 ]
6695 ]
6696
6697 node
6698 [
6699 id 4
6700 graphics
6701 [
6702 w 15.400000000000002
6703 h 26
6704 type "rectangle"
6705 fill "#FFFFFF"
6706 fill2 "#FFFFFF"
6707 outline "#000000"
6708 ]
6709 LabelGraphics
6710 [
6711 text "0"
6712 outline "#000000"
6713 fill "#FFFFFF"
6714 fontSize 16
6715 fontName "Monospace"
6716 autoSizePolicy "node_width"
6717 anchor "t"
6718 borderDistance 0.0
6719 ]
6720 LabelGraphics
6721 [
6722 text "
6723 "
6724 fontSize 14
6725 fontName "Consolas"
6726 alignment "left"
6727 anchor "tl"
6728 borderDistance 6
6729 ]
6730 ]
6731
6732 node
6733 [
6734 id 5
6735 graphics
6736 [
6737 w 15.400000000000002
6738 h 26
6739 type "rectangle"
6740 fill "#FFFFFF"
6741 fill2 "#FFFFFF"
6742 outline "#000000"
6743 ]
6744 LabelGraphics
6745 [
6746 text "1"
6747 outline "#000000"
6748 fill "#FFFFFF"
6749 fontSize 16
6750 fontName "Monospace"
6751 autoSizePolicy "node_width"
6752 anchor "t"
6753 borderDistance 0.0
6754 ]
6755 LabelGraphics
6756 [
6757 text "
6758 "
6759 fontSize 14
6760 fontName "Consolas"
6761 alignment "left"
6762 anchor "tl"
6763 borderDistance 6
6764 ]
6765 ]
6766
6767 node
6768 [
6769 id 6
6770 graphics
6771 [
6772 w 33.0
6773 h 26
6774 type "rectangle"
6775 fill "#FFFFFF"
6776 fill2 "#FFFFFF"
6777 outline "#000000"
6778 ]
6779 LabelGraphics
6780 [
6781 text ""A""
6782 outline "#000000"
6783 fill "#FFFFFF"
6784 fontSize 16
6785 fontName "Monospace"
6786 autoSizePolicy "node_width"
6787 anchor "t"
6788 borderDistance 0.0
6789 ]
6790 LabelGraphics
6791 [
6792 text "
6793 "
6794 fontSize 14
6795 fontName "Consolas"
6796 alignment "left"
6797 anchor "tl"
6798 borderDistance 6
6799 ]
6800 ]
6801
6802 node
6803 [
6804 id 7
6805 graphics
6806 [
6807 w 33.0
6808 h 26
6809 type "rectangle"
6810 fill "#FFFFFF"
6811 fill2 "#FFFFFF"
6812 outline "#000000"
6813 ]
6814 LabelGraphics
6815 [
6816 text ""B""
6817 outline "#000000"
6818 fill "#FFFFFF"
6819 fontSize 16
6820 fontName "Monospace"
6821 autoSizePolicy "node_width"
6822 anchor "t"
6823 borderDistance 0.0
6824 ]
6825 LabelGraphics
6826 [
6827 text "
6828 "
6829 fontSize 14
6830 fontName "Consolas"
6831 alignment "left"
6832 anchor "tl"
6833 borderDistance 6
6834 ]
6835 ]
6836
6837 node
6838 [
6839 id 8
6840 graphics
6841 [
6842 w 94.60000000000001
6843 h 26
6844 type "rectangle"
6845 fill "#FFFFFF"
6846 fill2 "#FFFFFF"
6847 outline "#000000"
6848 ]
6849 LabelGraphics
6850 [
6851 text ""nsPrefix""
6852 outline "#000000"
6853 fill "#FFFFFF"
6854 fontSize 16
6855 fontName "Monospace"
6856 autoSizePolicy "node_width"
6857 anchor "t"
6858 borderDistance 0.0
6859 ]
6860 LabelGraphics
6861 [
6862 text "
6863 "
6864 fontSize 14
6865 fontName "Consolas"
6866 alignment "left"
6867 anchor "tl"
6868 borderDistance 6
6869 ]
6870 ]
6871
6872 node
6873 [
6874 id 9
6875 graphics
6876 [
6877 w 68.2
6878 h 26
6879 type "rectangle"
6880 fill "#FFFFFF"
6881 fill2 "#FFFFFF"
6882 outline "#000000"
6883 ]
6884 LabelGraphics
6885 [
6886 text ""nsUri""
6887 outline "#000000"
6888 fill "#FFFFFF"
6889 fontSize 16
6890 fontName "Monospace"
6891 autoSizePolicy "node_width"
6892 anchor "t"
6893 borderDistance 0.0
6894 ]
6895 LabelGraphics
6896 [
6897 text "
6898 "
6899 fontSize 14
6900 fontName "Consolas"
6901 alignment "left"
6902 anchor "tl"
6903 borderDistance 6
6904 ]
6905 ]
6906
6907 node
6908 [
6909 id 10
6910 graphics
6911 [
6912 w 121.00000000000001
6913 h 26
6914 type "rectangle"
6915 fill "#FFFFFF"
6916 fill2 "#FFFFFF"
6917 outline "#000000"
6918 ]
6919 LabelGraphics
6920 [
6921 text ""packageName""
6922 outline "#000000"
6923 fill "#FFFFFF"
6924 fontSize 16
6925 fontName "Monospace"
6926 autoSizePolicy "node_width"
6927 anchor "t"
6928 borderDistance 0.0
6929 ]
6930 LabelGraphics
6931 [
6932 text "
6933 "
6934 fontSize 14
6935 fontName "Consolas"
6936 alignment "left"
6937 anchor "tl"
6938 borderDistance 6
6939 ]
6940 ]
6941
6942 node
6943 [
6944 id 11
6945 graphics
6946 [
6947 w 269.5
6948 h 110
6949 type "rectangle"
6950 fill "#FFFFFF"
6951 fill2 "#FFFFFF"
6952 outline "#000000"
6953 ]
6954 LabelGraphics
6955 [
6956 text "null"
6957 outline "#000000"
6958 fill "#FFFFFF"
6959 fontSize 16
6960 fontName "Monospace"
6961 autoSizePolicy "node_width"
6962 anchor "t"
6963 borderDistance 0.0
6964 ]
6965 LabelGraphics
6966 [
6967 text "
6968 EClass class
6969 EClassifier class
6970 EModelElement class
6971 ENamedElement class
6972 EModelElement class UndefinedPart
6973 ENamedElement class UndefinedPart
6974 "
6975 fontSize 14
6976 fontName "Consolas"
6977 alignment "left"
6978 anchor "tl"
6979 borderDistance 6
6980 ]
6981 ]
6982
6983 node
6984 [
6985 id 12
6986 graphics
6987 [
6988 w 269.5
6989 h 110
6990 type "rectangle"
6991 fill "#FFFFFF"
6992 fill2 "#FFFFFF"
6993 outline "#000000"
6994 ]
6995 LabelGraphics
6996 [
6997 text "null"
6998 outline "#000000"
6999 fill "#FFFFFF"
7000 fontSize 16
7001 fontName "Monospace"
7002 autoSizePolicy "node_width"
7003 anchor "t"
7004 borderDistance 0.0
7005 ]
7006 LabelGraphics
7007 [
7008 text "
7009 EModelElement class
7010 ENamedElement class
7011 EPackage class
7012 EModelElement class UndefinedPart
7013 ENamedElement class UndefinedPart
7014 EPackage class UndefinedPart
7015 "
7016 fontSize 14
7017 fontName "Consolas"
7018 alignment "left"
7019 anchor "tl"
7020 borderDistance 6
7021 ]
7022 ]
7023
7024 node
7025 [
7026 id 13
7027 graphics
7028 [
7029 w 269.5
7030 h 110
7031 type "rectangle"
7032 fill "#FFFFFF"
7033 fill2 "#FFFFFF"
7034 outline "#000000"
7035 ]
7036 LabelGraphics
7037 [
7038 text "null"
7039 outline "#000000"
7040 fill "#FFFFFF"
7041 fontSize 16
7042 fontName "Monospace"
7043 autoSizePolicy "node_width"
7044 anchor "t"
7045 borderDistance 0.0
7046 ]
7047 LabelGraphics
7048 [
7049 text "
7050 EModelElement class
7051 ENamedElement class
7052 EOperation class
7053 ETypedElement class
7054 EModelElement class UndefinedPart
7055 ENamedElement class UndefinedPart
7056 "
7057 fontSize 14
7058 fontName "Consolas"
7059 alignment "left"
7060 anchor "tl"
7061 borderDistance 6
7062 ]
7063 ]
7064
7065 node
7066 [
7067 id 14
7068 graphics
7069 [
7070 w 269.5
7071 h 68
7072 type "rectangle"
7073 fill "#FFFFFF"
7074 fill2 "#FFFFFF"
7075 outline "#000000"
7076 ]
7077 LabelGraphics
7078 [
7079 text "null"
7080 outline "#000000"
7081 fill "#FFFFFF"
7082 fontSize 16
7083 fontName "Monospace"
7084 autoSizePolicy "node_width"
7085 anchor "t"
7086 borderDistance 0.0
7087 ]
7088 LabelGraphics
7089 [
7090 text "
7091 EAnnotation class
7092 EModelElement class
7093 EModelElement class UndefinedPart
7094 "
7095 fontSize 14
7096 fontName "Consolas"
7097 alignment "left"
7098 anchor "tl"
7099 borderDistance 6
7100 ]
7101 ]
7102
7103 node
7104 [
7105 id 15
7106 graphics
7107 [
7108 w 238.70000000000002
7109 h 40
7110 type "rectangle"
7111 fill "#FFFFFF"
7112 fill2 "#FFFFFF"
7113 outline "#000000"
7114 ]
7115 LabelGraphics
7116 [
7117 text "null"
7118 outline "#000000"
7119 fill "#FFFFFF"
7120 fontSize 16
7121 fontName "Monospace"
7122 autoSizePolicy "node_width"
7123 anchor "t"
7124 borderDistance 0.0
7125 ]
7126 LabelGraphics
7127 [
7128 text "
7129 EStringToStringMapEntry class
7130 "
7131 fontSize 14
7132 fontName "Consolas"
7133 alignment "left"
7134 anchor "tl"
7135 borderDistance 6
7136 ]
7137 ]
7138
7139 node
7140 [
7141 id 16
7142 graphics
7143 [
7144 w 112.2
7145 h 26
7146 type "rectangle"
7147 fill "#FFFFFF"
7148 fill2 "#FFFFFF"
7149 outline "#000000"
7150 ]
7151 LabelGraphics
7152 [
7153 text "New Integers"
7154 outline "#000000"
7155 fill "#FFFFFF"
7156 fontSize 16
7157 fontName "Monospace"
7158 autoSizePolicy "node_width"
7159 anchor "t"
7160 borderDistance 0.0
7161 ]
7162 LabelGraphics
7163 [
7164 text "
7165 "
7166 fontSize 14
7167 fontName "Consolas"
7168 alignment "left"
7169 anchor "tl"
7170 borderDistance 6
7171 ]
7172 ]
7173
7174 node
7175 [
7176 id 17
7177 graphics
7178 [
7179 w 85.80000000000001
7180 h 26
7181 type "rectangle"
7182 fill "#FFFFFF"
7183 fill2 "#FFFFFF"
7184 outline "#000000"
7185 ]
7186 LabelGraphics
7187 [
7188 text "New Reals"
7189 outline "#000000"
7190 fill "#FFFFFF"
7191 fontSize 16
7192 fontName "Monospace"
7193 autoSizePolicy "node_width"
7194 anchor "t"
7195 borderDistance 0.0
7196 ]
7197 LabelGraphics
7198 [
7199 text "
7200 "
7201 fontSize 14
7202 fontName "Consolas"
7203 alignment "left"
7204 anchor "tl"
7205 borderDistance 6
7206 ]
7207 ]
7208
7209 node
7210 [
7211 id 18
7212 graphics
7213 [
7214 w 103.4
7215 h 26
7216 type "rectangle"
7217 fill "#FFFFFF"
7218 fill2 "#FFFFFF"
7219 outline "#000000"
7220 ]
7221 LabelGraphics
7222 [
7223 text "New Strings"
7224 outline "#000000"
7225 fill "#FFFFFF"
7226 fontSize 16
7227 fontName "Monospace"
7228 autoSizePolicy "node_width"
7229 anchor "t"
7230 borderDistance 0.0
7231 ]
7232 LabelGraphics
7233 [
7234 text "
7235 "
7236 fontSize 14
7237 fontName "Consolas"
7238 alignment "left"
7239 anchor "tl"
7240 borderDistance 6
7241 ]
7242 ]
7243
7244 node
7245 [
7246 id 19
7247 graphics
7248 [
7249 w 103.4
7250 h 26
7251 type "rectangle"
7252 fill "#FFFFFF"
7253 fill2 "#FFFFFF"
7254 outline "#000000"
7255 ]
7256 LabelGraphics
7257 [
7258 text "New Objects"
7259 outline "#000000"
7260 fill "#FFFFFF"
7261 fontSize 16
7262 fontName "Monospace"
7263 autoSizePolicy "node_width"
7264 anchor "t"
7265 borderDistance 0.0
7266 ]
7267 LabelGraphics
7268 [
7269 text "
7270 "
7271 fontSize 14
7272 fontName "Consolas"
7273 alignment "left"
7274 anchor "tl"
7275 borderDistance 6
7276 ]
7277 ]
7278 edge
7279 [
7280 source 14
7281 target 15
7282 graphics
7283 [
7284 fill "#000000"
7285 width 3
7286 targetArrow "standard"
7287 ]
7288 LabelGraphics
7289 [
7290 text "details reference EAnnotation"
7291 fontSize 14
7292 fontName "Consolas"
7293 configuration "AutoFlippingLabel"
7294 model "six_pos"
7295 position "thead"
7296 ]
7297 ]
7298 edge
7299 [
7300 source 14
7301 target 0
7302 graphics
7303 [
7304 fill "#000000"
7305 targetArrow "standard"
7306 ]
7307 LabelGraphics
7308 [
7309 text "eModelElement reference EAnnotation"
7310 fontSize 14
7311 fontName "Consolas"
7312 configuration "AutoFlippingLabel"
7313 model "six_pos"
7314 position "thead"
7315 ]
7316 ]
7317 edge
7318 [
7319 source 11
7320 target 11
7321 graphics
7322 [
7323 fill "#000000"
7324 targetArrow "standard"
7325 ]
7326 LabelGraphics
7327 [
7328 text "eSuperTypes reference EClass"
7329 fontSize 14
7330 fontName "Consolas"
7331 configuration "AutoFlippingLabel"
7332 model "six_pos"
7333 position "thead"
7334 ]
7335 ]
7336 edge
7337 [
7338 source 11
7339 target 13
7340 graphics
7341 [
7342 fill "#000000"
7343 width 3
7344 targetArrow "standard"
7345 ]
7346 LabelGraphics
7347 [
7348 text "eOperations reference EClass"
7349 fontSize 14
7350 fontName "Consolas"
7351 configuration "AutoFlippingLabel"
7352 model "six_pos"
7353 position "thead"
7354 ]
7355 ]
7356 edge
7357 [
7358 source 11
7359 target 11
7360 graphics
7361 [
7362 fill "#000000"
7363 targetArrow "standard"
7364 ]
7365 LabelGraphics
7366 [
7367 text "eAllSuperTypes reference EClass"
7368 fontSize 14
7369 fontName "Consolas"
7370 configuration "AutoFlippingLabel"
7371 model "six_pos"
7372 position "thead"
7373 ]
7374 ]
7375 edge
7376 [
7377 source 11
7378 target 0
7379 graphics
7380 [
7381 fill "#000000"
7382 targetArrow "standard"
7383 ]
7384 LabelGraphics
7385 [
7386 text "ePackage reference EClassifier"
7387 fontSize 14
7388 fontName "Consolas"
7389 configuration "AutoFlippingLabel"
7390 model "six_pos"
7391 position "thead"
7392 ]
7393 ]
7394 edge
7395 [
7396 source 0
7397 target 14
7398 graphics
7399 [
7400 fill "#000000"
7401 width 3
7402 targetArrow "standard"
7403 ]
7404 LabelGraphics
7405 [
7406 text "eAnnotations reference EModelElement"
7407 fontSize 14
7408 fontName "Consolas"
7409 configuration "AutoFlippingLabel"
7410 model "six_pos"
7411 position "thead"
7412 ]
7413 ]
7414 edge
7415 [
7416 source 13
7417 target 11
7418 graphics
7419 [
7420 fill "#000000"
7421 targetArrow "standard"
7422 ]
7423 LabelGraphics
7424 [
7425 text "eContainingClass reference EOperation"
7426 fontSize 14
7427 fontName "Consolas"
7428 configuration "AutoFlippingLabel"
7429 model "six_pos"
7430 position "thead"
7431 ]
7432 ]
7433 edge
7434 [
7435 source 0
7436 target 11
7437 graphics
7438 [
7439 fill "#000000"
7440 width 3
7441 targetArrow "standard"
7442 ]
7443 LabelGraphics
7444 [
7445 text "eClassifiers reference EPackage"
7446 fontSize 14
7447 fontName "Consolas"
7448 configuration "AutoFlippingLabel"
7449 model "six_pos"
7450 position "thead"
7451 ]
7452 ]
7453 edge
7454 [
7455 source 0
7456 target 12
7457 graphics
7458 [
7459 fill "#000000"
7460 width 3
7461 targetArrow "standard"
7462 ]
7463 LabelGraphics
7464 [
7465 text "eSubpackages reference EPackage"
7466 fontSize 14
7467 fontName "Consolas"
7468 configuration "AutoFlippingLabel"
7469 model "six_pos"
7470 position "thead"
7471 ]
7472 ]
7473 edge
7474 [
7475 source 12
7476 target 0
7477 graphics
7478 [
7479 fill "#000000"
7480 targetArrow "standard"
7481 ]
7482 LabelGraphics
7483 [
7484 text "eSuperPackage reference EPackage"
7485 fontSize 14
7486 fontName "Consolas"
7487 configuration "AutoFlippingLabel"
7488 model "six_pos"
7489 position "thead"
7490 ]
7491 ]
7492 edge
7493 [
7494 source 11
7495 target 8
7496 graphics
7497 [
7498 fill "#000000"
7499 targetArrow "standard"
7500 ]
7501 LabelGraphics
7502 [
7503 text "instanceClassName attribute EClassifier"
7504 fontSize 14
7505 fontName "Consolas"
7506 configuration "AutoFlippingLabel"
7507 model "six_pos"
7508 position "thead"
7509 ]
7510 ]
7511 edge
7512 [
7513 source 11
7514 target 9
7515 graphics
7516 [
7517 fill "#000000"
7518 targetArrow "standard"
7519 ]
7520 LabelGraphics
7521 [
7522 text "instanceTypeName attribute EClassifier"
7523 fontSize 14
7524 fontName "Consolas"
7525 configuration "AutoFlippingLabel"
7526 model "six_pos"
7527 position "thead"
7528 ]
7529 ]
7530 edge
7531 [
7532 source 0
7533 target 10
7534 graphics
7535 [
7536 fill "#000000"
7537 targetArrow "standard"
7538 ]
7539 LabelGraphics
7540 [
7541 text "name attribute ENamedElement"
7542 fontSize 14
7543 fontName "Consolas"
7544 configuration "AutoFlippingLabel"
7545 model "six_pos"
7546 position "thead"
7547 ]
7548 ]
7549 edge
7550 [
7551 source 12
7552 target 7
7553 graphics
7554 [
7555 fill "#000000"
7556 targetArrow "standard"
7557 ]
7558 LabelGraphics
7559 [
7560 text "name attribute ENamedElement"
7561 fontSize 14
7562 fontName "Consolas"
7563 configuration "AutoFlippingLabel"
7564 model "six_pos"
7565 position "thead"
7566 ]
7567 ]
7568 edge
7569 [
7570 source 13
7571 target 9
7572 graphics
7573 [
7574 fill "#000000"
7575 targetArrow "standard"
7576 ]
7577 LabelGraphics
7578 [
7579 text "name attribute ENamedElement"
7580 fontSize 14
7581 fontName "Consolas"
7582 configuration "AutoFlippingLabel"
7583 model "six_pos"
7584 position "thead"
7585 ]
7586 ]
7587 edge
7588 [
7589 source 0
7590 target 9
7591 graphics
7592 [
7593 fill "#000000"
7594 targetArrow "standard"
7595 ]
7596 LabelGraphics
7597 [
7598 text "nsURI attribute EPackage"
7599 fontSize 14
7600 fontName "Consolas"
7601 configuration "AutoFlippingLabel"
7602 model "six_pos"
7603 position "thead"
7604 ]
7605 ]
7606 edge
7607 [
7608 source 12
7609 target 8
7610 graphics
7611 [
7612 fill "#000000"
7613 targetArrow "standard"
7614 ]
7615 LabelGraphics
7616 [
7617 text "nsURI attribute EPackage"
7618 fontSize 14
7619 fontName "Consolas"
7620 configuration "AutoFlippingLabel"
7621 model "six_pos"
7622 position "thead"
7623 ]
7624 ]
7625 edge
7626 [
7627 source 0
7628 target 8
7629 graphics
7630 [
7631 fill "#000000"
7632 targetArrow "standard"
7633 ]
7634 LabelGraphics
7635 [
7636 text "nsPrefix attribute EPackage"
7637 fontSize 14
7638 fontName "Consolas"
7639 configuration "AutoFlippingLabel"
7640 model "six_pos"
7641 position "thead"
7642 ]
7643 ]
7644 edge
7645 [
7646 source 13
7647 target 1
7648 graphics
7649 [
7650 fill "#000000"
7651 targetArrow "standard"
7652 ]
7653 LabelGraphics
7654 [
7655 text "unique attribute ETypedElement"
7656 fontSize 14
7657 fontName "Consolas"
7658 configuration "AutoFlippingLabel"
7659 model "six_pos"
7660 position "thead"
7661 ]
7662 ]
7663 edge
7664 [
7665 source 13
7666 target 4
7667 graphics
7668 [
7669 fill "#000000"
7670 targetArrow "standard"
7671 ]
7672 LabelGraphics
7673 [
7674 text "upperBound attribute ETypedElement"
7675 fontSize 14
7676 fontName "Consolas"
7677 configuration "AutoFlippingLabel"
7678 model "six_pos"
7679 position "thead"
7680 ]
7681 ]
7682]
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/3.png b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/3.png
index afaa28c2..bfe18c4e 100644
--- a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/3.png
+++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/3.png
Binary files differ
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/3.xmi b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/3.xmi
index ef8e8e65..45634c72 100644
--- a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/3.xmi
+++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/3.xmi
@@ -1,9 +1,10 @@
1<?xml version="1.0" encoding="ASCII"?> 1<?xml version="1.0" encoding="ASCII"?>
2<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="packageName" nsURI="nsUri" nsPrefix="nsPrefix"> 2<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="packageName" nsURI="nsUri" nsPrefix="nsPrefix">
3 <eClassifiers xsi:type="ecore:EEnum" name="packageName" instanceClassName="A"/> 3 <eAnnotations>
4 <eClassifiers xsi:type="ecore:EEnum"/> 4 <details/>
5 <eClassifiers xsi:type="ecore:EEnum" name="packageName" instanceClassName="nsPrefix"/> 5 </eAnnotations>
6 <eSubpackages name="A" nsURI="nsPrefix" nsPrefix="A"> 6 <eClassifiers xsi:type="ecore:EClass" instanceTypeName="nsUri" eSuperTypes="//%">
7 <eClassifiers xsi:type="ecore:EEnum"/> 7 <eOperations name="nsUri" upperBound="0"/>
8 </eSubpackages> 8 </eClassifiers>
9 <eSubpackages name="B" nsURI="nsPrefix"/>
9</ecore:EPackage> 10</ecore:EPackage>
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/4.gml b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/4.gml
index d61b14d0..a44b2785 100644
--- a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/4.gml
+++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/4.gml
@@ -1182,3 +1182,1139 @@ graph
1182 ] 1182 ]
1183 ] 1183 ]
1184] 1184]
1185graph
1186[
1187 node
1188 [
1189 id 0
1190 graphics
1191 [
1192 w 254.10000000000002
1193 h 110
1194 type "rectangle"
1195 fill "#FFFFFF"
1196 fill2 "#FFFFFF"
1197 outline "#000000"
1198 ]
1199 LabelGraphics
1200 [
1201 text "o 1"
1202 outline "#000000"
1203 fill "#FFFFFF"
1204 fontSize 16
1205 fontName "Monospace"
1206 autoSizePolicy "node_width"
1207 anchor "t"
1208 borderDistance 0.0
1209 ]
1210 LabelGraphics
1211 [
1212 text "
1213 EModelElement class DefinedPart
1214 ENamedElement class DefinedPart
1215 EPackage class DefinedPart
1216 EModelElement class
1217 ENamedElement class
1218 EPackage class
1219 "
1220 fontSize 14
1221 fontName "Consolas"
1222 alignment "left"
1223 anchor "tl"
1224 borderDistance 6
1225 ]
1226 ]
1227
1228 node
1229 [
1230 id 1
1231 graphics
1232 [
1233 w 41.800000000000004
1234 h 26
1235 type "rectangle"
1236 fill "#FFFFFF"
1237 fill2 "#FFFFFF"
1238 outline "#000000"
1239 ]
1240 LabelGraphics
1241 [
1242 text "true"
1243 outline "#000000"
1244 fill "#FFFFFF"
1245 fontSize 16
1246 fontName "Monospace"
1247 autoSizePolicy "node_width"
1248 anchor "t"
1249 borderDistance 0.0
1250 ]
1251 LabelGraphics
1252 [
1253 text "
1254 "
1255 fontSize 14
1256 fontName "Consolas"
1257 alignment "left"
1258 anchor "tl"
1259 borderDistance 6
1260 ]
1261 ]
1262
1263 node
1264 [
1265 id 2
1266 graphics
1267 [
1268 w 50.6
1269 h 26
1270 type "rectangle"
1271 fill "#FFFFFF"
1272 fill2 "#FFFFFF"
1273 outline "#000000"
1274 ]
1275 LabelGraphics
1276 [
1277 text "false"
1278 outline "#000000"
1279 fill "#FFFFFF"
1280 fontSize 16
1281 fontName "Monospace"
1282 autoSizePolicy "node_width"
1283 anchor "t"
1284 borderDistance 0.0
1285 ]
1286 LabelGraphics
1287 [
1288 text "
1289 "
1290 fontSize 14
1291 fontName "Consolas"
1292 alignment "left"
1293 anchor "tl"
1294 borderDistance 6
1295 ]
1296 ]
1297
1298 node
1299 [
1300 id 3
1301 graphics
1302 [
1303 w 24.200000000000003
1304 h 26
1305 type "rectangle"
1306 fill "#FFFFFF"
1307 fill2 "#FFFFFF"
1308 outline "#000000"
1309 ]
1310 LabelGraphics
1311 [
1312 text "-1"
1313 outline "#000000"
1314 fill "#FFFFFF"
1315 fontSize 16
1316 fontName "Monospace"
1317 autoSizePolicy "node_width"
1318 anchor "t"
1319 borderDistance 0.0
1320 ]
1321 LabelGraphics
1322 [
1323 text "
1324 "
1325 fontSize 14
1326 fontName "Consolas"
1327 alignment "left"
1328 anchor "tl"
1329 borderDistance 6
1330 ]
1331 ]
1332
1333 node
1334 [
1335 id 4
1336 graphics
1337 [
1338 w 15.400000000000002
1339 h 26
1340 type "rectangle"
1341 fill "#FFFFFF"
1342 fill2 "#FFFFFF"
1343 outline "#000000"
1344 ]
1345 LabelGraphics
1346 [
1347 text "0"
1348 outline "#000000"
1349 fill "#FFFFFF"
1350 fontSize 16
1351 fontName "Monospace"
1352 autoSizePolicy "node_width"
1353 anchor "t"
1354 borderDistance 0.0
1355 ]
1356 LabelGraphics
1357 [
1358 text "
1359 "
1360 fontSize 14
1361 fontName "Consolas"
1362 alignment "left"
1363 anchor "tl"
1364 borderDistance 6
1365 ]
1366 ]
1367
1368 node
1369 [
1370 id 5
1371 graphics
1372 [
1373 w 15.400000000000002
1374 h 26
1375 type "rectangle"
1376 fill "#FFFFFF"
1377 fill2 "#FFFFFF"
1378 outline "#000000"
1379 ]
1380 LabelGraphics
1381 [
1382 text "1"
1383 outline "#000000"
1384 fill "#FFFFFF"
1385 fontSize 16
1386 fontName "Monospace"
1387 autoSizePolicy "node_width"
1388 anchor "t"
1389 borderDistance 0.0
1390 ]
1391 LabelGraphics
1392 [
1393 text "
1394 "
1395 fontSize 14
1396 fontName "Consolas"
1397 alignment "left"
1398 anchor "tl"
1399 borderDistance 6
1400 ]
1401 ]
1402
1403 node
1404 [
1405 id 6
1406 graphics
1407 [
1408 w 33.0
1409 h 26
1410 type "rectangle"
1411 fill "#FFFFFF"
1412 fill2 "#FFFFFF"
1413 outline "#000000"
1414 ]
1415 LabelGraphics
1416 [
1417 text ""A""
1418 outline "#000000"
1419 fill "#FFFFFF"
1420 fontSize 16
1421 fontName "Monospace"
1422 autoSizePolicy "node_width"
1423 anchor "t"
1424 borderDistance 0.0
1425 ]
1426 LabelGraphics
1427 [
1428 text "
1429 "
1430 fontSize 14
1431 fontName "Consolas"
1432 alignment "left"
1433 anchor "tl"
1434 borderDistance 6
1435 ]
1436 ]
1437
1438 node
1439 [
1440 id 7
1441 graphics
1442 [
1443 w 33.0
1444 h 26
1445 type "rectangle"
1446 fill "#FFFFFF"
1447 fill2 "#FFFFFF"
1448 outline "#000000"
1449 ]
1450 LabelGraphics
1451 [
1452 text ""B""
1453 outline "#000000"
1454 fill "#FFFFFF"
1455 fontSize 16
1456 fontName "Monospace"
1457 autoSizePolicy "node_width"
1458 anchor "t"
1459 borderDistance 0.0
1460 ]
1461 LabelGraphics
1462 [
1463 text "
1464 "
1465 fontSize 14
1466 fontName "Consolas"
1467 alignment "left"
1468 anchor "tl"
1469 borderDistance 6
1470 ]
1471 ]
1472
1473 node
1474 [
1475 id 8
1476 graphics
1477 [
1478 w 94.60000000000001
1479 h 26
1480 type "rectangle"
1481 fill "#FFFFFF"
1482 fill2 "#FFFFFF"
1483 outline "#000000"
1484 ]
1485 LabelGraphics
1486 [
1487 text ""nsPrefix""
1488 outline "#000000"
1489 fill "#FFFFFF"
1490 fontSize 16
1491 fontName "Monospace"
1492 autoSizePolicy "node_width"
1493 anchor "t"
1494 borderDistance 0.0
1495 ]
1496 LabelGraphics
1497 [
1498 text "
1499 "
1500 fontSize 14
1501 fontName "Consolas"
1502 alignment "left"
1503 anchor "tl"
1504 borderDistance 6
1505 ]
1506 ]
1507
1508 node
1509 [
1510 id 9
1511 graphics
1512 [
1513 w 68.2
1514 h 26
1515 type "rectangle"
1516 fill "#FFFFFF"
1517 fill2 "#FFFFFF"
1518 outline "#000000"
1519 ]
1520 LabelGraphics
1521 [
1522 text ""nsUri""
1523 outline "#000000"
1524 fill "#FFFFFF"
1525 fontSize 16
1526 fontName "Monospace"
1527 autoSizePolicy "node_width"
1528 anchor "t"
1529 borderDistance 0.0
1530 ]
1531 LabelGraphics
1532 [
1533 text "
1534 "
1535 fontSize 14
1536 fontName "Consolas"
1537 alignment "left"
1538 anchor "tl"
1539 borderDistance 6
1540 ]
1541 ]
1542
1543 node
1544 [
1545 id 10
1546 graphics
1547 [
1548 w 121.00000000000001
1549 h 26
1550 type "rectangle"
1551 fill "#FFFFFF"
1552 fill2 "#FFFFFF"
1553 outline "#000000"
1554 ]
1555 LabelGraphics
1556 [
1557 text ""packageName""
1558 outline "#000000"
1559 fill "#FFFFFF"
1560 fontSize 16
1561 fontName "Monospace"
1562 autoSizePolicy "node_width"
1563 anchor "t"
1564 borderDistance 0.0
1565 ]
1566 LabelGraphics
1567 [
1568 text "
1569 "
1570 fontSize 14
1571 fontName "Consolas"
1572 alignment "left"
1573 anchor "tl"
1574 borderDistance 6
1575 ]
1576 ]
1577
1578 node
1579 [
1580 id 11
1581 graphics
1582 [
1583 w 269.5
1584 h 110
1585 type "rectangle"
1586 fill "#FFFFFF"
1587 fill2 "#FFFFFF"
1588 outline "#000000"
1589 ]
1590 LabelGraphics
1591 [
1592 text "null"
1593 outline "#000000"
1594 fill "#FFFFFF"
1595 fontSize 16
1596 fontName "Monospace"
1597 autoSizePolicy "node_width"
1598 anchor "t"
1599 borderDistance 0.0
1600 ]
1601 LabelGraphics
1602 [
1603 text "
1604 EClassifier class
1605 EDataType class
1606 EModelElement class
1607 ENamedElement class
1608 EModelElement class UndefinedPart
1609 ENamedElement class UndefinedPart
1610 "
1611 fontSize 14
1612 fontName "Consolas"
1613 alignment "left"
1614 anchor "tl"
1615 borderDistance 6
1616 ]
1617 ]
1618
1619 node
1620 [
1621 id 12
1622 graphics
1623 [
1624 w 269.5
1625 h 68
1626 type "rectangle"
1627 fill "#FFFFFF"
1628 fill2 "#FFFFFF"
1629 outline "#000000"
1630 ]
1631 LabelGraphics
1632 [
1633 text "null"
1634 outline "#000000"
1635 fill "#FFFFFF"
1636 fontSize 16
1637 fontName "Monospace"
1638 autoSizePolicy "node_width"
1639 anchor "t"
1640 borderDistance 0.0
1641 ]
1642 LabelGraphics
1643 [
1644 text "
1645 EAnnotation class
1646 EModelElement class
1647 EModelElement class UndefinedPart
1648 "
1649 fontSize 14
1650 fontName "Consolas"
1651 alignment "left"
1652 anchor "tl"
1653 borderDistance 6
1654 ]
1655 ]
1656
1657 node
1658 [
1659 id 13
1660 graphics
1661 [
1662 w 269.5
1663 h 110
1664 type "rectangle"
1665 fill "#FFFFFF"
1666 fill2 "#FFFFFF"
1667 outline "#000000"
1668 ]
1669 LabelGraphics
1670 [
1671 text "null"
1672 outline "#000000"
1673 fill "#FFFFFF"
1674 fontSize 16
1675 fontName "Monospace"
1676 autoSizePolicy "node_width"
1677 anchor "t"
1678 borderDistance 0.0
1679 ]
1680 LabelGraphics
1681 [
1682 text "
1683 EClass class
1684 EClassifier class
1685 EModelElement class
1686 ENamedElement class
1687 EModelElement class UndefinedPart
1688 ENamedElement class UndefinedPart
1689 "
1690 fontSize 14
1691 fontName "Consolas"
1692 alignment "left"
1693 anchor "tl"
1694 borderDistance 6
1695 ]
1696 ]
1697
1698 node
1699 [
1700 id 14
1701 graphics
1702 [
1703 w 269.5
1704 h 110
1705 type "rectangle"
1706 fill "#FFFFFF"
1707 fill2 "#FFFFFF"
1708 outline "#000000"
1709 ]
1710 LabelGraphics
1711 [
1712 text "null"
1713 outline "#000000"
1714 fill "#FFFFFF"
1715 fontSize 16
1716 fontName "Monospace"
1717 autoSizePolicy "node_width"
1718 anchor "t"
1719 borderDistance 0.0
1720 ]
1721 LabelGraphics
1722 [
1723 text "
1724 EClassifier class
1725 EDataType class
1726 EModelElement class
1727 ENamedElement class
1728 EModelElement class UndefinedPart
1729 ENamedElement class UndefinedPart
1730 "
1731 fontSize 14
1732 fontName "Consolas"
1733 alignment "left"
1734 anchor "tl"
1735 borderDistance 6
1736 ]
1737 ]
1738
1739 node
1740 [
1741 id 15
1742 graphics
1743 [
1744 w 269.5
1745 h 68
1746 type "rectangle"
1747 fill "#FFFFFF"
1748 fill2 "#FFFFFF"
1749 outline "#000000"
1750 ]
1751 LabelGraphics
1752 [
1753 text "null"
1754 outline "#000000"
1755 fill "#FFFFFF"
1756 fontSize 16
1757 fontName "Monospace"
1758 autoSizePolicy "node_width"
1759 anchor "t"
1760 borderDistance 0.0
1761 ]
1762 LabelGraphics
1763 [
1764 text "
1765 EAnnotation class
1766 EModelElement class
1767 EModelElement class UndefinedPart
1768 "
1769 fontSize 14
1770 fontName "Consolas"
1771 alignment "left"
1772 anchor "tl"
1773 borderDistance 6
1774 ]
1775 ]
1776
1777 node
1778 [
1779 id 16
1780 graphics
1781 [
1782 w 112.2
1783 h 26
1784 type "rectangle"
1785 fill "#FFFFFF"
1786 fill2 "#FFFFFF"
1787 outline "#000000"
1788 ]
1789 LabelGraphics
1790 [
1791 text "New Integers"
1792 outline "#000000"
1793 fill "#FFFFFF"
1794 fontSize 16
1795 fontName "Monospace"
1796 autoSizePolicy "node_width"
1797 anchor "t"
1798 borderDistance 0.0
1799 ]
1800 LabelGraphics
1801 [
1802 text "
1803 "
1804 fontSize 14
1805 fontName "Consolas"
1806 alignment "left"
1807 anchor "tl"
1808 borderDistance 6
1809 ]
1810 ]
1811
1812 node
1813 [
1814 id 17
1815 graphics
1816 [
1817 w 85.80000000000001
1818 h 26
1819 type "rectangle"
1820 fill "#FFFFFF"
1821 fill2 "#FFFFFF"
1822 outline "#000000"
1823 ]
1824 LabelGraphics
1825 [
1826 text "New Reals"
1827 outline "#000000"
1828 fill "#FFFFFF"
1829 fontSize 16
1830 fontName "Monospace"
1831 autoSizePolicy "node_width"
1832 anchor "t"
1833 borderDistance 0.0
1834 ]
1835 LabelGraphics
1836 [
1837 text "
1838 "
1839 fontSize 14
1840 fontName "Consolas"
1841 alignment "left"
1842 anchor "tl"
1843 borderDistance 6
1844 ]
1845 ]
1846
1847 node
1848 [
1849 id 18
1850 graphics
1851 [
1852 w 103.4
1853 h 26
1854 type "rectangle"
1855 fill "#FFFFFF"
1856 fill2 "#FFFFFF"
1857 outline "#000000"
1858 ]
1859 LabelGraphics
1860 [
1861 text "New Strings"
1862 outline "#000000"
1863 fill "#FFFFFF"
1864 fontSize 16
1865 fontName "Monospace"
1866 autoSizePolicy "node_width"
1867 anchor "t"
1868 borderDistance 0.0
1869 ]
1870 LabelGraphics
1871 [
1872 text "
1873 "
1874 fontSize 14
1875 fontName "Consolas"
1876 alignment "left"
1877 anchor "tl"
1878 borderDistance 6
1879 ]
1880 ]
1881
1882 node
1883 [
1884 id 19
1885 graphics
1886 [
1887 w 103.4
1888 h 26
1889 type "rectangle"
1890 fill "#FFFFFF"
1891 fill2 "#FFFFFF"
1892 outline "#000000"
1893 ]
1894 LabelGraphics
1895 [
1896 text "New Objects"
1897 outline "#000000"
1898 fill "#FFFFFF"
1899 fontSize 16
1900 fontName "Monospace"
1901 autoSizePolicy "node_width"
1902 anchor "t"
1903 borderDistance 0.0
1904 ]
1905 LabelGraphics
1906 [
1907 text "
1908 "
1909 fontSize 14
1910 fontName "Consolas"
1911 alignment "left"
1912 anchor "tl"
1913 borderDistance 6
1914 ]
1915 ]
1916 edge
1917 [
1918 source 12
1919 target 0
1920 graphics
1921 [
1922 fill "#000000"
1923 targetArrow "standard"
1924 ]
1925 LabelGraphics
1926 [
1927 text "eModelElement reference EAnnotation"
1928 fontSize 14
1929 fontName "Consolas"
1930 configuration "AutoFlippingLabel"
1931 model "six_pos"
1932 position "thead"
1933 ]
1934 ]
1935 edge
1936 [
1937 source 15
1938 target 0
1939 graphics
1940 [
1941 fill "#000000"
1942 targetArrow "standard"
1943 ]
1944 LabelGraphics
1945 [
1946 text "eModelElement reference EAnnotation"
1947 fontSize 14
1948 fontName "Consolas"
1949 configuration "AutoFlippingLabel"
1950 model "six_pos"
1951 position "thead"
1952 ]
1953 ]
1954 edge
1955 [
1956 source 11
1957 target 0
1958 graphics
1959 [
1960 fill "#000000"
1961 targetArrow "standard"
1962 ]
1963 LabelGraphics
1964 [
1965 text "ePackage reference EClassifier"
1966 fontSize 14
1967 fontName "Consolas"
1968 configuration "AutoFlippingLabel"
1969 model "six_pos"
1970 position "thead"
1971 ]
1972 ]
1973 edge
1974 [
1975 source 13
1976 target 0
1977 graphics
1978 [
1979 fill "#000000"
1980 targetArrow "standard"
1981 ]
1982 LabelGraphics
1983 [
1984 text "ePackage reference EClassifier"
1985 fontSize 14
1986 fontName "Consolas"
1987 configuration "AutoFlippingLabel"
1988 model "six_pos"
1989 position "thead"
1990 ]
1991 ]
1992 edge
1993 [
1994 source 14
1995 target 0
1996 graphics
1997 [
1998 fill "#000000"
1999 targetArrow "standard"
2000 ]
2001 LabelGraphics
2002 [
2003 text "ePackage reference EClassifier"
2004 fontSize 14
2005 fontName "Consolas"
2006 configuration "AutoFlippingLabel"
2007 model "six_pos"
2008 position "thead"
2009 ]
2010 ]
2011 edge
2012 [
2013 source 0
2014 target 12
2015 graphics
2016 [
2017 fill "#000000"
2018 width 3
2019 targetArrow "standard"
2020 ]
2021 LabelGraphics
2022 [
2023 text "eAnnotations reference EModelElement"
2024 fontSize 14
2025 fontName "Consolas"
2026 configuration "AutoFlippingLabel"
2027 model "six_pos"
2028 position "thead"
2029 ]
2030 ]
2031 edge
2032 [
2033 source 0
2034 target 15
2035 graphics
2036 [
2037 fill "#000000"
2038 width 3
2039 targetArrow "standard"
2040 ]
2041 LabelGraphics
2042 [
2043 text "eAnnotations reference EModelElement"
2044 fontSize 14
2045 fontName "Consolas"
2046 configuration "AutoFlippingLabel"
2047 model "six_pos"
2048 position "thead"
2049 ]
2050 ]
2051 edge
2052 [
2053 source 0
2054 target 11
2055 graphics
2056 [
2057 fill "#000000"
2058 width 3
2059 targetArrow "standard"
2060 ]
2061 LabelGraphics
2062 [
2063 text "eClassifiers reference EPackage"
2064 fontSize 14
2065 fontName "Consolas"
2066 configuration "AutoFlippingLabel"
2067 model "six_pos"
2068 position "thead"
2069 ]
2070 ]
2071 edge
2072 [
2073 source 0
2074 target 13
2075 graphics
2076 [
2077 fill "#000000"
2078 width 3
2079 targetArrow "standard"
2080 ]
2081 LabelGraphics
2082 [
2083 text "eClassifiers reference EPackage"
2084 fontSize 14
2085 fontName "Consolas"
2086 configuration "AutoFlippingLabel"
2087 model "six_pos"
2088 position "thead"
2089 ]
2090 ]
2091 edge
2092 [
2093 source 0
2094 target 14
2095 graphics
2096 [
2097 fill "#000000"
2098 width 3
2099 targetArrow "standard"
2100 ]
2101 LabelGraphics
2102 [
2103 text "eClassifiers reference EPackage"
2104 fontSize 14
2105 fontName "Consolas"
2106 configuration "AutoFlippingLabel"
2107 model "six_pos"
2108 position "thead"
2109 ]
2110 ]
2111 edge
2112 [
2113 source 12
2114 target 7
2115 graphics
2116 [
2117 fill "#000000"
2118 targetArrow "standard"
2119 ]
2120 LabelGraphics
2121 [
2122 text "source attribute EAnnotation"
2123 fontSize 14
2124 fontName "Consolas"
2125 configuration "AutoFlippingLabel"
2126 model "six_pos"
2127 position "thead"
2128 ]
2129 ]
2130 edge
2131 [
2132 source 11
2133 target 8
2134 graphics
2135 [
2136 fill "#000000"
2137 targetArrow "standard"
2138 ]
2139 LabelGraphics
2140 [
2141 text "instanceClassName attribute EClassifier"
2142 fontSize 14
2143 fontName "Consolas"
2144 configuration "AutoFlippingLabel"
2145 model "six_pos"
2146 position "thead"
2147 ]
2148 ]
2149 edge
2150 [
2151 source 14
2152 target 10
2153 graphics
2154 [
2155 fill "#000000"
2156 targetArrow "standard"
2157 ]
2158 LabelGraphics
2159 [
2160 text "instanceClassName attribute EClassifier"
2161 fontSize 14
2162 fontName "Consolas"
2163 configuration "AutoFlippingLabel"
2164 model "six_pos"
2165 position "thead"
2166 ]
2167 ]
2168 edge
2169 [
2170 source 11
2171 target 9
2172 graphics
2173 [
2174 fill "#000000"
2175 targetArrow "standard"
2176 ]
2177 LabelGraphics
2178 [
2179 text "instanceTypeName attribute EClassifier"
2180 fontSize 14
2181 fontName "Consolas"
2182 configuration "AutoFlippingLabel"
2183 model "six_pos"
2184 position "thead"
2185 ]
2186 ]
2187 edge
2188 [
2189 source 11
2190 target 2
2191 graphics
2192 [
2193 fill "#000000"
2194 targetArrow "standard"
2195 ]
2196 LabelGraphics
2197 [
2198 text "serializable attribute EDataType"
2199 fontSize 14
2200 fontName "Consolas"
2201 configuration "AutoFlippingLabel"
2202 model "six_pos"
2203 position "thead"
2204 ]
2205 ]
2206 edge
2207 [
2208 source 0
2209 target 10
2210 graphics
2211 [
2212 fill "#000000"
2213 targetArrow "standard"
2214 ]
2215 LabelGraphics
2216 [
2217 text "name attribute ENamedElement"
2218 fontSize 14
2219 fontName "Consolas"
2220 configuration "AutoFlippingLabel"
2221 model "six_pos"
2222 position "thead"
2223 ]
2224 ]
2225 edge
2226 [
2227 source 11
2228 target 8
2229 graphics
2230 [
2231 fill "#000000"
2232 targetArrow "standard"
2233 ]
2234 LabelGraphics
2235 [
2236 text "name attribute ENamedElement"
2237 fontSize 14
2238 fontName "Consolas"
2239 configuration "AutoFlippingLabel"
2240 model "six_pos"
2241 position "thead"
2242 ]
2243 ]
2244 edge
2245 [
2246 source 13
2247 target 9
2248 graphics
2249 [
2250 fill "#000000"
2251 targetArrow "standard"
2252 ]
2253 LabelGraphics
2254 [
2255 text "name attribute ENamedElement"
2256 fontSize 14
2257 fontName "Consolas"
2258 configuration "AutoFlippingLabel"
2259 model "six_pos"
2260 position "thead"
2261 ]
2262 ]
2263 edge
2264 [
2265 source 14
2266 target 8
2267 graphics
2268 [
2269 fill "#000000"
2270 targetArrow "standard"
2271 ]
2272 LabelGraphics
2273 [
2274 text "name attribute ENamedElement"
2275 fontSize 14
2276 fontName "Consolas"
2277 configuration "AutoFlippingLabel"
2278 model "six_pos"
2279 position "thead"
2280 ]
2281 ]
2282 edge
2283 [
2284 source 0
2285 target 9
2286 graphics
2287 [
2288 fill "#000000"
2289 targetArrow "standard"
2290 ]
2291 LabelGraphics
2292 [
2293 text "nsURI attribute EPackage"
2294 fontSize 14
2295 fontName "Consolas"
2296 configuration "AutoFlippingLabel"
2297 model "six_pos"
2298 position "thead"
2299 ]
2300 ]
2301 edge
2302 [
2303 source 0
2304 target 8
2305 graphics
2306 [
2307 fill "#000000"
2308 targetArrow "standard"
2309 ]
2310 LabelGraphics
2311 [
2312 text "nsPrefix attribute EPackage"
2313 fontSize 14
2314 fontName "Consolas"
2315 configuration "AutoFlippingLabel"
2316 model "six_pos"
2317 position "thead"
2318 ]
2319 ]
2320]
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/4.png b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/4.png
index 72ccb4b6..a47da297 100644
--- a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/4.png
+++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/4.png
Binary files differ
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/4.xmi b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/4.xmi
index 1a10e5b6..8bff1dc6 100644
--- a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/4.xmi
+++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/4.xmi
@@ -1,9 +1,8 @@
1<?xml version="1.0" encoding="ASCII"?> 1<?xml version="1.0" encoding="ASCII"?>
2<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="packageName" nsURI="nsUri" nsPrefix="nsPrefix"> 2<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="packageName" nsURI="nsUri" nsPrefix="nsPrefix">
3 <eClassifiers xsi:type="ecore:EEnum" name="packageName" instanceClassName="A"/> 3 <eAnnotations/>
4 <eClassifiers xsi:type="ecore:EEnum" name="packageName"/> 4 <eAnnotations source="B"/>
5 <eClassifiers xsi:type="ecore:EEnum" name="packageName" instanceClassName="nsPrefix"/> 5 <eClassifiers xsi:type="ecore:EDataType" name="nsPrefix" instanceTypeName="nsUri" serializable="false"/>
6 <eSubpackages name="A" nsURI="nsPrefix" nsPrefix="A"> 6 <eClassifiers xsi:type="ecore:EDataType" name="nsPrefix" instanceClassName="packageName"/>
7 <eClassifiers xsi:type="ecore:EEnum"/> 7 <eClassifiers xsi:type="ecore:EClass" name="nsUri"/>
8 </eSubpackages>
9</ecore:EPackage> 8</ecore:EPackage>
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/5.gml b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/5.gml
index f071f63e..e5647b66 100644
--- a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/5.gml
+++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/5.gml
@@ -1201,3 +1201,1158 @@ graph
1201 ] 1201 ]
1202 ] 1202 ]
1203] 1203]
1204graph
1205[
1206 node
1207 [
1208 id 0
1209 graphics
1210 [
1211 w 254.10000000000002
1212 h 110
1213 type "rectangle"
1214 fill "#FFFFFF"
1215 fill2 "#FFFFFF"
1216 outline "#000000"
1217 ]
1218 LabelGraphics
1219 [
1220 text "o 1"
1221 outline "#000000"
1222 fill "#FFFFFF"
1223 fontSize 16
1224 fontName "Monospace"
1225 autoSizePolicy "node_width"
1226 anchor "t"
1227 borderDistance 0.0
1228 ]
1229 LabelGraphics
1230 [
1231 text "
1232 EModelElement class DefinedPart
1233 ENamedElement class DefinedPart
1234 EPackage class DefinedPart
1235 EModelElement class
1236 ENamedElement class
1237 EPackage class
1238 "
1239 fontSize 14
1240 fontName "Consolas"
1241 alignment "left"
1242 anchor "tl"
1243 borderDistance 6
1244 ]
1245 ]
1246
1247 node
1248 [
1249 id 1
1250 graphics
1251 [
1252 w 41.800000000000004
1253 h 26
1254 type "rectangle"
1255 fill "#FFFFFF"
1256 fill2 "#FFFFFF"
1257 outline "#000000"
1258 ]
1259 LabelGraphics
1260 [
1261 text "true"
1262 outline "#000000"
1263 fill "#FFFFFF"
1264 fontSize 16
1265 fontName "Monospace"
1266 autoSizePolicy "node_width"
1267 anchor "t"
1268 borderDistance 0.0
1269 ]
1270 LabelGraphics
1271 [
1272 text "
1273 "
1274 fontSize 14
1275 fontName "Consolas"
1276 alignment "left"
1277 anchor "tl"
1278 borderDistance 6
1279 ]
1280 ]
1281
1282 node
1283 [
1284 id 2
1285 graphics
1286 [
1287 w 50.6
1288 h 26
1289 type "rectangle"
1290 fill "#FFFFFF"
1291 fill2 "#FFFFFF"
1292 outline "#000000"
1293 ]
1294 LabelGraphics
1295 [
1296 text "false"
1297 outline "#000000"
1298 fill "#FFFFFF"
1299 fontSize 16
1300 fontName "Monospace"
1301 autoSizePolicy "node_width"
1302 anchor "t"
1303 borderDistance 0.0
1304 ]
1305 LabelGraphics
1306 [
1307 text "
1308 "
1309 fontSize 14
1310 fontName "Consolas"
1311 alignment "left"
1312 anchor "tl"
1313 borderDistance 6
1314 ]
1315 ]
1316
1317 node
1318 [
1319 id 3
1320 graphics
1321 [
1322 w 24.200000000000003
1323 h 26
1324 type "rectangle"
1325 fill "#FFFFFF"
1326 fill2 "#FFFFFF"
1327 outline "#000000"
1328 ]
1329 LabelGraphics
1330 [
1331 text "-1"
1332 outline "#000000"
1333 fill "#FFFFFF"
1334 fontSize 16
1335 fontName "Monospace"
1336 autoSizePolicy "node_width"
1337 anchor "t"
1338 borderDistance 0.0
1339 ]
1340 LabelGraphics
1341 [
1342 text "
1343 "
1344 fontSize 14
1345 fontName "Consolas"
1346 alignment "left"
1347 anchor "tl"
1348 borderDistance 6
1349 ]
1350 ]
1351
1352 node
1353 [
1354 id 4
1355 graphics
1356 [
1357 w 15.400000000000002
1358 h 26
1359 type "rectangle"
1360 fill "#FFFFFF"
1361 fill2 "#FFFFFF"
1362 outline "#000000"
1363 ]
1364 LabelGraphics
1365 [
1366 text "0"
1367 outline "#000000"
1368 fill "#FFFFFF"
1369 fontSize 16
1370 fontName "Monospace"
1371 autoSizePolicy "node_width"
1372 anchor "t"
1373 borderDistance 0.0
1374 ]
1375 LabelGraphics
1376 [
1377 text "
1378 "
1379 fontSize 14
1380 fontName "Consolas"
1381 alignment "left"
1382 anchor "tl"
1383 borderDistance 6
1384 ]
1385 ]
1386
1387 node
1388 [
1389 id 5
1390 graphics
1391 [
1392 w 15.400000000000002
1393 h 26
1394 type "rectangle"
1395 fill "#FFFFFF"
1396 fill2 "#FFFFFF"
1397 outline "#000000"
1398 ]
1399 LabelGraphics
1400 [
1401 text "1"
1402 outline "#000000"
1403 fill "#FFFFFF"
1404 fontSize 16
1405 fontName "Monospace"
1406 autoSizePolicy "node_width"
1407 anchor "t"
1408 borderDistance 0.0
1409 ]
1410 LabelGraphics
1411 [
1412 text "
1413 "
1414 fontSize 14
1415 fontName "Consolas"
1416 alignment "left"
1417 anchor "tl"
1418 borderDistance 6
1419 ]
1420 ]
1421
1422 node
1423 [
1424 id 6
1425 graphics
1426 [
1427 w 33.0
1428 h 26
1429 type "rectangle"
1430 fill "#FFFFFF"
1431 fill2 "#FFFFFF"
1432 outline "#000000"
1433 ]
1434 LabelGraphics
1435 [
1436 text ""A""
1437 outline "#000000"
1438 fill "#FFFFFF"
1439 fontSize 16
1440 fontName "Monospace"
1441 autoSizePolicy "node_width"
1442 anchor "t"
1443 borderDistance 0.0
1444 ]
1445 LabelGraphics
1446 [
1447 text "
1448 "
1449 fontSize 14
1450 fontName "Consolas"
1451 alignment "left"
1452 anchor "tl"
1453 borderDistance 6
1454 ]
1455 ]
1456
1457 node
1458 [
1459 id 7
1460 graphics
1461 [
1462 w 33.0
1463 h 26
1464 type "rectangle"
1465 fill "#FFFFFF"
1466 fill2 "#FFFFFF"
1467 outline "#000000"
1468 ]
1469 LabelGraphics
1470 [
1471 text ""B""
1472 outline "#000000"
1473 fill "#FFFFFF"
1474 fontSize 16
1475 fontName "Monospace"
1476 autoSizePolicy "node_width"
1477 anchor "t"
1478 borderDistance 0.0
1479 ]
1480 LabelGraphics
1481 [
1482 text "
1483 "
1484 fontSize 14
1485 fontName "Consolas"
1486 alignment "left"
1487 anchor "tl"
1488 borderDistance 6
1489 ]
1490 ]
1491
1492 node
1493 [
1494 id 8
1495 graphics
1496 [
1497 w 94.60000000000001
1498 h 26
1499 type "rectangle"
1500 fill "#FFFFFF"
1501 fill2 "#FFFFFF"
1502 outline "#000000"
1503 ]
1504 LabelGraphics
1505 [
1506 text ""nsPrefix""
1507 outline "#000000"
1508 fill "#FFFFFF"
1509 fontSize 16
1510 fontName "Monospace"
1511 autoSizePolicy "node_width"
1512 anchor "t"
1513 borderDistance 0.0
1514 ]
1515 LabelGraphics
1516 [
1517 text "
1518 "
1519 fontSize 14
1520 fontName "Consolas"
1521 alignment "left"
1522 anchor "tl"
1523 borderDistance 6
1524 ]
1525 ]
1526
1527 node
1528 [
1529 id 9
1530 graphics
1531 [
1532 w 68.2
1533 h 26
1534 type "rectangle"
1535 fill "#FFFFFF"
1536 fill2 "#FFFFFF"
1537 outline "#000000"
1538 ]
1539 LabelGraphics
1540 [
1541 text ""nsUri""
1542 outline "#000000"
1543 fill "#FFFFFF"
1544 fontSize 16
1545 fontName "Monospace"
1546 autoSizePolicy "node_width"
1547 anchor "t"
1548 borderDistance 0.0
1549 ]
1550 LabelGraphics
1551 [
1552 text "
1553 "
1554 fontSize 14
1555 fontName "Consolas"
1556 alignment "left"
1557 anchor "tl"
1558 borderDistance 6
1559 ]
1560 ]
1561
1562 node
1563 [
1564 id 10
1565 graphics
1566 [
1567 w 121.00000000000001
1568 h 26
1569 type "rectangle"
1570 fill "#FFFFFF"
1571 fill2 "#FFFFFF"
1572 outline "#000000"
1573 ]
1574 LabelGraphics
1575 [
1576 text ""packageName""
1577 outline "#000000"
1578 fill "#FFFFFF"
1579 fontSize 16
1580 fontName "Monospace"
1581 autoSizePolicy "node_width"
1582 anchor "t"
1583 borderDistance 0.0
1584 ]
1585 LabelGraphics
1586 [
1587 text "
1588 "
1589 fontSize 14
1590 fontName "Consolas"
1591 alignment "left"
1592 anchor "tl"
1593 borderDistance 6
1594 ]
1595 ]
1596
1597 node
1598 [
1599 id 11
1600 graphics
1601 [
1602 w 269.5
1603 h 110
1604 type "rectangle"
1605 fill "#FFFFFF"
1606 fill2 "#FFFFFF"
1607 outline "#000000"
1608 ]
1609 LabelGraphics
1610 [
1611 text "null"
1612 outline "#000000"
1613 fill "#FFFFFF"
1614 fontSize 16
1615 fontName "Monospace"
1616 autoSizePolicy "node_width"
1617 anchor "t"
1618 borderDistance 0.0
1619 ]
1620 LabelGraphics
1621 [
1622 text "
1623 EClassifier class
1624 EDataType class
1625 EModelElement class
1626 ENamedElement class
1627 EModelElement class UndefinedPart
1628 ENamedElement class UndefinedPart
1629 "
1630 fontSize 14
1631 fontName "Consolas"
1632 alignment "left"
1633 anchor "tl"
1634 borderDistance 6
1635 ]
1636 ]
1637
1638 node
1639 [
1640 id 12
1641 graphics
1642 [
1643 w 269.5
1644 h 68
1645 type "rectangle"
1646 fill "#FFFFFF"
1647 fill2 "#FFFFFF"
1648 outline "#000000"
1649 ]
1650 LabelGraphics
1651 [
1652 text "null"
1653 outline "#000000"
1654 fill "#FFFFFF"
1655 fontSize 16
1656 fontName "Monospace"
1657 autoSizePolicy "node_width"
1658 anchor "t"
1659 borderDistance 0.0
1660 ]
1661 LabelGraphics
1662 [
1663 text "
1664 EAnnotation class
1665 EModelElement class
1666 EModelElement class UndefinedPart
1667 "
1668 fontSize 14
1669 fontName "Consolas"
1670 alignment "left"
1671 anchor "tl"
1672 borderDistance 6
1673 ]
1674 ]
1675
1676 node
1677 [
1678 id 13
1679 graphics
1680 [
1681 w 269.5
1682 h 110
1683 type "rectangle"
1684 fill "#FFFFFF"
1685 fill2 "#FFFFFF"
1686 outline "#000000"
1687 ]
1688 LabelGraphics
1689 [
1690 text "null"
1691 outline "#000000"
1692 fill "#FFFFFF"
1693 fontSize 16
1694 fontName "Monospace"
1695 autoSizePolicy "node_width"
1696 anchor "t"
1697 borderDistance 0.0
1698 ]
1699 LabelGraphics
1700 [
1701 text "
1702 EClass class
1703 EClassifier class
1704 EModelElement class
1705 ENamedElement class
1706 EModelElement class UndefinedPart
1707 ENamedElement class UndefinedPart
1708 "
1709 fontSize 14
1710 fontName "Consolas"
1711 alignment "left"
1712 anchor "tl"
1713 borderDistance 6
1714 ]
1715 ]
1716
1717 node
1718 [
1719 id 14
1720 graphics
1721 [
1722 w 269.5
1723 h 110
1724 type "rectangle"
1725 fill "#FFFFFF"
1726 fill2 "#FFFFFF"
1727 outline "#000000"
1728 ]
1729 LabelGraphics
1730 [
1731 text "null"
1732 outline "#000000"
1733 fill "#FFFFFF"
1734 fontSize 16
1735 fontName "Monospace"
1736 autoSizePolicy "node_width"
1737 anchor "t"
1738 borderDistance 0.0
1739 ]
1740 LabelGraphics
1741 [
1742 text "
1743 EClassifier class
1744 EDataType class
1745 EModelElement class
1746 ENamedElement class
1747 EModelElement class UndefinedPart
1748 ENamedElement class UndefinedPart
1749 "
1750 fontSize 14
1751 fontName "Consolas"
1752 alignment "left"
1753 anchor "tl"
1754 borderDistance 6
1755 ]
1756 ]
1757
1758 node
1759 [
1760 id 15
1761 graphics
1762 [
1763 w 269.5
1764 h 68
1765 type "rectangle"
1766 fill "#FFFFFF"
1767 fill2 "#FFFFFF"
1768 outline "#000000"
1769 ]
1770 LabelGraphics
1771 [
1772 text "null"
1773 outline "#000000"
1774 fill "#FFFFFF"
1775 fontSize 16
1776 fontName "Monospace"
1777 autoSizePolicy "node_width"
1778 anchor "t"
1779 borderDistance 0.0
1780 ]
1781 LabelGraphics
1782 [
1783 text "
1784 EAnnotation class
1785 EModelElement class
1786 EModelElement class UndefinedPart
1787 "
1788 fontSize 14
1789 fontName "Consolas"
1790 alignment "left"
1791 anchor "tl"
1792 borderDistance 6
1793 ]
1794 ]
1795
1796 node
1797 [
1798 id 16
1799 graphics
1800 [
1801 w 112.2
1802 h 26
1803 type "rectangle"
1804 fill "#FFFFFF"
1805 fill2 "#FFFFFF"
1806 outline "#000000"
1807 ]
1808 LabelGraphics
1809 [
1810 text "New Integers"
1811 outline "#000000"
1812 fill "#FFFFFF"
1813 fontSize 16
1814 fontName "Monospace"
1815 autoSizePolicy "node_width"
1816 anchor "t"
1817 borderDistance 0.0
1818 ]
1819 LabelGraphics
1820 [
1821 text "
1822 "
1823 fontSize 14
1824 fontName "Consolas"
1825 alignment "left"
1826 anchor "tl"
1827 borderDistance 6
1828 ]
1829 ]
1830
1831 node
1832 [
1833 id 17
1834 graphics
1835 [
1836 w 85.80000000000001
1837 h 26
1838 type "rectangle"
1839 fill "#FFFFFF"
1840 fill2 "#FFFFFF"
1841 outline "#000000"
1842 ]
1843 LabelGraphics
1844 [
1845 text "New Reals"
1846 outline "#000000"
1847 fill "#FFFFFF"
1848 fontSize 16
1849 fontName "Monospace"
1850 autoSizePolicy "node_width"
1851 anchor "t"
1852 borderDistance 0.0
1853 ]
1854 LabelGraphics
1855 [
1856 text "
1857 "
1858 fontSize 14
1859 fontName "Consolas"
1860 alignment "left"
1861 anchor "tl"
1862 borderDistance 6
1863 ]
1864 ]
1865
1866 node
1867 [
1868 id 18
1869 graphics
1870 [
1871 w 103.4
1872 h 26
1873 type "rectangle"
1874 fill "#FFFFFF"
1875 fill2 "#FFFFFF"
1876 outline "#000000"
1877 ]
1878 LabelGraphics
1879 [
1880 text "New Strings"
1881 outline "#000000"
1882 fill "#FFFFFF"
1883 fontSize 16
1884 fontName "Monospace"
1885 autoSizePolicy "node_width"
1886 anchor "t"
1887 borderDistance 0.0
1888 ]
1889 LabelGraphics
1890 [
1891 text "
1892 "
1893 fontSize 14
1894 fontName "Consolas"
1895 alignment "left"
1896 anchor "tl"
1897 borderDistance 6
1898 ]
1899 ]
1900
1901 node
1902 [
1903 id 19
1904 graphics
1905 [
1906 w 103.4
1907 h 26
1908 type "rectangle"
1909 fill "#FFFFFF"
1910 fill2 "#FFFFFF"
1911 outline "#000000"
1912 ]
1913 LabelGraphics
1914 [
1915 text "New Objects"
1916 outline "#000000"
1917 fill "#FFFFFF"
1918 fontSize 16
1919 fontName "Monospace"
1920 autoSizePolicy "node_width"
1921 anchor "t"
1922 borderDistance 0.0
1923 ]
1924 LabelGraphics
1925 [
1926 text "
1927 "
1928 fontSize 14
1929 fontName "Consolas"
1930 alignment "left"
1931 anchor "tl"
1932 borderDistance 6
1933 ]
1934 ]
1935 edge
1936 [
1937 source 12
1938 target 0
1939 graphics
1940 [
1941 fill "#000000"
1942 targetArrow "standard"
1943 ]
1944 LabelGraphics
1945 [
1946 text "eModelElement reference EAnnotation"
1947 fontSize 14
1948 fontName "Consolas"
1949 configuration "AutoFlippingLabel"
1950 model "six_pos"
1951 position "thead"
1952 ]
1953 ]
1954 edge
1955 [
1956 source 15
1957 target 0
1958 graphics
1959 [
1960 fill "#000000"
1961 targetArrow "standard"
1962 ]
1963 LabelGraphics
1964 [
1965 text "eModelElement reference EAnnotation"
1966 fontSize 14
1967 fontName "Consolas"
1968 configuration "AutoFlippingLabel"
1969 model "six_pos"
1970 position "thead"
1971 ]
1972 ]
1973 edge
1974 [
1975 source 11
1976 target 0
1977 graphics
1978 [
1979 fill "#000000"
1980 targetArrow "standard"
1981 ]
1982 LabelGraphics
1983 [
1984 text "ePackage reference EClassifier"
1985 fontSize 14
1986 fontName "Consolas"
1987 configuration "AutoFlippingLabel"
1988 model "six_pos"
1989 position "thead"
1990 ]
1991 ]
1992 edge
1993 [
1994 source 13
1995 target 0
1996 graphics
1997 [
1998 fill "#000000"
1999 targetArrow "standard"
2000 ]
2001 LabelGraphics
2002 [
2003 text "ePackage reference EClassifier"
2004 fontSize 14
2005 fontName "Consolas"
2006 configuration "AutoFlippingLabel"
2007 model "six_pos"
2008 position "thead"
2009 ]
2010 ]
2011 edge
2012 [
2013 source 14
2014 target 0
2015 graphics
2016 [
2017 fill "#000000"
2018 targetArrow "standard"
2019 ]
2020 LabelGraphics
2021 [
2022 text "ePackage reference EClassifier"
2023 fontSize 14
2024 fontName "Consolas"
2025 configuration "AutoFlippingLabel"
2026 model "six_pos"
2027 position "thead"
2028 ]
2029 ]
2030 edge
2031 [
2032 source 0
2033 target 12
2034 graphics
2035 [
2036 fill "#000000"
2037 width 3
2038 targetArrow "standard"
2039 ]
2040 LabelGraphics
2041 [
2042 text "eAnnotations reference EModelElement"
2043 fontSize 14
2044 fontName "Consolas"
2045 configuration "AutoFlippingLabel"
2046 model "six_pos"
2047 position "thead"
2048 ]
2049 ]
2050 edge
2051 [
2052 source 0
2053 target 15
2054 graphics
2055 [
2056 fill "#000000"
2057 width 3
2058 targetArrow "standard"
2059 ]
2060 LabelGraphics
2061 [
2062 text "eAnnotations reference EModelElement"
2063 fontSize 14
2064 fontName "Consolas"
2065 configuration "AutoFlippingLabel"
2066 model "six_pos"
2067 position "thead"
2068 ]
2069 ]
2070 edge
2071 [
2072 source 0
2073 target 11
2074 graphics
2075 [
2076 fill "#000000"
2077 width 3
2078 targetArrow "standard"
2079 ]
2080 LabelGraphics
2081 [
2082 text "eClassifiers reference EPackage"
2083 fontSize 14
2084 fontName "Consolas"
2085 configuration "AutoFlippingLabel"
2086 model "six_pos"
2087 position "thead"
2088 ]
2089 ]
2090 edge
2091 [
2092 source 0
2093 target 13
2094 graphics
2095 [
2096 fill "#000000"
2097 width 3
2098 targetArrow "standard"
2099 ]
2100 LabelGraphics
2101 [
2102 text "eClassifiers reference EPackage"
2103 fontSize 14
2104 fontName "Consolas"
2105 configuration "AutoFlippingLabel"
2106 model "six_pos"
2107 position "thead"
2108 ]
2109 ]
2110 edge
2111 [
2112 source 0
2113 target 14
2114 graphics
2115 [
2116 fill "#000000"
2117 width 3
2118 targetArrow "standard"
2119 ]
2120 LabelGraphics
2121 [
2122 text "eClassifiers reference EPackage"
2123 fontSize 14
2124 fontName "Consolas"
2125 configuration "AutoFlippingLabel"
2126 model "six_pos"
2127 position "thead"
2128 ]
2129 ]
2130 edge
2131 [
2132 source 12
2133 target 7
2134 graphics
2135 [
2136 fill "#000000"
2137 targetArrow "standard"
2138 ]
2139 LabelGraphics
2140 [
2141 text "source attribute EAnnotation"
2142 fontSize 14
2143 fontName "Consolas"
2144 configuration "AutoFlippingLabel"
2145 model "six_pos"
2146 position "thead"
2147 ]
2148 ]
2149 edge
2150 [
2151 source 13
2152 target 2
2153 graphics
2154 [
2155 fill "#000000"
2156 targetArrow "standard"
2157 ]
2158 LabelGraphics
2159 [
2160 text "abstract attribute EClass"
2161 fontSize 14
2162 fontName "Consolas"
2163 configuration "AutoFlippingLabel"
2164 model "six_pos"
2165 position "thead"
2166 ]
2167 ]
2168 edge
2169 [
2170 source 11
2171 target 8
2172 graphics
2173 [
2174 fill "#000000"
2175 targetArrow "standard"
2176 ]
2177 LabelGraphics
2178 [
2179 text "instanceClassName attribute EClassifier"
2180 fontSize 14
2181 fontName "Consolas"
2182 configuration "AutoFlippingLabel"
2183 model "six_pos"
2184 position "thead"
2185 ]
2186 ]
2187 edge
2188 [
2189 source 14
2190 target 10
2191 graphics
2192 [
2193 fill "#000000"
2194 targetArrow "standard"
2195 ]
2196 LabelGraphics
2197 [
2198 text "instanceClassName attribute EClassifier"
2199 fontSize 14
2200 fontName "Consolas"
2201 configuration "AutoFlippingLabel"
2202 model "six_pos"
2203 position "thead"
2204 ]
2205 ]
2206 edge
2207 [
2208 source 11
2209 target 9
2210 graphics
2211 [
2212 fill "#000000"
2213 targetArrow "standard"
2214 ]
2215 LabelGraphics
2216 [
2217 text "instanceTypeName attribute EClassifier"
2218 fontSize 14
2219 fontName "Consolas"
2220 configuration "AutoFlippingLabel"
2221 model "six_pos"
2222 position "thead"
2223 ]
2224 ]
2225 edge
2226 [
2227 source 11
2228 target 2
2229 graphics
2230 [
2231 fill "#000000"
2232 targetArrow "standard"
2233 ]
2234 LabelGraphics
2235 [
2236 text "serializable attribute EDataType"
2237 fontSize 14
2238 fontName "Consolas"
2239 configuration "AutoFlippingLabel"
2240 model "six_pos"
2241 position "thead"
2242 ]
2243 ]
2244 edge
2245 [
2246 source 0
2247 target 10
2248 graphics
2249 [
2250 fill "#000000"
2251 targetArrow "standard"
2252 ]
2253 LabelGraphics
2254 [
2255 text "name attribute ENamedElement"
2256 fontSize 14
2257 fontName "Consolas"
2258 configuration "AutoFlippingLabel"
2259 model "six_pos"
2260 position "thead"
2261 ]
2262 ]
2263 edge
2264 [
2265 source 11
2266 target 8
2267 graphics
2268 [
2269 fill "#000000"
2270 targetArrow "standard"
2271 ]
2272 LabelGraphics
2273 [
2274 text "name attribute ENamedElement"
2275 fontSize 14
2276 fontName "Consolas"
2277 configuration "AutoFlippingLabel"
2278 model "six_pos"
2279 position "thead"
2280 ]
2281 ]
2282 edge
2283 [
2284 source 13
2285 target 9
2286 graphics
2287 [
2288 fill "#000000"
2289 targetArrow "standard"
2290 ]
2291 LabelGraphics
2292 [
2293 text "name attribute ENamedElement"
2294 fontSize 14
2295 fontName "Consolas"
2296 configuration "AutoFlippingLabel"
2297 model "six_pos"
2298 position "thead"
2299 ]
2300 ]
2301 edge
2302 [
2303 source 14
2304 target 8
2305 graphics
2306 [
2307 fill "#000000"
2308 targetArrow "standard"
2309 ]
2310 LabelGraphics
2311 [
2312 text "name attribute ENamedElement"
2313 fontSize 14
2314 fontName "Consolas"
2315 configuration "AutoFlippingLabel"
2316 model "six_pos"
2317 position "thead"
2318 ]
2319 ]
2320 edge
2321 [
2322 source 0
2323 target 9
2324 graphics
2325 [
2326 fill "#000000"
2327 targetArrow "standard"
2328 ]
2329 LabelGraphics
2330 [
2331 text "nsURI attribute EPackage"
2332 fontSize 14
2333 fontName "Consolas"
2334 configuration "AutoFlippingLabel"
2335 model "six_pos"
2336 position "thead"
2337 ]
2338 ]
2339 edge
2340 [
2341 source 0
2342 target 8
2343 graphics
2344 [
2345 fill "#000000"
2346 targetArrow "standard"
2347 ]
2348 LabelGraphics
2349 [
2350 text "nsPrefix attribute EPackage"
2351 fontSize 14
2352 fontName "Consolas"
2353 configuration "AutoFlippingLabel"
2354 model "six_pos"
2355 position "thead"
2356 ]
2357 ]
2358]
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/5.png b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/5.png
index bb835587..7b6e8da5 100644
--- a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/5.png
+++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/5.png
Binary files differ
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/5.xmi b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/5.xmi
index 1a10e5b6..8bff1dc6 100644
--- a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/5.xmi
+++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/models/5.xmi
@@ -1,9 +1,8 @@
1<?xml version="1.0" encoding="ASCII"?> 1<?xml version="1.0" encoding="ASCII"?>
2<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="packageName" nsURI="nsUri" nsPrefix="nsPrefix"> 2<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="packageName" nsURI="nsUri" nsPrefix="nsPrefix">
3 <eClassifiers xsi:type="ecore:EEnum" name="packageName" instanceClassName="A"/> 3 <eAnnotations/>
4 <eClassifiers xsi:type="ecore:EEnum" name="packageName"/> 4 <eAnnotations source="B"/>
5 <eClassifiers xsi:type="ecore:EEnum" name="packageName" instanceClassName="nsPrefix"/> 5 <eClassifiers xsi:type="ecore:EDataType" name="nsPrefix" instanceTypeName="nsUri" serializable="false"/>
6 <eSubpackages name="A" nsURI="nsPrefix" nsPrefix="A"> 6 <eClassifiers xsi:type="ecore:EDataType" name="nsPrefix" instanceClassName="packageName"/>
7 <eClassifiers xsi:type="ecore:EEnum"/> 7 <eClassifiers xsi:type="ecore:EClass" name="nsUri"/>
8 </eSubpackages>
9</ecore:EPackage> 8</ecore:EPackage>
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/statistics.csv b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/statistics.csv
index 0c19baf2..6422beb9 100644
--- a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/statistics.csv
+++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/statistics.csv
@@ -30,3 +30,19 @@ Task;Run;Result;Domain to logic transformation time;Logic to solver transformati
301;1;ModelResultImpl;443;2849;2573;4906642931;151;171;75;124;7;0;8 301;1;ModelResultImpl;443;2849;2573;4906642931;151;171;75;124;7;0;8
31Task;Run;Result;Domain to logic transformation time;Logic to solver transformation time;Solver time;Postprocessing time;_Solution0FoundAt;_Solution1FoundAt;_Solution2FoundAt;_Solution3FoundAt;_Solution4FoundAt;TransformationExecutionTime;TypeAnalysisTime;StateCoderTime;StateCoderFailCount;SolutionCopyTime 31Task;Run;Result;Domain to logic transformation time;Logic to solver transformation time;Solver time;Postprocessing time;_Solution0FoundAt;_Solution1FoundAt;_Solution2FoundAt;_Solution3FoundAt;_Solution4FoundAt;TransformationExecutionTime;TypeAnalysisTime;StateCoderTime;StateCoderFailCount;SolutionCopyTime
322;1;ModelResultImpl;19;4315;9042;20459725100;239;247;252;257;261;217;19;6;0;11 322;1;ModelResultImpl;19;4315;9042;20459725100;239;247;252;257;261;217;19;6;0;11
33Task;Run;Result;Domain to logic transformation time;Logic to solver transformation time;Solver time;Postprocessing time;_Solution0FoundAt;_Solution1FoundAt;TransformationExecutionTime;TypeAnalysisTime;StateCoderTime;StateCoderFailCount;SolutionCopyTime
341;1;ModelResultImpl;513;2237;2193;6152392500;162;177;77;150;6;0;5
35Task;Run;Result;Domain to logic transformation time;Logic to solver transformation time;Solver time;Postprocessing time;_Solution0FoundAt;_Solution1FoundAt;TransformationExecutionTime;TypeAnalysisTime;StateCoderTime;StateCoderFailCount;SolutionCopyTime
361;1;ModelResultImpl;11;1602;1604;2992330200;66;77;38;16;1;0;3
37Task;Run;Result;Domain to logic transformation time;Logic to solver transformation time;Solver time;Postprocessing time;_Solution0FoundAt;_Solution1FoundAt;_Solution2FoundAt;_Solution3FoundAt;_Solution4FoundAt;TransformationExecutionTime;TypeAnalysisTime;StateCoderTime;StateCoderFailCount;SolutionCopyTime
382;1;ModelResultImpl;128;4855;10109;16068923000;382;391;398;403;409;349;37;8;0;16
39Task;Run;Result;Domain to logic transformation time;Logic to solver transformation time;Solver time;Postprocessing time;_Solution0FoundAt;_Solution1FoundAt;_Solution2FoundAt;TransformationExecutionTime;TypeAnalysisTime;StateCoderTime;StateCoderFailCount;SolutionCopyTime
402;1;ModelResultImpl;18;3632;9743;7955260600;299;307;313;261;17;7;0;8
41Task;Run;Result;Domain to logic transformation time;Logic to solver transformation time;Solver time;Postprocessing time;_Solution0FoundAt;_Solution1FoundAt;_Solution2FoundAt;TransformationExecutionTime;TypeAnalysisTime;StateCoderTime;StateCoderFailCount;SolutionCopyTime
422;1;ModelResultImpl;471;5606;10554;10190416000;482;497;509;400;189;16;0;21
43Task;Run;Result;Domain to logic transformation time;Logic to solver transformation time;Solver time;Postprocessing time;_Solution0FoundAt;_Solution1FoundAt;_Solution2FoundAt;TransformationExecutionTime;TypeAnalysisTime;StateCoderTime;StateCoderFailCount;SolutionCopyTime
442;1;ModelResultImpl;28;4850;10801;9664839300;622;635;651;560;23;18;0;20
45Task;Run;Result;Domain to logic transformation time;Logic to solver transformation time;Solver time;Postprocessing time;_Solution0FoundAt;_Solution1FoundAt;TransformationExecutionTime;TypeAnalysisTime;StateCoderTime;StateCoderFailCount;SolutionCopyTime
461;1;ModelResultImpl;6;1884;1462;3186743800;40;48;20;16;1;0;1
47Task;Run;Result;Domain to logic transformation time;Logic to solver transformation time;Solver time;Postprocessing time;_Solution0FoundAt;_Solution1FoundAt;_Solution2FoundAt;TransformationExecutionTime;TypeAnalysisTime;StateCoderTime;StateCoderFailCount;SolutionCopyTime
482;1;ModelResultImpl;9;4021;9222;7668037900;233;239;243;201;10;8;0;6